From 1a09c25c28547e2ef37b93a7257253e3dbce21b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Mon, 23 Dec 2024 23:15:23 +0100 Subject: [PATCH 01/35] fix: adding basic performance tests --- package.json | 5 +- performance.sh | 50 +++++++++++++ test.sh | 15 +++- tests/performance-browser.test.ts | 8 ++ tests/performance-node.test.ts | 8 ++ tests/shared.ts | 21 +++++- tests/test/performance.test.ts | 117 ++++++++++++++++++++++++++++++ tests/{ => test}/schemas.test.ts | 5 +- 8 files changed, 220 insertions(+), 9 deletions(-) create mode 100644 performance.sh create mode 100644 tests/performance-browser.test.ts create mode 100644 tests/performance-node.test.ts create mode 100644 tests/test/performance.test.ts rename tests/{ => test}/schemas.test.ts (99%) diff --git a/package.json b/package.json index c42851a..bd14264 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,10 @@ "docs": "typedoc --cleanOutputDir false", "runtest": "npm run build && npm run test:node", "build": "sh build.sh", - "test": "npm run test:node && npm run test:browser", + "test": "sh test.sh", + "performance": "sh performance.sh", + "performance:node": "sh performance.sh -e node", + "performance:browser": "sh performance.sh -e browser", "test:node": "sh test.sh -e node", "test:browser": "sh test.sh -e browser", "prepublishOnly": "npm run build" diff --git a/performance.sh b/performance.sh new file mode 100644 index 0000000..3b52ef4 --- /dev/null +++ b/performance.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -e # Exit on any error +# Initialize variables +ENVIRONMENT="" + +# Parse command-line options +while getopts e: option +do + case "${option}" in + e) ENVIRONMENT=${OPTARG};; + esac +done + +# Check required options +if [ -z "$ENVIRONMENT" ]; then + echo "Testing ESM Version on both Node and Browser environments" + + echo "Testing ESM Version on Node" + VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $NODE_ENV tests/performance-node.test.ts || { echo "Vitest tests failed"; exit 1; } + + # Check if chromedriver is installed + if ! which chromedriver > /dev/null; then + echo "Error: chromedriver is not installed. Please install chromedriver to continue." + exit 1 + fi + echo "Testing ESM Version in Browser" + VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $BROWSER_ENV tests/performance-browser.test.ts || { echo "Vitest tests failed"; exit 1; } + exit 0 +fi + +# Define test environment options +NODE_ENV="--environment node --run" +BROWSER_ENV="--environment jsdom --browser --browser.name=chrome --run" + +# Check which environment to test based on the options provided +if [ "$ENVIRONMENT" = "node" ]; then + echo "Testing ESM Version on Node" + VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $NODE_ENV tests/performance-node.test.ts || { echo "Vitest tests failed"; exit 1; } +elif [ "$ENVIRONMENT" = "browser" ]; then + # Check if chromedriver is installed + if ! which chromedriver > /dev/null; then + echo "Error: chromedriver is not installed. Please install chromedriver to continue." + exit 1 + fi + echo "Testing ESM Version in Browser" + VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $BROWSER_ENV tests/performance-browser.test.ts || { echo "Vitest tests failed"; exit 1; } +else + echo "Error: Unknown environment specified. Please use '-e node' or '-e browser'." + exit 1 +fi diff --git a/test.sh b/test.sh index e228cdd..079da0d 100644 --- a/test.sh +++ b/test.sh @@ -13,8 +13,19 @@ done # Check required options if [ -z "$ENVIRONMENT" ]; then - echo "Usage: $0 -e [node|browser]" - exit 1 + echo "Testing ESM Version on both Node and Browser environments" + + echo "Testing ESM Version on Node" + VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $NODE_ENV tests/node.test.ts || { echo "Vitest tests failed"; exit 1; } + + # Check if chromedriver is installed + if ! which chromedriver > /dev/null; then + echo "Error: chromedriver is not installed. Please install chromedriver to continue." + exit 1 + fi + echo "Testing ESM Version in Browser" + VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $BROWSER_ENV tests/browser.test.ts || { echo "Vitest tests failed"; exit 1; } + exit 0 fi # Define test environment options diff --git a/tests/performance-browser.test.ts b/tests/performance-browser.test.ts new file mode 100644 index 0000000..26c1121 --- /dev/null +++ b/tests/performance-browser.test.ts @@ -0,0 +1,8 @@ + +import Shared from './shared'; +import { StorageType } from '..'; + +Shared.runPerformanceTests([Shared.TestPlatform.BROWSER], [ + {name: "InMemory", storage: StorageType.InMemory}, + {name: "IndexDB", storage: StorageType.IndexDB} +]) diff --git a/tests/performance-node.test.ts b/tests/performance-node.test.ts new file mode 100644 index 0000000..6455f7e --- /dev/null +++ b/tests/performance-node.test.ts @@ -0,0 +1,8 @@ +import Shared from './shared'; + +import { StorageType } from '..'; + +Shared.runPerformanceTests( + [Shared.TestPlatform.NODE], + [{name: "InMemory", storage: StorageType.InMemory}] +) diff --git a/tests/shared.ts b/tests/shared.ts index 2da9677..3bc368f 100644 --- a/tests/shared.ts +++ b/tests/shared.ts @@ -1,11 +1,17 @@ import { StorageType } from '..'; -import { default as Schemas } from './schemas.test'; + +import { default as Schemas } from './test/schemas.test'; +import { default as Performance } from './test/performance.test'; const Tests = { Schemas } +const PerformanceTests = { + Performance +} const suites = Object.values(Tests); +const performanceSuites = Object.values(PerformanceTests); export enum TestPlatform { BROWSER = "BROWSER", @@ -17,7 +23,7 @@ export type StoragesType = { name: string } -export async function runTests(platforms:TestPlatform[], storages:StoragesType[] ): Promise { +export async function runTests(platforms:TestPlatform[], storages:StoragesType[] ): Promise { platforms.forEach(platform => { suites.forEach(suite => { suite(platform, storages) @@ -25,7 +31,16 @@ export async function runTests(platforms:TestPlatform[], storages:StoragesType[ }) } +export async function runPerformanceTests(platforms:TestPlatform[], storages:StoragesType[] ): Promise { + platforms.forEach(platform => { + performanceSuites.forEach(suite => { + suite(platform, storages) + }) + }) +} + export default { TestPlatform, - runTests + runTests, + runPerformanceTests } \ No newline at end of file diff --git a/tests/test/performance.test.ts b/tests/test/performance.test.ts new file mode 100644 index 0000000..4783ad8 --- /dev/null +++ b/tests/test/performance.test.ts @@ -0,0 +1,117 @@ +import { describe, it, expect } from 'vitest'; +import { v4 as uuidv4 } from 'uuid'; +import { SchemaFieldType, RIDB } from '../..'; +import { StoragesType } from '../shared'; + + +export default (platform: string, storages: StoragesType[]) => { + + return describe(`[${platform}] Testing`, () => { + + storages.forEach(({ name, storage }) => { + describe(`[${platform}][${storage ? 'Typescript' : 'Wasm'} ${name}] Testing Storage`, () => { + it('Performance test: Create records', async () => { + const db = new RIDB({ + dbName: "test" + uuidv4(), + schemas: { + demo: { + version: 0, + primaryKey: 'id', + type: SchemaFieldType.object, + properties: { + id: { + type: SchemaFieldType.string, + maxLength: 60 + }, + name: { + type: SchemaFieldType.string, + maxLength: 100 + } + } + } + } as const + }); + + await db.start({ + storageType: storage, + password: "test" + }); + + const recordCounts = [100, 1000, 10000]; // Different record counts + for (const count of recordCounts) { + const records: typeof db['schemas']['demo'][] = []; + for (let i = 0; i < count; i++) { + records.push({ id: `id_${i}`, name: `name_${i}` }); + } + + const startTime = performance.now(); + + for (const record of records) { + await db.collections.demo.create(record); + } + + const endTime = performance.now(); + console.log(`Time to create ${count} records on ${name}: ${endTime - startTime} ms`); + } + }, {timeout: 100000}); + + it('Performance test: Query records', async () => { + const db = new RIDB({ + dbName: "test" + uuidv4(), + schemas: { + demo: { + version: 0, + primaryKey: 'id', + type: SchemaFieldType.object, + properties: { + id: { + type: SchemaFieldType.string, + maxLength: 60 + }, + name: { + type: SchemaFieldType.string, + maxLength: 100 + }, + value: { + type: SchemaFieldType.number + } + } + } + } as const + }); + + await db.start({ + storageType: storage, + password: "test" + }); + + // Insert records for querying + const totalRecords = 10000; + for (let i = 0; i < totalRecords; i++) { + await db.collections.demo.create({ + id: `id_${i}`, + name: `name_${i}`, + value: i + }); + } + + const queryCounts = [100, 1000, 5000]; // Different query sizes + + for (const qCount of queryCounts) { + const startTime = performance.now(); + + const results = await db.collections.demo.find({ + value: { + $lt: qCount + } + }); + + const endTime = performance.now(); + console.log(`Time to query ${qCount} records on ${name}: ${endTime - startTime} ms`); + expect(results.length).to.eq(qCount); + } + }, {timeout: 100000}); + }) + }) + }); +} \ No newline at end of file diff --git a/tests/schemas.test.ts b/tests/test/schemas.test.ts similarity index 99% rename from tests/schemas.test.ts rename to tests/test/schemas.test.ts index 4d7e888..09fc41d 100644 --- a/tests/schemas.test.ts +++ b/tests/test/schemas.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest'; import { v4 as uuidv4 } from 'uuid'; -import { SchemaFieldType, RIDB } from '..'; -import { StoragesType } from './shared'; +import { SchemaFieldType, RIDB } from '../..'; +import { StoragesType } from '../shared'; export default (platform: string, storages: StoragesType[]) => { @@ -11,7 +11,6 @@ export default (platform: string, storages: StoragesType[]) => { storages.forEach(({ name, storage }) => { describe(`[${platform}][${storage ? 'Typescript' : 'Wasm'} ${name}] Testing Storage`, () => { it('It should be able to create a new document from JSON schema', async () => { - const db = new RIDB( { dbName: "test" + uuidv4(), From bd181d7d67f584ca409074d9db7964ef9f0483fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Tue, 24 Dec 2024 12:43:44 +0100 Subject: [PATCH 02/35] fix: move example folder --- examples/web/{examples => }/.gitignore | 2 +- examples/web/{examples => }/README.md | 0 examples/web/{examples => }/eslint.config.mjs | 0 examples/web/{examples => }/next.config.ts | 0 examples/web/{examples => }/package-lock.json | 0 examples/web/{examples => }/package.json | 0 examples/web/{examples => }/postcss.config.mjs | 0 examples/web/{examples => }/public/file.svg | 0 examples/web/{examples => }/public/globe.svg | 0 examples/web/{examples => }/public/next.svg | 0 examples/web/{examples => }/public/vercel.svg | 0 examples/web/{examples => }/public/window.svg | 0 examples/web/{examples => }/src/app/favicon.ico | Bin examples/web/{examples => }/src/app/globals.css | 0 examples/web/{examples => }/src/app/layout.tsx | 0 examples/web/{examples => }/src/app/page.tsx | 0 examples/web/{examples => }/tailwind.config.ts | 0 examples/web/{examples => }/tsconfig.json | 0 18 files changed, 1 insertion(+), 1 deletion(-) rename examples/web/{examples => }/.gitignore (98%) rename examples/web/{examples => }/README.md (100%) rename examples/web/{examples => }/eslint.config.mjs (100%) rename examples/web/{examples => }/next.config.ts (100%) rename examples/web/{examples => }/package-lock.json (100%) rename examples/web/{examples => }/package.json (100%) rename examples/web/{examples => }/postcss.config.mjs (100%) rename examples/web/{examples => }/public/file.svg (100%) rename examples/web/{examples => }/public/globe.svg (100%) rename examples/web/{examples => }/public/next.svg (100%) rename examples/web/{examples => }/public/vercel.svg (100%) rename examples/web/{examples => }/public/window.svg (100%) rename examples/web/{examples => }/src/app/favicon.ico (100%) rename examples/web/{examples => }/src/app/globals.css (100%) rename examples/web/{examples => }/src/app/layout.tsx (100%) rename examples/web/{examples => }/src/app/page.tsx (100%) rename examples/web/{examples => }/tailwind.config.ts (100%) rename examples/web/{examples => }/tsconfig.json (100%) diff --git a/examples/web/examples/.gitignore b/examples/web/.gitignore similarity index 98% rename from examples/web/examples/.gitignore rename to examples/web/.gitignore index 5ef6a52..161414e 100644 --- a/examples/web/examples/.gitignore +++ b/examples/web/.gitignore @@ -9,7 +9,7 @@ !.yarn/plugins !.yarn/releases !.yarn/versions - +.next # testing /coverage diff --git a/examples/web/examples/README.md b/examples/web/README.md similarity index 100% rename from examples/web/examples/README.md rename to examples/web/README.md diff --git a/examples/web/examples/eslint.config.mjs b/examples/web/eslint.config.mjs similarity index 100% rename from examples/web/examples/eslint.config.mjs rename to examples/web/eslint.config.mjs diff --git a/examples/web/examples/next.config.ts b/examples/web/next.config.ts similarity index 100% rename from examples/web/examples/next.config.ts rename to examples/web/next.config.ts diff --git a/examples/web/examples/package-lock.json b/examples/web/package-lock.json similarity index 100% rename from examples/web/examples/package-lock.json rename to examples/web/package-lock.json diff --git a/examples/web/examples/package.json b/examples/web/package.json similarity index 100% rename from examples/web/examples/package.json rename to examples/web/package.json diff --git a/examples/web/examples/postcss.config.mjs b/examples/web/postcss.config.mjs similarity index 100% rename from examples/web/examples/postcss.config.mjs rename to examples/web/postcss.config.mjs diff --git a/examples/web/examples/public/file.svg b/examples/web/public/file.svg similarity index 100% rename from examples/web/examples/public/file.svg rename to examples/web/public/file.svg diff --git a/examples/web/examples/public/globe.svg b/examples/web/public/globe.svg similarity index 100% rename from examples/web/examples/public/globe.svg rename to examples/web/public/globe.svg diff --git a/examples/web/examples/public/next.svg b/examples/web/public/next.svg similarity index 100% rename from examples/web/examples/public/next.svg rename to examples/web/public/next.svg diff --git a/examples/web/examples/public/vercel.svg b/examples/web/public/vercel.svg similarity index 100% rename from examples/web/examples/public/vercel.svg rename to examples/web/public/vercel.svg diff --git a/examples/web/examples/public/window.svg b/examples/web/public/window.svg similarity index 100% rename from examples/web/examples/public/window.svg rename to examples/web/public/window.svg diff --git a/examples/web/examples/src/app/favicon.ico b/examples/web/src/app/favicon.ico similarity index 100% rename from examples/web/examples/src/app/favicon.ico rename to examples/web/src/app/favicon.ico diff --git a/examples/web/examples/src/app/globals.css b/examples/web/src/app/globals.css similarity index 100% rename from examples/web/examples/src/app/globals.css rename to examples/web/src/app/globals.css diff --git a/examples/web/examples/src/app/layout.tsx b/examples/web/src/app/layout.tsx similarity index 100% rename from examples/web/examples/src/app/layout.tsx rename to examples/web/src/app/layout.tsx diff --git a/examples/web/examples/src/app/page.tsx b/examples/web/src/app/page.tsx similarity index 100% rename from examples/web/examples/src/app/page.tsx rename to examples/web/src/app/page.tsx diff --git a/examples/web/examples/tailwind.config.ts b/examples/web/tailwind.config.ts similarity index 100% rename from examples/web/examples/tailwind.config.ts rename to examples/web/tailwind.config.ts diff --git a/examples/web/examples/tsconfig.json b/examples/web/tsconfig.json similarity index 100% rename from examples/web/examples/tsconfig.json rename to examples/web/tsconfig.json From fe6c3a43423945f80294e1cb5d7589efcc9ca935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Tue, 24 Dec 2024 14:17:13 +0100 Subject: [PATCH 03/35] fix: improve examples and minor fixes --- examples/web/package-lock.json | 45 +- examples/web/package.json | 2 +- examples/web/src/app/page.tsx | 68 ++- package-lock.json | 857 +++++++++++++++++++----------- package.json | 12 +- test.sh | 6 +- tests/browser.test.ts | 1 + tests/performance-browser.test.ts | 8 - tests/performance-node.test.ts | 8 - tests/shared.ts | 16 +- tests/test/performance.test.ts | 117 ---- 11 files changed, 675 insertions(+), 465 deletions(-) delete mode 100644 tests/performance-browser.test.ts delete mode 100644 tests/performance-node.test.ts delete mode 100644 tests/test/performance.test.ts diff --git a/examples/web/package-lock.json b/examples/web/package-lock.json index 18bd217..d930231 100644 --- a/examples/web/package-lock.json +++ b/examples/web/package-lock.json @@ -8,7 +8,7 @@ "name": "examples", "version": "0.1.0", "dependencies": { - "@trust0/ridb": "file:../ts", + "@trust0/ridb": "file:../../", "next": "15.1.2", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -26,6 +26,46 @@ "typescript": "^5" } }, + "../..": { + "name": "@trust0/ridb", + "version": "0.10.1", + "license": "Apache-2.0", + "devDependencies": { + "@esbuild-plugins/node-resolve": "^0.2.2", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^10.3.5", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.2", + "@trust0/ridb-wasm": "file:../ridb-wasm/pkg", + "@types/node": "^20.14.2", + "@vitest/browser": "^1.6.0", + "@vitest/coverage-istanbul": "^1.6.0", + "@vitest/ui": "^1.6.0", + "esbuild": "0.21.5", + "esbuild-plugin-wasm": "^1.1.0", + "esbuild-plugin-wasm-pack": "^1.1.0", + "jsdom": "^24.1.0", + "semantic-release": "^24.2.0", + "ts-node": "^10.9.2", + "typedoc": "^0.27.5", + "typedoc-plugin-external-module-map": "^2.1.0", + "typedoc-plugin-markdown": "^4.3.3", + "typedoc-plugin-rename-defaults": "^0.7.2", + "typedoc-theme-hierarchy": "^5.0.4", + "typescript": "^5.4.5", + "uuid": "^11.0.3", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0", + "vitest": "^1.6.0", + "webdriverio": "^9.0.9" + }, + "engines": { + "node": ">=20" + } + }, "../pkg": { "name": "ridb-rust", "version": "0.1.0", @@ -34,6 +74,7 @@ "../ts": { "name": "@trust0/ridb", "version": "0.6.5", + "extraneous": true, "license": "Apache-2.0", "devDependencies": { "@esbuild-plugins/node-resolve": "^0.2.2", @@ -951,7 +992,7 @@ } }, "node_modules/@trust0/ridb": { - "resolved": "../ts", + "resolved": "../..", "link": true }, "node_modules/@types/estree": { diff --git a/examples/web/package.json b/examples/web/package.json index 8d8154b..141ef0f 100644 --- a/examples/web/package.json +++ b/examples/web/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "@trust0/ridb": "file:../ts", + "@trust0/ridb": "file:../../", "next": "15.1.2", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/examples/web/src/app/page.tsx b/examples/web/src/app/page.tsx index cb4d6e1..29f9c79 100644 --- a/examples/web/src/app/page.tsx +++ b/examples/web/src/app/page.tsx @@ -41,39 +41,74 @@ export default function Home() { const [demos, setDemos] = useState[]>([]); const [newDemoId, setNewDemoId] = useState(''); const [storageType, setStorageType] = useState(StorageType.IndexDB); + const [operationTime, setOperationTime] = useState(null); + const [operationHistory, setOperationHistory] = useState<{ name: string; time: string }[]>([]); + const [numRecords, setNumRecords] = useState(1); + + const logOperation = (name: string, startTime: number, endTime: number) => { + const timeTaken = ((endTime - startTime) / 1000).toFixed(2); + setOperationHistory((prev) => [...prev, { name, time: `${timeTaken} seconds` }]); + }; const handleStart = async () => { if (db) { - await db.start({ storageType, password:"demo" }); + const startTime = performance.now(); + await db.start({ storageType, password: "demo" }); + const endTime = performance.now(); + logOperation('Start DB', startTime, endTime); setIsStarted(true); fetchDemos(); } }; - const handleClose = async() => { + const handleClose = async () => { if (db) { + const startTime = performance.now(); await db.close(); + const endTime = performance.now(); + logOperation('Close DB', startTime, endTime); setIsStarted(false); } }; const fetchDemos = async () => { if (db) { + const startTime = performance.now(); const demoCollection = db.collections.demo; const allDemos = await demoCollection.find({}); + const endTime = performance.now(); + logOperation('Fetch Demos', startTime, endTime); setDemos(allDemos); } }; const handleAddDemo = async () => { if (db && isStarted && newDemoId) { + const startTime = performance.now(); const demoCollection = db.collections.demo; await demoCollection.create({ id: newDemoId }); + const endTime = performance.now(); + logOperation('Add Demo', startTime, endTime); setNewDemoId(''); fetchDemos(); } }; + const generateRandomData = async () => { + if (db && isStarted) { + const startTime = performance.now(); + const demoCollection = db.collections.demo; + for (let i = 0; i < numRecords; i++) { + const randomId = `demo-${Math.random().toString(36).substr(2, 9)}`; + const randomAge = Math.floor(Math.random() * 100); + await demoCollection.create({ id: randomId, age: randomAge }); + } + const endTime = performance.now(); + logOperation('Generate Random Data', startTime, endTime); + fetchDemos(); + } + }; + return (
@@ -115,6 +150,7 @@ export default function Home() { )}

Status: {isStarted ? 'Started' : 'Stopped'}

+

Operation Time: {operationTime}

{isStarted && (
@@ -142,8 +178,36 @@ export default function Home() { > Add Demo + setNumRecords(Number(e.target.value))} + placeholder="Number of Records" + className="p-2 border rounded-md shadow-sm w-full mb-2 focus:outline-none focus:ring-2 focus:ring-blue-500 text-gray-900 dark:text-gray-800" + aria-label="Number of Records" + /> +
)} +
+

Operation History

+
    + {operationHistory.map((operation, index) => ( +
  • + {operation.name}: {operation.time} +
  • + ))} +
+
); diff --git a/package-lock.json b/package-lock.json index a6b52b5..c5b9747 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { "name": "@trust0/ridb", - "version": "0.10.0-rc.1", + "version": "0.10.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trust0/ridb", - "version": "0.10.0-rc.1", + "version": "0.10.1", "license": "Apache-2.0", - "dependencies": { + "devDependencies": { + "@esbuild-plugins/node-resolve": "^0.2.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.0", "@semantic-release/exec": "^6.0.3", @@ -16,11 +17,7 @@ "@semantic-release/github": "^10.3.5", "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.2", - "semantic-release": "^24.2.0" - }, - "devDependencies": { - "@esbuild-plugins/node-resolve": "^0.2.2", - "@trust0/ridb-wasm": "^1.0.3", + "@trust0/ridb-wasm": "file:../ridb-wasm/pkg", "@types/node": "^20.14.2", "@vitest/browser": "^1.6.0", "@vitest/coverage-istanbul": "^1.6.0", @@ -28,7 +25,8 @@ "esbuild": "0.21.5", "esbuild-plugin-wasm": "^1.1.0", "esbuild-plugin-wasm-pack": "^1.1.0", - "jsdom": "^24.1.0", + "jsdom": "^24.1.3", + "semantic-release": "^24.2.0", "ts-node": "^10.9.2", "typedoc": "^0.27.5", "typedoc-plugin-external-module-map": "^2.1.0", @@ -46,6 +44,14 @@ "node": ">=20" } }, + "../ridb-wasm": { + "dev": true + }, + "../ridb-wasm/pkg": { + "name": "@trust0/ridb-wasm", + "version": "1.0.6", + "dev": true + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -64,6 +70,7 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", @@ -215,6 +222,7 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -308,19 +316,17 @@ "node": ">=6.9.0" } }, -<<<<<<< HEAD "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -952,6 +958,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -965,6 +972,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -974,6 +982,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -983,11 +992,11 @@ "node": ">= 8" } }, -<<<<<<< HEAD "node_modules/@octokit/auth-token": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 18" @@ -997,6 +1006,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/auth-token": "^5.0.0", @@ -1015,6 +1025,7 @@ "version": "10.1.1", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^13.0.0", @@ -1028,6 +1039,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/request": "^9.0.0", @@ -1042,12 +1054,14 @@ "version": "22.2.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "dev": true, "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { "version": "11.3.6", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.6.tgz", "integrity": "sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^13.6.2" @@ -1063,6 +1077,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.2.tgz", "integrity": "sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/request-error": "^6.0.0", @@ -1080,6 +1095,7 @@ "version": "9.3.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.2.tgz", "integrity": "sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^13.0.0", @@ -1096,6 +1112,7 @@ "version": "9.1.3", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz", "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/endpoint": "^10.0.0", @@ -1111,6 +1128,7 @@ "version": "6.1.5", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz", "integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^13.0.0" @@ -1123,13 +1141,12 @@ "version": "13.6.2", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/openapi-types": "^22.2.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1141,11 +1158,11 @@ "node": ">=14" } }, -<<<<<<< HEAD "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.22.0" @@ -1155,6 +1172,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" @@ -1167,12 +1185,14 @@ "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, "license": "ISC" }, "node_modules/@pnpm/npm-conf": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dev": true, "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", @@ -1183,8 +1203,6 @@ "node": ">=12" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/@polka/url": { "version": "1.0.0-next.28", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", @@ -1519,17 +1537,18 @@ "win32" ] }, -<<<<<<< HEAD "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, "license": "MIT" }, "node_modules/@semantic-release/changelog": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", @@ -1548,6 +1567,7 @@ "version": "13.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz", "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==", + "dev": true, "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -1570,6 +1590,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.17" @@ -1579,6 +1600,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/@semantic-release/exec/-/exec-6.0.3.tgz", "integrity": "sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==", + "dev": true, "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", @@ -1599,6 +1621,7 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "dev": true, "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", @@ -1621,6 +1644,7 @@ "version": "10.3.5", "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.3.5.tgz", "integrity": "sha512-svvRglGmvqvxjmDgkXhrjf0lC88oZowFhOfifTldbgX9Dzj0inEtMLaC+3/MkDEmxmaQjWmF5Q/0CMIvPNSVdQ==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/core": "^6.0.0", @@ -1651,6 +1675,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1660,6 +1685,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", @@ -1676,6 +1702,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" @@ -1691,6 +1718,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1703,6 +1731,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1715,6 +1744,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", + "dev": true, "license": "MIT", "dependencies": { "@semantic-release/error": "^4.0.0", @@ -1742,6 +1772,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1751,6 +1782,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1763,6 +1795,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", @@ -1779,6 +1812,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" @@ -1794,6 +1828,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1806,6 +1841,7 @@ "version": "9.5.2", "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", @@ -1832,6 +1868,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, "license": "MIT", "dependencies": { "@sec-ant/readable-stream": "^0.4.1", @@ -1848,6 +1885,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18.18.0" @@ -1857,6 +1895,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1869,6 +1908,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1881,6 +1921,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^4.0.0", @@ -1897,6 +1938,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1909,6 +1951,7 @@ "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" @@ -1921,6 +1964,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1933,6 +1977,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1945,6 +1990,7 @@ "version": "14.0.2", "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.2.tgz", "integrity": "sha512-ur2l2tVLBfX3fSEO2rCy2X6Kzg5S7BHGqdwTHvJrpWp4mOEN7W4K/2kWAjvfAlwMenEKjMnDIhBbxxjnP0S9hw==", + "dev": true, "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -1965,8 +2011,6 @@ "semantic-release": ">=20.1.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/@shikijs/engine-oniguruma": { "version": "1.24.4", "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", @@ -2003,11 +2047,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2020,6 +2064,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -2028,8 +2073,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/@swc/core": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.1.tgz", @@ -2264,10 +2307,8 @@ "license": "MIT" }, "node_modules/@trust0/ridb-wasm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@trust0/ridb-wasm/-/ridb-wasm-1.0.3.tgz", - "integrity": "sha512-ZymZeOFtoHo9xi5oE0wZOWf3lLijECRjGp11t52XUJxr44UsnNtpzmqShlqx8DgJu00W1DhnxBtQ5smHsnmXHQ==", - "dev": true + "resolved": "../ridb-wasm/pkg", + "link": true }, "node_modules/@tsconfig/node10": { "version": "1.0.11", @@ -2324,15 +2365,13 @@ "undici-types": "~6.19.2" } }, -<<<<<<< HEAD "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/@types/resolve": { "version": "1.20.6", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", @@ -2340,15 +2379,13 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.5", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", @@ -2778,16 +2815,17 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 14" } }, -<<<<<<< HEAD "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", @@ -2801,6 +2839,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, "license": "MIT", "dependencies": { "environment": "^1.0.0" @@ -2812,12 +2851,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -2839,15 +2877,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, -<<<<<<< HEAD "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", @@ -3090,17 +3126,16 @@ "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" }, -<<<<<<< HEAD "node_modules/argv-formatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -3111,15 +3146,13 @@ "node": ">= 0.4" } }, -<<<<<<< HEAD "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -3253,15 +3286,13 @@ "node": ">=10.0.0" } }, -<<<<<<< HEAD "node_modules/before-after-hook": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "dev": true, "license": "Apache-2.0" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -3269,15 +3300,13 @@ "dev": true, "license": "ISC" }, -<<<<<<< HEAD "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3293,6 +3322,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -3379,18 +3409,16 @@ "node": ">=8" } }, -<<<<<<< HEAD "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/camelcase": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", @@ -3448,6 +3476,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -3456,18 +3485,16 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, -<<<<<<< HEAD "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", @@ -3539,11 +3566,11 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, -<<<<<<< HEAD "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3553,6 +3580,7 @@ "version": "2.1.11", "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, "license": "ISC", "dependencies": { "chalk": "^4.0.0", @@ -3574,6 +3602,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3589,6 +3618,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3605,6 +3635,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -3616,12 +3647,14 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, "license": "MIT" }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^7.0.2", @@ -3640,6 +3673,7 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -3649,6 +3683,7 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, "license": "MIT", "dependencies": { "string-width": "^4.2.0" @@ -3660,12 +3695,11 @@ "@colors/colors": "1.5.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -3680,6 +3714,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3692,6 +3727,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -3717,19 +3753,17 @@ "node": "^12.20.0 || >=14" } }, -<<<<<<< HEAD "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/compress-commons": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", @@ -3834,11 +3868,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, "license": "MIT", "dependencies": { "ini": "^1.3.4", @@ -3849,6 +3883,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", + "dev": true, "license": "ISC", "dependencies": { "compare-func": "^2.0.0" @@ -3861,6 +3896,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz", "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==", + "dev": true, "license": "MIT", "dependencies": { "@types/semver": "^7.5.5", @@ -3880,6 +3916,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -3889,6 +3926,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", + "dev": true, "license": "MIT", "dependencies": { "meow": "^13.0.0" @@ -3904,6 +3942,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -3912,8 +3951,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -3925,13 +3962,14 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.1", @@ -3954,8 +3992,6 @@ } } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", @@ -4067,6 +4103,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -4077,11 +4114,11 @@ "node": ">= 8" } }, -<<<<<<< HEAD "node_modules/crypto-random-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^1.0.1" @@ -4097,6 +4134,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -4105,8 +4143,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -4191,6 +4227,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4237,18 +4274,16 @@ "node": ">=6" } }, -<<<<<<< HEAD "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4.0.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/deepmerge-ts": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.3.tgz", @@ -4304,11 +4339,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, -<<<<<<< HEAD "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "license": "MIT", "dependencies": { "path-type": "^4.0.0" @@ -4317,8 +4352,6 @@ "node": ">=8" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -4378,11 +4411,11 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, -<<<<<<< HEAD "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, "license": "MIT", "dependencies": { "is-obj": "^2.0.0" @@ -4395,13 +4428,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -4488,17 +4520,16 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/emojilib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/encoding-sniffer": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", @@ -4536,11 +4567,11 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, -<<<<<<< HEAD "node_modules/env-ci": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.0.tgz", "integrity": "sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==", + "dev": true, "license": "MIT", "dependencies": { "execa": "^8.0.0", @@ -4554,6 +4585,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -4577,6 +4609,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, "license": "MIT", "engines": { "node": ">=16" @@ -4589,6 +4622,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=16.17.0" @@ -4598,6 +4632,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -4610,6 +4645,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4622,6 +4658,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^4.0.0" @@ -4637,6 +4674,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" @@ -4652,6 +4690,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4664,6 +4703,7 @@ "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" @@ -4676,6 +4716,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4688,6 +4729,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4697,6 +4739,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -4709,13 +4752,12 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -4787,6 +4829,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4891,11 +4934,11 @@ "node": ">=0.8.x" } }, -<<<<<<< HEAD "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -4919,6 +4962,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -4927,8 +4971,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -4984,6 +5026,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5023,6 +5066,7 @@ "version": "1.18.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -5069,11 +5113,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/figures": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, "license": "MIT", "dependencies": { "is-unicode-supported": "^2.0.0" @@ -5085,12 +5129,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -5099,11 +5142,11 @@ "node": ">=8" } }, -<<<<<<< HEAD "node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^2.0.0" @@ -5116,6 +5159,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -5128,6 +5172,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", + "dev": true, "license": "MIT", "dependencies": { "semver-regex": "^4.0.5", @@ -5140,8 +5185,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/flatted": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", @@ -5207,11 +5250,11 @@ "node": ">=12.20.0" } }, -<<<<<<< HEAD "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -5222,6 +5265,7 @@ "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -5232,8 +5276,6 @@ "node": ">=14.14" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5266,11 +5308,11 @@ "url": "https://github.com/sponsors/ljharb" } }, -<<<<<<< HEAD "node_modules/function-timeout": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -5279,8 +5321,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/geckodriver": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-5.0.0.tgz", @@ -5345,6 +5385,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -5373,11 +5414,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -<<<<<<< HEAD "node_modules/get-stream": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=16" @@ -5386,8 +5427,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/get-uri": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", @@ -5413,11 +5452,11 @@ "node": ">= 14" } }, -<<<<<<< HEAD "node_modules/git-log-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "dev": true, "license": "MIT", "dependencies": { "argv-formatter": "~1.0.0", @@ -5428,8 +5467,6 @@ "traverse": "0.6.8" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -5456,6 +5493,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5474,11 +5512,11 @@ "node": ">=4" } }, -<<<<<<< HEAD "node_modules/globby": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", @@ -5499,6 +5537,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5507,12 +5546,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, "license": "ISC" }, "node_modules/grapheme-splitter": { @@ -5522,11 +5560,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.5", @@ -5544,12 +5582,11 @@ "uglify-js": "^3.1.4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5568,11 +5605,11 @@ "node": ">= 0.4" } }, -<<<<<<< HEAD "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": "*" @@ -5582,6 +5619,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -5594,6 +5632,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" @@ -5606,10 +5645,9 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, "license": "ISC" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", @@ -5661,6 +5699,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.0", @@ -5674,6 +5713,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.2", @@ -5683,18 +5723,16 @@ "node": ">= 14" } }, -<<<<<<< HEAD "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -5729,18 +5767,16 @@ ], "license": "BSD-3-Clause" }, -<<<<<<< HEAD "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -5748,11 +5784,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -5769,6 +5805,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -5778,6 +5815,7 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.4", @@ -5787,23 +5825,22 @@ "node": ">=16.20" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, -<<<<<<< HEAD "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5813,6 +5850,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -5821,8 +5859,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -5839,19 +5875,21 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, "license": "ISC" }, -<<<<<<< HEAD "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, "license": "ISC" }, "node_modules/into-stream": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, "license": "MIT", "dependencies": { "from2": "^2.3.0", @@ -5864,8 +5902,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/ip-address": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", @@ -5880,15 +5916,13 @@ "node": ">= 12" } }, -<<<<<<< HEAD "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -5909,6 +5943,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5918,6 +5953,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5927,6 +5963,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -5939,27 +5976,27 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" } }, -<<<<<<< HEAD "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5979,6 +6016,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5987,11 +6025,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -<<<<<<< HEAD "node_modules/is-unicode-supported": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -6000,25 +6038,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, -<<<<<<< HEAD "node_modules/issue-parser": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", + "dev": true, "license": "MIT", "dependencies": { "lodash.capitalize": "^4.2.1", @@ -6031,8 +6069,6 @@ "node": "^18.17 || >=20.6.1" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -6120,29 +6156,28 @@ "@pkgjs/parseargs": "^0.11.0" } }, -<<<<<<< HEAD "node_modules/java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -6151,8 +6186,6 @@ "js-yaml": "bin/js-yaml.js" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", @@ -6214,21 +6247,20 @@ "node": ">=6" } }, -<<<<<<< HEAD "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -6246,6 +6278,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -6290,15 +6323,13 @@ "immediate": "~3.0.5" } }, -<<<<<<< HEAD "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", @@ -6309,11 +6340,11 @@ "uc.micro": "^2.0.0" } }, -<<<<<<< HEAD "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", @@ -6329,6 +6360,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, "license": "MIT", "dependencies": { "error-ex": "^1.3.1", @@ -6338,8 +6370,6 @@ "node": ">=4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/local-pkg": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", @@ -6392,11 +6422,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -<<<<<<< HEAD "node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^2.0.0", @@ -6406,29 +6436,27 @@ "node": ">=4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true, "license": "MIT" }, "node_modules/lodash.capitalize": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -6436,33 +6464,34 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/lodash.escaperegexp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true, "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, "license": "MIT" }, "node_modules/lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -6581,11 +6610,11 @@ "markdown-it": "bin/markdown-it.mjs" } }, -<<<<<<< HEAD "node_modules/marked": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "dev": true, "license": "MIT", "bin": { "marked": "bin/marked.js" @@ -6598,6 +6627,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.2.1.tgz", "integrity": "sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-escapes": "^7.0.0", @@ -6615,8 +6645,6 @@ "marked": ">=1 <15" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", @@ -6624,11 +6652,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -6637,18 +6665,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -6658,6 +6686,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -6667,11 +6696,11 @@ "node": ">=8.6" } }, -<<<<<<< HEAD "node_modules/mime": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.6.tgz", "integrity": "sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==", + "dev": true, "funding": [ "https://github.com/sponsors/broofa" ], @@ -6683,8 +6712,6 @@ "node": ">=16" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6708,18 +6735,16 @@ "node": ">= 0.6" } }, -<<<<<<< HEAD "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6733,18 +6758,16 @@ "node": "*" } }, -<<<<<<< HEAD "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -6782,13 +6805,14 @@ "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" }, -<<<<<<< HEAD "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0", @@ -6796,8 +6820,6 @@ "thenify-all": "^1.0.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/nanoid": { "version": "3.3.8", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", @@ -6817,21 +6839,20 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, -<<<<<<< HEAD "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, "license": "MIT" }, "node_modules/nerf-dart": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/netmask": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", @@ -6862,11 +6883,11 @@ "node": ">=10.5.0" } }, -<<<<<<< HEAD "node_modules/node-emoji": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.6.0", @@ -6878,8 +6899,6 @@ "node": ">=18" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/node-fetch": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", @@ -6906,11 +6925,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/normalize-package-data": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", @@ -6921,8 +6940,6 @@ "node": "^16.14.0 || >=18.0.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -6933,11 +6950,11 @@ "node": ">=0.10.0" } }, -<<<<<<< HEAD "node_modules/normalize-url": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -7020,6 +7037,7 @@ "which", "write-file-atomic" ], + "dev": true, "license": "Artistic-2.0", "workspaces": [ "docs", @@ -7110,6 +7128,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -7120,6 +7139,7 @@ }, "node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7136,6 +7156,7 @@ }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.1.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7147,11 +7168,13 @@ }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7168,6 +7191,7 @@ }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7182,6 +7206,7 @@ }, "node_modules/npm/node_modules/@isaacs/fs-minipass": { "version": "4.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7193,11 +7218,13 @@ }, "node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7213,6 +7240,7 @@ }, "node_modules/npm/node_modules/@npmcli/arborist": { "version": "8.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7261,6 +7289,7 @@ }, "node_modules/npm/node_modules/@npmcli/config": { "version": "9.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7279,6 +7308,7 @@ }, "node_modules/npm/node_modules/@npmcli/fs": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7290,6 +7320,7 @@ }, "node_modules/npm/node_modules/@npmcli/git": { "version": "6.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7309,6 +7340,7 @@ }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7324,6 +7356,7 @@ }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "4.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7338,6 +7371,7 @@ }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "8.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7353,6 +7387,7 @@ }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { "version": "20.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7383,6 +7418,7 @@ }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -7391,6 +7427,7 @@ }, "node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -7399,6 +7436,7 @@ }, "node_modules/npm/node_modules/@npmcli/package-json": { "version": "6.1.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7416,6 +7454,7 @@ }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "8.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7427,6 +7466,7 @@ }, "node_modules/npm/node_modules/@npmcli/query": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7438,6 +7478,7 @@ }, "node_modules/npm/node_modules/@npmcli/redact": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -7446,6 +7487,7 @@ }, "node_modules/npm/node_modules/@npmcli/run-script": { "version": "9.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7462,6 +7504,7 @@ }, "node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "dev": true, "inBundle": true, "license": "MIT", "optional": true, @@ -7471,6 +7514,7 @@ }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.3.2", + "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -7479,6 +7523,7 @@ }, "node_modules/npm/node_modules/@sigstore/tuf": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -7491,6 +7536,7 @@ }, "node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7499,6 +7545,7 @@ }, "node_modules/npm/node_modules/abbrev": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -7507,6 +7554,7 @@ }, "node_modules/npm/node_modules/agent-base": { "version": "7.1.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7518,6 +7566,7 @@ }, "node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7530,6 +7579,7 @@ }, "node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7538,6 +7588,7 @@ }, "node_modules/npm/node_modules/ansi-styles": { "version": "6.2.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7549,21 +7600,25 @@ }, "node_modules/npm/node_modules/aproba": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/archy": { "version": "1.0.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/bin-links": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7579,6 +7634,7 @@ }, "node_modules/npm/node_modules/binary-extensions": { "version": "2.3.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7590,6 +7646,7 @@ }, "node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7598,6 +7655,7 @@ }, "node_modules/npm/node_modules/cacache": { "version": "19.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7620,6 +7678,7 @@ }, "node_modules/npm/node_modules/cacache/node_modules/chownr": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "engines": { @@ -7628,6 +7687,7 @@ }, "node_modules/npm/node_modules/cacache/node_modules/minizlib": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7640,6 +7700,7 @@ }, "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "bin": { @@ -7654,6 +7715,7 @@ }, "node_modules/npm/node_modules/cacache/node_modules/p-map": { "version": "7.0.2", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7665,6 +7727,7 @@ }, "node_modules/npm/node_modules/cacache/node_modules/tar": { "version": "7.4.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7681,6 +7744,7 @@ }, "node_modules/npm/node_modules/cacache/node_modules/yallist": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "engines": { @@ -7689,6 +7753,7 @@ }, "node_modules/npm/node_modules/chalk": { "version": "5.3.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7700,6 +7765,7 @@ }, "node_modules/npm/node_modules/chownr": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -7708,6 +7774,7 @@ }, "node_modules/npm/node_modules/ci-info": { "version": "4.1.0", + "dev": true, "funding": [ { "type": "github", @@ -7722,6 +7789,7 @@ }, "node_modules/npm/node_modules/cidr-regex": { "version": "4.1.1", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -7733,6 +7801,7 @@ }, "node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7741,6 +7810,7 @@ }, "node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7753,6 +7823,7 @@ }, "node_modules/npm/node_modules/cmd-shim": { "version": "7.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -7761,6 +7832,7 @@ }, "node_modules/npm/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7772,16 +7844,19 @@ }, "node_modules/npm/node_modules/color-name": { "version": "1.1.4", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7795,6 +7870,7 @@ }, "node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7809,6 +7885,7 @@ }, "node_modules/npm/node_modules/cssesc": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "MIT", "bin": { @@ -7820,6 +7897,7 @@ }, "node_modules/npm/node_modules/debug": { "version": "4.3.7", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7836,6 +7914,7 @@ }, "node_modules/npm/node_modules/diff": { "version": "5.2.0", + "dev": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -7844,16 +7923,19 @@ }, "node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/encoding": { "version": "0.1.13", + "dev": true, "inBundle": true, "license": "MIT", "optional": true, @@ -7863,6 +7945,7 @@ }, "node_modules/npm/node_modules/env-paths": { "version": "2.2.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7871,16 +7954,19 @@ }, "node_modules/npm/node_modules/err-code": { "version": "2.0.3", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -7889,6 +7975,7 @@ }, "node_modules/npm/node_modules/foreground-child": { "version": "3.3.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7904,6 +7991,7 @@ }, "node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7915,6 +8003,7 @@ }, "node_modules/npm/node_modules/glob": { "version": "10.4.5", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7934,11 +8023,13 @@ }, "node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/hosted-git-info": { "version": "8.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7950,11 +8041,13 @@ }, "node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", + "dev": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/npm/node_modules/http-proxy-agent": { "version": "7.0.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7967,6 +8060,7 @@ }, "node_modules/npm/node_modules/https-proxy-agent": { "version": "7.0.5", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7979,6 +8073,7 @@ }, "node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", + "dev": true, "inBundle": true, "license": "MIT", "optional": true, @@ -7991,6 +8086,7 @@ }, "node_modules/npm/node_modules/ignore-walk": { "version": "7.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8002,6 +8098,7 @@ }, "node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8010,6 +8107,7 @@ }, "node_modules/npm/node_modules/indent-string": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8018,6 +8116,7 @@ }, "node_modules/npm/node_modules/ini": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8026,6 +8125,7 @@ }, "node_modules/npm/node_modules/init-package-json": { "version": "7.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8043,6 +8143,7 @@ }, "node_modules/npm/node_modules/ip-address": { "version": "9.0.5", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8055,6 +8156,7 @@ }, "node_modules/npm/node_modules/ip-regex": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8066,6 +8168,7 @@ }, "node_modules/npm/node_modules/is-cidr": { "version": "5.1.0", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -8077,6 +8180,7 @@ }, "node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8085,11 +8189,13 @@ }, "node_modules/npm/node_modules/isexe": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { "version": "3.4.3", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -8104,11 +8210,13 @@ }, "node_modules/npm/node_modules/jsbn": { "version": "1.1.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8117,6 +8225,7 @@ }, "node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", + "dev": true, "inBundle": true, "license": "ISC", "funding": { @@ -8125,6 +8234,7 @@ }, "node_modules/npm/node_modules/jsonparse": { "version": "1.3.1", + "dev": true, "engines": [ "node >= 0.2.0" ], @@ -8133,16 +8243,19 @@ }, "node_modules/npm/node_modules/just-diff": { "version": "6.0.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { "version": "9.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8155,6 +8268,7 @@ }, "node_modules/npm/node_modules/libnpmdiff": { "version": "7.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8173,6 +8287,7 @@ }, "node_modules/npm/node_modules/libnpmexec": { "version": "9.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8193,6 +8308,7 @@ }, "node_modules/npm/node_modules/libnpmfund": { "version": "6.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8204,6 +8320,7 @@ }, "node_modules/npm/node_modules/libnpmhook": { "version": "11.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8216,6 +8333,7 @@ }, "node_modules/npm/node_modules/libnpmorg": { "version": "7.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8228,6 +8346,7 @@ }, "node_modules/npm/node_modules/libnpmpack": { "version": "8.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8242,6 +8361,7 @@ }, "node_modules/npm/node_modules/libnpmpublish": { "version": "10.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8260,6 +8380,7 @@ }, "node_modules/npm/node_modules/libnpmsearch": { "version": "8.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8271,6 +8392,7 @@ }, "node_modules/npm/node_modules/libnpmteam": { "version": "7.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8283,6 +8405,7 @@ }, "node_modules/npm/node_modules/libnpmversion": { "version": "7.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8298,11 +8421,13 @@ }, "node_modules/npm/node_modules/lru-cache": { "version": "10.4.3", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/make-fetch-happen": { "version": "14.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8324,6 +8449,7 @@ }, "node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": { "version": "1.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8332,6 +8458,7 @@ }, "node_modules/npm/node_modules/minimatch": { "version": "9.0.5", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8346,6 +8473,7 @@ }, "node_modules/npm/node_modules/minipass": { "version": "7.1.2", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8354,6 +8482,7 @@ }, "node_modules/npm/node_modules/minipass-collect": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8365,6 +8494,7 @@ }, "node_modules/npm/node_modules/minipass-fetch": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8381,6 +8511,7 @@ }, "node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8393,6 +8524,7 @@ }, "node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8404,6 +8536,7 @@ }, "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8415,6 +8548,7 @@ }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8426,6 +8560,7 @@ }, "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8437,6 +8572,7 @@ }, "node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8448,6 +8584,7 @@ }, "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8459,6 +8596,7 @@ }, "node_modules/npm/node_modules/minizlib": { "version": "2.1.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8471,6 +8609,7 @@ }, "node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8482,6 +8621,7 @@ }, "node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", + "dev": true, "inBundle": true, "license": "MIT", "bin": { @@ -8493,11 +8633,13 @@ }, "node_modules/npm/node_modules/ms": { "version": "2.1.3", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/mute-stream": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8506,6 +8648,7 @@ }, "node_modules/npm/node_modules/node-gyp": { "version": "11.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8529,6 +8672,7 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/chownr": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "engines": { @@ -8537,6 +8681,7 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/minizlib": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8549,6 +8694,7 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "bin": { @@ -8563,6 +8709,7 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/tar": { "version": "7.4.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8579,6 +8726,7 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/yallist": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "engines": { @@ -8587,6 +8735,7 @@ }, "node_modules/npm/node_modules/nopt": { "version": "8.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8601,6 +8750,7 @@ }, "node_modules/npm/node_modules/nopt/node_modules/abbrev": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8609,6 +8759,7 @@ }, "node_modules/npm/node_modules/normalize-package-data": { "version": "7.0.0", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -8622,6 +8773,7 @@ }, "node_modules/npm/node_modules/npm-audit-report": { "version": "6.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8630,6 +8782,7 @@ }, "node_modules/npm/node_modules/npm-bundled": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8641,6 +8794,7 @@ }, "node_modules/npm/node_modules/npm-install-checks": { "version": "7.1.1", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -8652,6 +8806,7 @@ }, "node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8660,6 +8815,7 @@ }, "node_modules/npm/node_modules/npm-package-arg": { "version": "12.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8674,6 +8830,7 @@ }, "node_modules/npm/node_modules/npm-packlist": { "version": "9.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8685,6 +8842,7 @@ }, "node_modules/npm/node_modules/npm-pick-manifest": { "version": "10.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8699,6 +8857,7 @@ }, "node_modules/npm/node_modules/npm-profile": { "version": "11.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8711,6 +8870,7 @@ }, "node_modules/npm/node_modules/npm-registry-fetch": { "version": "18.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8729,6 +8889,7 @@ }, "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8741,6 +8902,7 @@ }, "node_modules/npm/node_modules/npm-user-validate": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -8749,6 +8911,7 @@ }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8763,11 +8926,13 @@ }, "node_modules/npm/node_modules/package-json-from-dist": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0" }, "node_modules/npm/node_modules/pacote": { "version": "19.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8798,6 +8963,7 @@ }, "node_modules/npm/node_modules/parse-conflict-json": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8811,6 +8977,7 @@ }, "node_modules/npm/node_modules/path-key": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8819,6 +8986,7 @@ }, "node_modules/npm/node_modules/path-scurry": { "version": "1.11.1", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -8834,6 +9002,7 @@ }, "node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.1.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8846,6 +9015,7 @@ }, "node_modules/npm/node_modules/proc-log": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8854,6 +9024,7 @@ }, "node_modules/npm/node_modules/proggy": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8862,6 +9033,7 @@ }, "node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "ISC", "funding": { @@ -8870,6 +9042,7 @@ }, "node_modules/npm/node_modules/promise-call-limit": { "version": "3.0.2", + "dev": true, "inBundle": true, "license": "ISC", "funding": { @@ -8878,11 +9051,13 @@ }, "node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8895,6 +9070,7 @@ }, "node_modules/npm/node_modules/promzard": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8906,6 +9082,7 @@ }, "node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", + "dev": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -8913,6 +9090,7 @@ }, "node_modules/npm/node_modules/read": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8924,6 +9102,7 @@ }, "node_modules/npm/node_modules/read-cmd-shim": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -8932,6 +9111,7 @@ }, "node_modules/npm/node_modules/read-package-json-fast": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8944,6 +9124,7 @@ }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -8952,6 +9133,7 @@ }, "node_modules/npm/node_modules/rimraf": { "version": "5.0.10", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8966,12 +9148,14 @@ }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", + "dev": true, "inBundle": true, "license": "MIT", "optional": true }, "node_modules/npm/node_modules/semver": { "version": "7.6.3", + "dev": true, "inBundle": true, "license": "ISC", "bin": { @@ -8983,6 +9167,7 @@ }, "node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8994,6 +9179,7 @@ }, "node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -9002,6 +9188,7 @@ }, "node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -9013,6 +9200,7 @@ }, "node_modules/npm/node_modules/sigstore": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9029,6 +9217,7 @@ }, "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9040,6 +9229,7 @@ }, "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -9048,6 +9238,7 @@ }, "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9064,6 +9255,7 @@ }, "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9077,6 +9269,7 @@ }, "node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -9086,6 +9279,7 @@ }, "node_modules/npm/node_modules/socks": { "version": "2.8.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9099,6 +9293,7 @@ }, "node_modules/npm/node_modules/socks-proxy-agent": { "version": "8.0.4", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9112,6 +9307,7 @@ }, "node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9121,6 +9317,7 @@ }, "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9130,11 +9327,13 @@ }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", + "dev": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9144,16 +9343,19 @@ }, "node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.20", + "dev": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/npm/node_modules/sprintf-js": { "version": "1.1.3", + "dev": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ssri": { "version": "12.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9165,6 +9367,7 @@ }, "node_modules/npm/node_modules/string-width": { "version": "4.2.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9179,6 +9382,7 @@ "node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9192,6 +9396,7 @@ }, "node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9204,6 +9409,7 @@ "node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9215,6 +9421,7 @@ }, "node_modules/npm/node_modules/supports-color": { "version": "9.4.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -9226,6 +9433,7 @@ }, "node_modules/npm/node_modules/tar": { "version": "6.2.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9242,6 +9450,7 @@ }, "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9253,6 +9462,7 @@ }, "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9264,6 +9474,7 @@ }, "node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -9272,16 +9483,19 @@ }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/treeverse": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -9290,6 +9504,7 @@ }, "node_modules/npm/node_modules/tuf-js": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9303,6 +9518,7 @@ }, "node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9315,6 +9531,7 @@ }, "node_modules/npm/node_modules/unique-filename": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9326,6 +9543,7 @@ }, "node_modules/npm/node_modules/unique-slug": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9337,11 +9555,13 @@ }, "node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9351,6 +9571,7 @@ }, "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9360,6 +9581,7 @@ }, "node_modules/npm/node_modules/validate-npm-package-name": { "version": "6.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -9368,11 +9590,13 @@ }, "node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/which": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9387,6 +9611,7 @@ }, "node_modules/npm/node_modules/which/node_modules/isexe": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -9395,6 +9620,7 @@ }, "node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9412,6 +9638,7 @@ "node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9428,6 +9655,7 @@ }, "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9442,6 +9670,7 @@ }, "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.1.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -9453,11 +9682,13 @@ }, "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9474,6 +9705,7 @@ }, "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9488,6 +9720,7 @@ }, "node_modules/npm/node_modules/write-file-atomic": { "version": "6.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9500,11 +9733,10 @@ }, "node_modules/npm/node_modules/yallist": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -9525,18 +9757,16 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -9547,11 +9777,11 @@ "wrappy": "1" } }, -<<<<<<< HEAD "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -9567,6 +9797,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -9579,6 +9810,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "dev": true, "license": "MIT", "dependencies": { "p-map": "^7.0.1" @@ -9594,6 +9826,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9603,6 +9836,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^1.0.0" @@ -9615,6 +9849,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^1.1.0" @@ -9627,6 +9862,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -9639,6 +9875,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9648,13 +9885,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/pac-proxy-agent": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", @@ -9703,11 +9939,11 @@ "dev": true, "license": "(MIT AND Zlib)" }, -<<<<<<< HEAD "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -9720,6 +9956,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -9738,6 +9975,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -9746,8 +9984,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/parse5": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", @@ -9761,11 +9997,11 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, -<<<<<<< HEAD "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, "license": "MIT", "dependencies": { "parse5": "^6.0.1" @@ -9775,10 +10011,9 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/parse5-parser-stream": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", @@ -9792,18 +10027,16 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, -<<<<<<< HEAD "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -9818,6 +10051,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9854,18 +10088,16 @@ "dev": true, "license": "ISC" }, -<<<<<<< HEAD "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/pathe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", @@ -9894,12 +10126,14 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -9908,11 +10142,11 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, -<<<<<<< HEAD "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -9922,6 +10156,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, "license": "MIT", "dependencies": { "find-up": "^2.0.0", @@ -9931,8 +10166,6 @@ "node": ">=4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/pkg-types": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", @@ -9989,11 +10222,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, -<<<<<<< HEAD "node_modules/pretty-ms": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dev": true, "license": "MIT", "dependencies": { "parse-ms": "^4.0.0" @@ -10005,8 +10238,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -10021,6 +10252,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, "license": "MIT" }, "node_modules/progress": { @@ -10033,15 +10265,13 @@ "node": ">=0.4.0" } }, -<<<<<<< HEAD "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, "license": "ISC" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/proxy-agent": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", @@ -10141,6 +10371,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -10164,11 +10395,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", @@ -10180,8 +10411,6 @@ "rc": "cli.js" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -10189,11 +10418,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/read-package-up": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", + "dev": true, "license": "MIT", "dependencies": { "find-up-simple": "^1.0.0", @@ -10211,6 +10440,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.3", @@ -10230,6 +10460,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.13", @@ -10243,12 +10474,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -10293,11 +10523,11 @@ "node": ">=10" } }, -<<<<<<< HEAD "node_modules/registry-auth-token": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.3.tgz", "integrity": "sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==", + "dev": true, "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" @@ -10306,12 +10536,11 @@ "node": ">=14" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10345,18 +10574,16 @@ "url": "https://github.com/sponsors/ljharb" } }, -<<<<<<< HEAD "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", @@ -10371,6 +10598,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -10434,6 +10662,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -10467,6 +10696,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, "license": "MIT" }, "node_modules/safer-buffer": { @@ -10489,11 +10719,11 @@ "node": ">=v12.22.7" } }, -<<<<<<< HEAD "node_modules/semantic-release": { "version": "24.2.0", "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.0.tgz", "integrity": "sha512-fQfn6e/aYToRtVJYKqneFM1Rg3KP2gh3wSWtpYsLlz6uaPKlISrTzvYAFn+mYWo07F0X1Cz5ucU89AVE8X1mbg==", + "dev": true, "license": "MIT", "dependencies": { "@semantic-release/commit-analyzer": "^13.0.0-beta.1", @@ -10537,6 +10767,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -10546,6 +10777,7 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.1.tgz", "integrity": "sha512-Z9cr0LgU/zgucbT9cksH0/pX9zmVda9hkDPcgIE0uvjMQ8w/mElDivGjx1w1pEQ+MuQJ5CBq3VCF16S6G4VH3A==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/core": "^6.0.0", @@ -10576,6 +10808,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -10588,6 +10821,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", @@ -10604,6 +10838,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" @@ -10619,6 +10854,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10631,6 +10867,7 @@ "version": "9.5.2", "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", @@ -10657,6 +10894,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, "license": "MIT", "dependencies": { "@sec-ant/readable-stream": "^0.4.1", @@ -10673,6 +10911,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10685,6 +10924,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.2.tgz", "integrity": "sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" @@ -10697,6 +10937,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18.18.0" @@ -10706,6 +10947,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10718,6 +10960,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -10730,12 +10973,14 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, "license": "ISC" }, "node_modules/semantic-release/node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^4.0.0", @@ -10752,6 +10997,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10764,6 +11010,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10776,6 +11023,7 @@ "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" @@ -10788,6 +11036,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -10800,6 +11049,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -10808,12 +11058,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10822,11 +11071,11 @@ "node": ">=10" } }, -<<<<<<< HEAD "node_modules/semver-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -10842,6 +11091,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10850,8 +11100,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/serialize-error": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", @@ -10892,6 +11140,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -10904,6 +11153,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10916,17 +11166,18 @@ "dev": true, "license": "ISC" }, -<<<<<<< HEAD "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, "license": "ISC" }, "node_modules/signale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^2.3.2", @@ -10941,6 +11192,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -10953,6 +11205,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -10967,6 +11220,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -10976,12 +11230,14 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, "license": "MIT" }, "node_modules/signale/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -10991,6 +11247,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" @@ -11003,6 +11260,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11012,6 +11270,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -11020,8 +11279,6 @@ "node": ">=4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", @@ -11037,11 +11294,11 @@ "node": ">= 10" } }, -<<<<<<< HEAD "node_modules/skin-tone": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, "license": "MIT", "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" @@ -11054,6 +11311,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -11062,8 +11320,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -11109,8 +11365,8 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", - "optional": true, "engines": { "node": ">=0.10.0" } @@ -11142,17 +11398,18 @@ ], "license": "Apache-2.0" }, -<<<<<<< HEAD "node_modules/spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", + "dev": true, "license": "MIT" }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -11163,12 +11420,14 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", @@ -11179,19 +11438,19 @@ "version": "3.0.20", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, "license": "CC0-1.0" }, "node_modules/split2": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dev": true, "license": "ISC", "dependencies": { "through2": "~2.0.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", @@ -11213,19 +11472,17 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, "license": "MIT", "dependencies": { "duplexer2": "~0.1.0", "readable-stream": "^2.0.2" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/streamx": { "version": "2.21.1", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", @@ -11245,6 +11502,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -11254,6 +11512,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -11284,6 +11543,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -11320,16 +11580,17 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, -<<<<<<< HEAD "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11339,6 +11600,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11348,13 +11610,12 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/strip-literal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", @@ -11382,11 +11643,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/super-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "dev": true, "license": "MIT", "dependencies": { "function-timeout": "^1.0.1", @@ -11399,12 +11660,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -11413,11 +11673,11 @@ "node": ">=8" } }, -<<<<<<< HEAD "node_modules/supports-hyperlinks": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0", @@ -11430,8 +11690,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -11479,11 +11737,11 @@ "streamx": "^2.15.0" } }, -<<<<<<< HEAD "node_modules/temp-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -11493,6 +11751,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, "license": "MIT", "dependencies": { "is-stream": "^3.0.0", @@ -11511,6 +11770,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -11523,6 +11783,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" @@ -11531,8 +11792,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -11558,11 +11817,11 @@ "b4a": "^1.6.4" } }, -<<<<<<< HEAD "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0" @@ -11572,6 +11831,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" @@ -11580,8 +11840,6 @@ "node": ">=0.8" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -11589,11 +11847,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", @@ -11604,6 +11862,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, "license": "MIT", "dependencies": { "convert-hrtime": "^5.0.0" @@ -11615,8 +11874,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -11648,6 +11905,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -11705,11 +11963,11 @@ "node": ">=18" } }, -<<<<<<< HEAD "node_modules/traverse": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -11718,8 +11976,6 @@ "url": "https://github.com/sponsors/ljharb" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -11781,11 +12037,11 @@ "node": ">=4" } }, -<<<<<<< HEAD "node_modules/type-fest": { "version": "4.30.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz", "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" @@ -11794,8 +12050,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/typedoc": { "version": "0.27.5", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.5.tgz", @@ -11916,7 +12170,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -11940,11 +12194,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, "license": "BSD-2-Clause", "optional": true, "bin": { @@ -11954,8 +12208,6 @@ "node": ">=0.8.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -11984,11 +12236,11 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11998,6 +12250,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -12010,6 +12263,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" @@ -12025,14 +12279,14 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "dev": true, "license": "ISC" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -12069,18 +12323,16 @@ "browserslist": ">= 4.21.0" } }, -<<<<<<< HEAD "node_modules/url-join": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -12113,6 +12365,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, "license": "MIT" }, "node_modules/uuid": { @@ -12136,19 +12389,17 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/vite": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", @@ -13289,6 +13540,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -13317,19 +13569,18 @@ "node": ">=8" } }, -<<<<<<< HEAD "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, "license": "MIT" }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -13382,6 +13633,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13439,22 +13691,21 @@ "dev": true, "license": "MIT" }, -<<<<<<< HEAD "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.4" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -13484,6 +13735,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -13502,6 +13754,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -13551,11 +13804,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -<<<<<<< HEAD "node_modules/yoctocolors": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -13564,8 +13817,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> 24359ac (fix: upgrade wasm) "node_modules/zip-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", diff --git a/package.json b/package.json index bd14264..3902a2c 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "prepublishOnly": "npm run build" }, "devDependencies": { + "@esbuild-plugins/node-resolve": "^0.2.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.0", "@semantic-release/exec": "^6.0.3", @@ -49,10 +50,7 @@ "@semantic-release/github": "^10.3.5", "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.2", - "semantic-release": "^24.2.0", - "webdriverio": "^9.0.9", - "@trust0/ridb-wasm": "^1.0.3", - "@esbuild-plugins/node-resolve": "^0.2.2", + "@trust0/ridb-wasm": "file:../ridb-wasm/pkg", "@types/node": "^20.14.2", "@vitest/browser": "^1.6.0", "@vitest/coverage-istanbul": "^1.6.0", @@ -60,7 +58,8 @@ "esbuild": "0.21.5", "esbuild-plugin-wasm": "^1.1.0", "esbuild-plugin-wasm-pack": "^1.1.0", - "jsdom": "^24.1.0", + "jsdom": "^24.1.3", + "semantic-release": "^24.2.0", "ts-node": "^10.9.2", "typedoc": "^0.27.5", "typedoc-plugin-external-module-map": "^2.1.0", @@ -71,6 +70,7 @@ "uuid": "^11.0.3", "vite-plugin-top-level-await": "^1.4.1", "vite-plugin-wasm": "^3.3.0", - "vitest": "^1.6.0" + "vitest": "^1.6.0", + "webdriverio": "^9.0.9" } } diff --git a/test.sh b/test.sh index 079da0d..c420b74 100644 --- a/test.sh +++ b/test.sh @@ -2,6 +2,9 @@ set -e # Exit on any error # Initialize variables ENVIRONMENT="" +# Define test environment options +NODE_ENV="--environment node --run" +BROWSER_ENV="--environment jsdom --browser --browser.name=chrome --run" # Parse command-line options while getopts e: option @@ -28,9 +31,6 @@ if [ -z "$ENVIRONMENT" ]; then exit 0 fi -# Define test environment options -NODE_ENV="--environment node --run" -BROWSER_ENV="--environment jsdom --browser --browser.name=chrome --run" # Check which environment to test based on the options provided if [ "$ENVIRONMENT" = "node" ]; then diff --git a/tests/browser.test.ts b/tests/browser.test.ts index 27d36b7..9003e3d 100644 --- a/tests/browser.test.ts +++ b/tests/browser.test.ts @@ -1,3 +1,4 @@ + import Shared from './shared'; import { StorageType } from '..'; diff --git a/tests/performance-browser.test.ts b/tests/performance-browser.test.ts deleted file mode 100644 index 26c1121..0000000 --- a/tests/performance-browser.test.ts +++ /dev/null @@ -1,8 +0,0 @@ - -import Shared from './shared'; -import { StorageType } from '..'; - -Shared.runPerformanceTests([Shared.TestPlatform.BROWSER], [ - {name: "InMemory", storage: StorageType.InMemory}, - {name: "IndexDB", storage: StorageType.IndexDB} -]) diff --git a/tests/performance-node.test.ts b/tests/performance-node.test.ts deleted file mode 100644 index 6455f7e..0000000 --- a/tests/performance-node.test.ts +++ /dev/null @@ -1,8 +0,0 @@ -import Shared from './shared'; - -import { StorageType } from '..'; - -Shared.runPerformanceTests( - [Shared.TestPlatform.NODE], - [{name: "InMemory", storage: StorageType.InMemory}] -) diff --git a/tests/shared.ts b/tests/shared.ts index 3bc368f..8aa018b 100644 --- a/tests/shared.ts +++ b/tests/shared.ts @@ -2,16 +2,11 @@ import { StorageType } from '..'; import { default as Schemas } from './test/schemas.test'; -import { default as Performance } from './test/performance.test'; const Tests = { Schemas } -const PerformanceTests = { - Performance -} const suites = Object.values(Tests); -const performanceSuites = Object.values(PerformanceTests); export enum TestPlatform { BROWSER = "BROWSER", @@ -31,16 +26,7 @@ export async function runTests(platforms:TestPlatform[], storages:StoragesType[] }) } -export async function runPerformanceTests(platforms:TestPlatform[], storages:StoragesType[] ): Promise { - platforms.forEach(platform => { - performanceSuites.forEach(suite => { - suite(platform, storages) - }) - }) -} - export default { TestPlatform, - runTests, - runPerformanceTests + runTests } \ No newline at end of file diff --git a/tests/test/performance.test.ts b/tests/test/performance.test.ts deleted file mode 100644 index 4783ad8..0000000 --- a/tests/test/performance.test.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { describe, it, expect } from 'vitest'; -import { v4 as uuidv4 } from 'uuid'; -import { SchemaFieldType, RIDB } from '../..'; -import { StoragesType } from '../shared'; - - -export default (platform: string, storages: StoragesType[]) => { - - return describe(`[${platform}] Testing`, () => { - - storages.forEach(({ name, storage }) => { - describe(`[${platform}][${storage ? 'Typescript' : 'Wasm'} ${name}] Testing Storage`, () => { - it('Performance test: Create records', async () => { - const db = new RIDB({ - dbName: "test" + uuidv4(), - schemas: { - demo: { - version: 0, - primaryKey: 'id', - type: SchemaFieldType.object, - properties: { - id: { - type: SchemaFieldType.string, - maxLength: 60 - }, - name: { - type: SchemaFieldType.string, - maxLength: 100 - } - } - } - } as const - }); - - await db.start({ - storageType: storage, - password: "test" - }); - - const recordCounts = [100, 1000, 10000]; // Different record counts - for (const count of recordCounts) { - const records: typeof db['schemas']['demo'][] = []; - for (let i = 0; i < count; i++) { - records.push({ id: `id_${i}`, name: `name_${i}` }); - } - - const startTime = performance.now(); - - for (const record of records) { - await db.collections.demo.create(record); - } - - const endTime = performance.now(); - console.log(`Time to create ${count} records on ${name}: ${endTime - startTime} ms`); - } - }, {timeout: 100000}); - - it('Performance test: Query records', async () => { - const db = new RIDB({ - dbName: "test" + uuidv4(), - schemas: { - demo: { - version: 0, - primaryKey: 'id', - type: SchemaFieldType.object, - properties: { - id: { - type: SchemaFieldType.string, - maxLength: 60 - }, - name: { - type: SchemaFieldType.string, - maxLength: 100 - }, - value: { - type: SchemaFieldType.number - } - } - } - } as const - }); - - await db.start({ - storageType: storage, - password: "test" - }); - - // Insert records for querying - const totalRecords = 10000; - for (let i = 0; i < totalRecords; i++) { - await db.collections.demo.create({ - id: `id_${i}`, - name: `name_${i}`, - value: i - }); - } - - const queryCounts = [100, 1000, 5000]; // Different query sizes - - for (const qCount of queryCounts) { - const startTime = performance.now(); - - const results = await db.collections.demo.find({ - value: { - $lt: qCount - } - }); - - const endTime = performance.now(); - console.log(`Time to query ${qCount} records on ${name}: ${endTime - startTime} ms`); - expect(results.length).to.eq(qCount); - } - }, {timeout: 100000}); - }) - }) - }); -} \ No newline at end of file From d30da67befe324ff45ec9d04da2d3b3b7b498e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 00:50:49 +0100 Subject: [PATCH 04/35] fix: improving types and fixing the code to enable external storage implementation (level) --- build.sh | 1 - esbuild.config.mjs | 6 +- examples/node/index.cjs | 120 ------------ examples/node/index.mjs | 96 +--------- examples/node/node_modules/.package-lock.json | 55 ++++++ examples/node/node_modules/@trust0/ridb | 1 + examples/node/package-lock.json | 41 ++-- examples/node/package.json | 5 +- package-lock.json | 179 +++++++++++++++++- package.json | 3 + src/index.ts | 28 +-- tsconfig.json | 3 +- 12 files changed, 279 insertions(+), 259 deletions(-) delete mode 100644 examples/node/index.cjs create mode 100644 examples/node/node_modules/.package-lock.json create mode 120000 examples/node/node_modules/@trust0/ridb diff --git a/build.sh b/build.sh index 0a877f8..567ab81 100644 --- a/build.sh +++ b/build.sh @@ -11,4 +11,3 @@ rm -rf build && node esbuild.config.mjs npx dts-bundle-generator src/index.ts --no-check -o ./build/index.d.ts npx dts-bundle-generator src/index.ts --no-check -o ./build/esm/index.d.ts npx dts-bundle-generator src/index.ts --no-check -o ./build/cjs/index.d.ts - diff --git a/esbuild.config.mjs b/esbuild.config.mjs index 041f255..b703d43 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -58,7 +58,8 @@ const generic = { // Build ES module esbuild.build({ ...generic, - outfile:"build/esm/index.mjs", + outdir:"build/esm", + outExtension: { ".js": ".mjs" }, target: ['esnext'], format: 'esm', plugins: [ @@ -68,7 +69,8 @@ esbuild.build({ }).then(() => { esbuild.build({ ...generic, - outfile:"build/cjs/index.cjs", + outdir:"build/cjs", + outExtension: { ".js": ".cjs" }, target: ['es6'], format: 'cjs', plugins: [ diff --git a/examples/node/index.cjs b/examples/node/index.cjs deleted file mode 100644 index b401821..0000000 --- a/examples/node/index.cjs +++ /dev/null @@ -1,120 +0,0 @@ -/// -/// - -const { - RIDB, -} = require('@trust0/ridb'); - -const SDK = require("@hyperledger/identus-edge-agent-sdk"); - -const mediatorDID = SDK.Domain.DID.fromString( - "did:peer:2.Ez6LSghwSE437wnDE1pt3X6hVDUQzSjsHzinpX3XFvMjRAm7y.Vz6Mkhh1e5CEYYq6JBUcTZ6Cp2ranCWRrv7Yax3Le4N59R6dd.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjEuNDQ6ODA4MCIsImEiOlsiZGlkY29tbS92MiJdfX0.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6IndzOi8vMTkyLjE2OC4xLjQ0OjgwODAvd3MiLCJhIjpbImRpZGNvbW0vdjIiXX19" -); - -(async () => { - - class RIDBStore { - /** @type {RIDB} */ - _db = null - - get collections() { - return this._db.collections - } - - async start() { - const db = new RIDB( - { - schemas:{ - 'credentials': SDK.Models.CredentialSchema, - 'credentialMetadata': SDK.Models.CredentialMetadataSchema, - 'didkeyLink': SDK.Models.DIDKeyLinkSchema, - 'didLink': SDK.Models.DIDLinkSchema, - 'dids': SDK.Models.DIDSchema, - 'keys': SDK.Models.KeySchema, - 'messages': SDK.Models.MessageSchema - } - } - ) - await db.start() - this._db = db; - } - - async update(name, model) { - const collection = this.collections[name] - await collection.update(model) - } - - async delete(name, uuid) { - const collection = this.collections[name] - await collection.remove(uuid) - } - - async query(name, query) { - const collection = this.collections[name] - const queryResponse = await collection.find(query.selector) - return queryResponse - } - - async insert(name, data) { - const collection = this.collections[name] - const queryResponse = await collection.create(data); - return queryResponse - } - - async cleanup() { - throw new Error("Not implemented") - } - - async clear() { - throw new Error("Not implemented") - } - } - - const apollo = new SDK.Apollo(); - const castor = new SDK.Castor(apollo); - const pluto = new SDK.Pluto( - new RIDBStore(), - apollo - ); - const mediationStore = new SDK.PublicMediatorStore(pluto); - const api = new SDK.ApiImpl(); - const seed = apollo.createRandomSeed().seed; - const didcomm = new SDK.DIDCommWrapper(apollo, castor, pluto); - const mercury = new SDK.Mercury(castor, didcomm, api); - const pollux = new SDK.Pollux(apollo, castor); - - await pollux.start(); - - await pollux.anoncreds.createLinksecret() - - const handler = new SDK.BasicMediatorHandler(mediatorDID, mercury, mediationStore); - const manager = new SDK.ConnectionsManager( - castor, - mercury, - pluto, - pollux, - handler - ); - - const agent = new SDK.Agent( - apollo, - castor, - pluto, - mercury, - handler, - manager, - seed - ); - - console.log("Starting the database") - - agent.addListener(SDK.ListenerKey.MESSAGE, (messages) => { - - console.log(messages); - debugger - }) - - await agent.start() - console.log("Ok :)") - -})() diff --git a/examples/node/index.mjs b/examples/node/index.mjs index ad4c130..00bd577 100644 --- a/examples/node/index.mjs +++ b/examples/node/index.mjs @@ -1,95 +1,5 @@ -/// -/** @type {SDK} */ -import SDK from '@hyperledger/identus-edge-agent-sdk' -import {RIDB} from '@trust0/ridb'; +import { IndexDB } from "@trust0/ridb/storage/IndexDB"; +console.log(IndexDB); -(async () => { - - class RIDBStore { - _db = null - - get collections() { - return this._db.collections - } - - async start() { - const db = new RIDB( - { - schemas:{ - 'credentials': SDK.Models.CredentialSchema, - 'credentialMetadata': SDK.Models.CredentialMetadataSchema, - 'didkeyLink': SDK.Models.DIDKeyLinkSchema, - 'didLink': SDK.Models.DIDLinkSchema, - 'dids': SDK.Models.DIDSchema, - 'keys': SDK.Models.KeySchema, - 'messages': SDK.Models.MessageSchema - } - } - ) - await db.start() - this._db = db; - } - - async update(name, model) { - const collection = this.collections[name] - await collection.update(model) - } - - async delete(name, uuid) { - const collection = this.collections[name] - await collection.remove(uuid) - } - - async query(name, query = {}) { - const collection = this.collections[name] - return collection.find(query?.selector || query) - } - - async insert(name, data) { - const collection = this.collections[name] - return collection.create(data) - } - - async cleanup() { - throw new Error("Not implemented") - } - - async clear() { - throw new Error("Not implemented") - } - } - const apollo = new SDK.Apollo(); - const castor = new SDK.Castor(apollo); - const pluto = new SDK.Pluto( - new RIDBStore(), - apollo - ); - const mediatorDID = "did:peer:2.Ez6LSghwSE437wnDE1pt3X6hVDUQzSjsHzinpX3XFvMjRAm7y.Vz6Mkhh1e5CEYYq6JBUcTZ6Cp2ranCWRrv7Yax3Le4N59R6dd.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjEuNDQ6ODA4MCIsImEiOlsiZGlkY29tbS92MiJdfX0.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6IndzOi8vMTkyLjE2OC4xLjQ0OjgwODAvd3MiLCJhIjpbImRpZGNvbW0vdjIiXX19"; - const seed = apollo.createRandomSeed().seed; - const agent = SDK.Agent.initialize( - { - mediatorDID, - apollo, - castor, - pluto, - seed, - } - ); - agent.addListener(SDK.ListenerKey.MESSAGE, async (messages) => { - console.log(messages); - agent.stop() - }) - console.log("Starting the agent") - await agent.start() - console.log("Ok :)") - const secondaryDID = await agent.createNewPeerDID([], true); - const message = new SDK.BasicMessage( - { content: "Test Message" }, - secondaryDID, - secondaryDID, - ); - console.log("Sending message") - await agent.sendMessage(message.makeMessage()); - console.log("OK") -})() +debugger; \ No newline at end of file diff --git a/examples/node/node_modules/.package-lock.json b/examples/node/node_modules/.package-lock.json new file mode 100644 index 0000000..13d8ff0 --- /dev/null +++ b/examples/node/node_modules/.package-lock.json @@ -0,0 +1,55 @@ +{ + "name": "node", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "../..": { + "name": "@trust0/ridb", + "version": "0.10.1", + "license": "Apache-2.0", + "devDependencies": { + "@esbuild-plugins/node-resolve": "^0.2.2", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^10.3.5", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.2", + "@trust0/ridb-wasm": "file:../ridb-wasm/pkg", + "@types/node": "^20.14.2", + "@vitest/browser": "^1.6.0", + "@vitest/coverage-istanbul": "^1.6.0", + "@vitest/ui": "^1.6.0", + "esbuild": "0.21.5", + "esbuild-plugin-wasm": "^1.1.0", + "esbuild-plugin-wasm-pack": "^1.1.0", + "jsdom": "^24.1.3", + "semantic-release": "^24.2.0", + "ts-node": "^10.9.2", + "typedoc": "^0.27.5", + "typedoc-plugin-external-module-map": "^2.1.0", + "typedoc-plugin-markdown": "^4.3.3", + "typedoc-plugin-rename-defaults": "^0.7.2", + "typedoc-theme-hierarchy": "^5.0.4", + "typescript": "^5.4.5", + "uuid": "^11.0.3", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0", + "vitest": "^1.6.0", + "webdriverio": "^9.0.9" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "classic-level": "^2.0.0" + } + }, + "node_modules/@trust0/ridb": { + "resolved": "../..", + "link": true + } + } +} diff --git a/examples/node/node_modules/@trust0/ridb b/examples/node/node_modules/@trust0/ridb new file mode 120000 index 0000000..c866b86 --- /dev/null +++ b/examples/node/node_modules/@trust0/ridb @@ -0,0 +1 @@ +../../../.. \ No newline at end of file diff --git a/examples/node/package-lock.json b/examples/node/package-lock.json index d4ccd9e..4ef39b3 100644 --- a/examples/node/package-lock.json +++ b/examples/node/package-lock.json @@ -1,21 +1,20 @@ { - "name": "examples", + "name": "node", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "examples", + "name": "node", "version": "1.0.0", "license": "ISC", "dependencies": { - "@hyperledger/identus-edge-agent-sdk": "file:../../../iohk/atala-prism-wallet-sdk-ts", - "@trust0/ridb": "../" + "@trust0/ridb": "file:../.." } }, - "..": { + "../..": { "name": "@trust0/ridb", - "version": "0.4.0", + "version": "0.10.1", "license": "Apache-2.0", "devDependencies": { "@esbuild-plugins/node-resolve": "^0.2.2", @@ -23,9 +22,10 @@ "@semantic-release/commit-analyzer": "^13.0.0", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^10.3.3", + "@semantic-release/github": "^10.3.5", "@semantic-release/npm": "^12.0.1", - "@semantic-release/release-notes-generator": "^14.0.1", + "@semantic-release/release-notes-generator": "^14.0.2", + "@trust0/ridb-wasm": "file:../ridb-wasm/pkg", "@types/node": "^20.14.2", "@vitest/browser": "^1.6.0", "@vitest/coverage-istanbul": "^1.6.0", @@ -33,15 +33,16 @@ "esbuild": "0.21.5", "esbuild-plugin-wasm": "^1.1.0", "esbuild-plugin-wasm-pack": "^1.1.0", - "jsdom": "^24.1.0", - "semantic-release": "^24.1.1", + "jsdom": "^24.1.3", + "semantic-release": "^24.2.0", "ts-node": "^10.9.2", - "typedoc": "^0.26.11", + "typedoc": "^0.27.5", "typedoc-plugin-external-module-map": "^2.1.0", - "typedoc-plugin-markdown": "^4.2.10", - "typedoc-plugin-rename-defaults": "^0.7.1", - "typedoc-theme-hierarchy": "^5.0.3", + "typedoc-plugin-markdown": "^4.3.3", + "typedoc-plugin-rename-defaults": "^0.7.2", + "typedoc-theme-hierarchy": "^5.0.4", "typescript": "^5.4.5", + "uuid": "^11.0.3", "vite-plugin-top-level-await": "^1.4.1", "vite-plugin-wasm": "^3.3.0", "vitest": "^1.6.0", @@ -51,19 +52,11 @@ "node": ">=20" }, "peerDependencies": { - "@hyperledger/identus-edge-agent-sdk": "file:../../../iohk/atala-prism-wallet-sdk-ts" + "classic-level": "^2.0.0" } }, - "../../../iohk/atala-prism-wallet-sdk-ts": {}, - "iohk/atala-prism-wallet-sdk-ts": { - "extraneous": true - }, - "node_modules/@hyperledger/identus-edge-agent-sdk": { - "resolved": "../../../iohk/atala-prism-wallet-sdk-ts", - "link": true - }, "node_modules/@trust0/ridb": { - "resolved": "..", + "resolved": "../..", "link": true } } diff --git a/examples/node/package.json b/examples/node/package.json index fe4f15b..08cfa07 100644 --- a/examples/node/package.json +++ b/examples/node/package.json @@ -1,5 +1,5 @@ { - "name": "examples", + "name": "node", "version": "1.0.0", "main": "index.js", "scripts": { @@ -9,7 +9,6 @@ "license": "ISC", "description": "", "dependencies": { - "@trust0/ridb": "../", - "@hyperledger/identus-edge-agent-sdk": "file:../../../iohk/atala-prism-wallet-sdk-ts" + "@trust0/ridb": "file:../.." } } diff --git a/package-lock.json b/package-lock.json index c5b9747..dd3e69b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,9 @@ }, "engines": { "node": ">=20" + }, + "peerDependencies": { + "classic-level": "^2.0.0" } }, "../ridb-wasm": { @@ -49,7 +52,7 @@ }, "../ridb-wasm/pkg": { "name": "@trust0/ridb-wasm", - "version": "1.0.6", + "version": "1.0.10", "dev": true }, "node_modules/@ampproject/remapping": { @@ -2785,6 +2788,49 @@ "node": ">=6.5" } }, + "node_modules/abstract-level": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-2.0.2.tgz", + "integrity": "sha512-pPJixmXk/kTKLB2sSue7o4Uj6TlLD2XfaP2gWZomHVCC6cuUGX/VslQqKG1yZHfXwBb/3lS6oSTMPGzh1P1iig==", + "license": "MIT", + "peer": true, + "dependencies": { + "buffer": "^6.0.3", + "is-buffer": "^2.0.5", + "level-supports": "^6.0.0", + "level-transcoder": "^1.0.1", + "maybe-combine-errors": "^1.0.0", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/abstract-level/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -3259,7 +3305,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -3566,6 +3611,23 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/classic-level": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-2.0.0.tgz", + "integrity": "sha512-ftiMvKgCQK+OppXcvMieDoYlYLYWhScK6yZRFBrrlHQRbm4k6Gr+yDgu/wt3V0k1/jtNbuiXAsRmuAFcD0Tx5Q==", + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "abstract-level": "^2.0.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -5750,7 +5812,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -5923,6 +5984,30 @@ "dev": true, "license": "MIT" }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -6313,6 +6398,55 @@ "node": ">= 0.6.3" } }, + "node_modules/level-supports": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-6.1.1.tgz", + "integrity": "sha512-pqkPd9SFcxWDI11O4HSneobo4uXHQYN1DMqBGQXinFqm4jZr2cDBX72qM/SbKn/0RnOlQpxDoVSrpcDU8aJ7fQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "license": "MIT", + "peer": true, + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -6645,6 +6779,16 @@ "marked": ">=1 <15" } }, + "node_modules/maybe-combine-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/maybe-combine-errors/-/maybe-combine-errors-1.0.0.tgz", + "integrity": "sha512-eefp6IduNPT6fVdwPp+1NgD0PML1NU5P6j1Mj5nz1nidX8/sWY7119WL8vTAHgqfsY74TzW0w1XPgdYEKkGZ5A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", @@ -6791,6 +6935,16 @@ "ufo": "^1.5.4" } }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", @@ -6839,6 +6993,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "license": "MIT", + "peer": true + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -6918,6 +7079,18 @@ "url": "https://opencollective.com/node-fetch" } }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "peer": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", diff --git a/package.json b/package.json index 3902a2c..00e5735 100644 --- a/package.json +++ b/package.json @@ -72,5 +72,8 @@ "vite-plugin-wasm": "^3.3.0", "vitest": "^1.6.0", "webdriverio": "^9.0.9" + }, + "peerDependencies": { + "classic-level": "^2.0.0" } } diff --git a/src/index.ts b/src/index.ts index 0dd4542..b35776c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,10 +24,10 @@ // @ts-ignore import wasmBuffer from "@trust0/ridb-wasm/ridb_wasm_bg.wasm"; import * as RIDBTypes from "@trust0/ridb-wasm"; -export type { - // Enums +import { BaseStorage } from "@trust0/ridb-wasm"; +export { + BaseStorage, OpType, - // Classes Database, Collection, Schema, @@ -35,8 +35,6 @@ export type { Property, BasePlugin, StorageInternal, - BaseStorage, - // Types CreateStorage, RIDBModule, InternalsRecord, @@ -62,11 +60,6 @@ export type { SchemaTypeRecord } from "@trust0/ridb-wasm"; -export enum StorageType { - InMemory = "InMemory", - IndexDB = "IndexDB" -} - let internal: typeof import("@trust0/ridb-wasm") | undefined; /** @@ -151,8 +144,21 @@ let internal: typeof import("@trust0/ridb-wasm") | undefined; * @template T - The type of the schema record. */ +type StorageClass = { + create: ( + name: string, + schemas: T, + options: any + ) => Promise>; +} + +export enum StorageType { + InMemory = "InMemory", + IndexDB = "IndexDB" +} + export type StartOptions = { - storageType?: typeof RIDBTypes.BaseStorage | StorageType, + storageType?: StorageClass | StorageType, password?: string, [name: string]: any } diff --git a/tsconfig.json b/tsconfig.json index 3ec4de1..d3b6716 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,8 +18,7 @@ }, "include": [ - "src/**/*", - "node_modules/@trust0/ridb-wasm/**/*" + "src/**/*" ], "exclude": ["node_modules", "dist"] } From 2d769a01327f6a2fd65d4318c1d93ce5c3a0d1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 13:54:29 +0100 Subject: [PATCH 05/35] fix: monorepo --- .changeset/README.md | 8 + .changeset/config.json | 11 + .github/workflows/release.yml | 3 +- .gitignore | 3 +- CHANGELOG.md | 663 --- build.sh | 13 - docs/README.md | 19 +- docs/classes/Collection.md | 38 +- docs/classes/Database.md | 38 +- docs/classes/Property.md | 34 +- docs/classes/Schema.md | 24 +- docs/enumerations/OpType.md | 12 +- docs/type-aliases/CreateStorage.md | 8 +- docs/type-aliases/Doc.md | 6 +- docs/type-aliases/ExtractType.md | 4 +- docs/type-aliases/Operation.md | 4 +- docs/type-aliases/RIDBModule.md | 8 +- docs/type-aliases/SchemaType.md | 4 +- docs/type-aliases/SchemaTypeRecord.md | 4 +- docs/variables/SchemaFieldType.md | 2 +- package-lock.json | 1737 ++++++-- package.json | 48 +- packages/ridb/build/cjs/index.cjs | 2733 ++++++++++++ packages/ridb/build/cjs/index.d.ts | 586 +++ packages/ridb/build/esm/index.d.ts | 586 +++ packages/ridb/build/esm/index.mjs | 2684 +++++++++++ packages/ridb/build/index.d.ts | 586 +++ .../ridb/esbuild.config.mjs | 0 .../ridb/examples}/node/index.mjs | 0 .../node/node_modules/.package-lock.json | 0 .../examples}/node/node_modules/@trust0/ridb | 0 .../ridb/examples}/node/package-lock.json | 0 .../ridb/examples}/node/package.json | 0 .../ridb/examples}/web/.gitignore | 0 .../ridb/examples}/web/README.md | 0 .../ridb/examples}/web/eslint.config.mjs | 0 .../ridb/examples}/web/next.config.ts | 0 .../ridb/examples}/web/package-lock.json | 0 .../ridb/examples}/web/package.json | 0 .../ridb/examples}/web/postcss.config.mjs | 0 .../ridb/examples}/web/public/file.svg | 0 .../ridb/examples}/web/public/globe.svg | 0 .../ridb/examples}/web/public/next.svg | 0 .../ridb/examples}/web/public/vercel.svg | 0 .../ridb/examples}/web/public/window.svg | 0 .../ridb/examples}/web/src/app/favicon.ico | Bin .../ridb/examples}/web/src/app/globals.css | 0 .../ridb/examples}/web/src/app/layout.tsx | 0 .../ridb/examples}/web/src/app/page.tsx | 0 .../ridb/examples}/web/tailwind.config.ts | 0 .../ridb/examples}/web/tsconfig.json | 0 .../node_modules/.vite/deps/_metadata.json | 79 + .../ridb/node_modules/.vite/deps/buffer.js | 1793 ++++++++ .../node_modules/.vite/deps/buffer.js.map | 7 + .../node_modules/.vite/deps/chunk-5WRI5ZAA.js | 31 + .../.vite/deps/chunk-5WRI5ZAA.js.map | 7 + .../node_modules/.vite/deps/chunk-UCU27OGC.js | 1333 ++++++ .../.vite/deps/chunk-UCU27OGC.js.map | 7 + .../node_modules/.vite/deps/chunk-UJ726J2L.js | 145 + .../.vite/deps/chunk-UJ726J2L.js.map | 7 + .../ridb/node_modules/.vite/deps/package.json | 3 + packages/ridb/node_modules/.vite/deps/uuid.js | 528 +++ .../ridb/node_modules/.vite/deps/uuid.js.map | 7 + ...itest___@vitest_snapshot___magic-string.js | 1640 +++++++ ...t___@vitest_snapshot___magic-string.js.map | 7 + ...test___@vitest_snapshot___pretty-format.js | 7 + ...___@vitest_snapshot___pretty-format.js.map | 7 + .../vitest___@vitest_utils___pretty-format.js | 7 + ...est___@vitest_utils___pretty-format.js.map | 7 + .../node_modules/.vite/deps/vitest___chai.js | 3946 +++++++++++++++++ .../.vite/deps/vitest___chai.js.map | 7 + .../.vite/deps/vitest___diff-sequences.js | 485 ++ .../.vite/deps/vitest___diff-sequences.js.map | 7 + .../.vite/deps/vitest___pretty-format.js | 7 + .../.vite/deps/vitest___pretty-format.js.map | 7 + .../vitest___pretty-format___ansi-regex.js | 15 + ...vitest___pretty-format___ansi-regex.js.map | 7 + .../vitest___pretty-format___ansi-styles.js | 6 + ...itest___pretty-format___ansi-styles.js.map | 7 + .../node_modules/.vite/vitest/results.json | 1 + packages/ridb/node_modules/@trust0/ridb-wasm | 1 + packages/ridb/package.json | 49 + .../ridb/release.config.js | 0 {src => packages/ridb/src}/index.ts | 0 test.sh => packages/ridb/test.sh | 0 .../ridb/tests}/browser.test.ts | 0 {tests => packages/ridb/tests}/node.test.ts | 0 {tests => packages/ridb/tests}/setup.ts | 0 {tests => packages/ridb/tests}/shared.ts | 0 .../ridb/tests}/test/schemas.test.ts | 0 packages/ridb/tsconfig.json | 12 + .../ridb/vitest.config.ts | 0 performance.sh | 50 - publish.sh | 33 - tsconfig.json => tsconfig.base.json | 6 +- turbo.json | 21 + typedoc.json | 5 +- 97 files changed, 18948 insertions(+), 1212 deletions(-) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json delete mode 100644 CHANGELOG.md delete mode 100644 build.sh create mode 100644 packages/ridb/build/cjs/index.cjs create mode 100644 packages/ridb/build/cjs/index.d.ts create mode 100644 packages/ridb/build/esm/index.d.ts create mode 100644 packages/ridb/build/esm/index.mjs create mode 100644 packages/ridb/build/index.d.ts rename esbuild.config.mjs => packages/ridb/esbuild.config.mjs (100%) rename {examples => packages/ridb/examples}/node/index.mjs (100%) rename {examples => packages/ridb/examples}/node/node_modules/.package-lock.json (100%) rename {examples => packages/ridb/examples}/node/node_modules/@trust0/ridb (100%) rename {examples => packages/ridb/examples}/node/package-lock.json (100%) rename {examples => packages/ridb/examples}/node/package.json (100%) rename {examples => packages/ridb/examples}/web/.gitignore (100%) rename {examples => packages/ridb/examples}/web/README.md (100%) rename {examples => packages/ridb/examples}/web/eslint.config.mjs (100%) rename {examples => packages/ridb/examples}/web/next.config.ts (100%) rename {examples => packages/ridb/examples}/web/package-lock.json (100%) rename {examples => packages/ridb/examples}/web/package.json (100%) rename {examples => packages/ridb/examples}/web/postcss.config.mjs (100%) rename {examples => packages/ridb/examples}/web/public/file.svg (100%) rename {examples => packages/ridb/examples}/web/public/globe.svg (100%) rename {examples => packages/ridb/examples}/web/public/next.svg (100%) rename {examples => packages/ridb/examples}/web/public/vercel.svg (100%) rename {examples => packages/ridb/examples}/web/public/window.svg (100%) rename {examples => packages/ridb/examples}/web/src/app/favicon.ico (100%) rename {examples => packages/ridb/examples}/web/src/app/globals.css (100%) rename {examples => packages/ridb/examples}/web/src/app/layout.tsx (100%) rename {examples => packages/ridb/examples}/web/src/app/page.tsx (100%) rename {examples => packages/ridb/examples}/web/tailwind.config.ts (100%) rename {examples => packages/ridb/examples}/web/tsconfig.json (100%) create mode 100644 packages/ridb/node_modules/.vite/deps/_metadata.json create mode 100644 packages/ridb/node_modules/.vite/deps/buffer.js create mode 100644 packages/ridb/node_modules/.vite/deps/buffer.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js create mode 100644 packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js create mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js create mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/package.json create mode 100644 packages/ridb/node_modules/.vite/deps/uuid.js create mode 100644 packages/ridb/node_modules/.vite/deps/uuid.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___chai.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___chai.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js create mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map create mode 100644 packages/ridb/node_modules/.vite/vitest/results.json create mode 120000 packages/ridb/node_modules/@trust0/ridb-wasm create mode 100644 packages/ridb/package.json rename release.config.js => packages/ridb/release.config.js (100%) rename {src => packages/ridb/src}/index.ts (100%) rename test.sh => packages/ridb/test.sh (100%) rename {tests => packages/ridb/tests}/browser.test.ts (100%) rename {tests => packages/ridb/tests}/node.test.ts (100%) rename {tests => packages/ridb/tests}/setup.ts (100%) rename {tests => packages/ridb/tests}/shared.ts (100%) rename {tests => packages/ridb/tests}/test/schemas.test.ts (100%) create mode 100644 packages/ridb/tsconfig.json rename vitest.config.ts => packages/ridb/vitest.config.ts (100%) delete mode 100644 performance.sh delete mode 100644 publish.sh rename tsconfig.json => tsconfig.base.json (82%) create mode 100644 turbo.json diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..e5b6d8d --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..6b37255 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.5/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7c239e6..e00b697 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,5 +58,4 @@ jobs: GH_TOKEN: ${{ secrets.GH_SECRET }} run: | npm ci - npm run docs - npx semantic-release + npm run release diff --git a/.gitignore b/.gitignore index cbdd9fb..e430734 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ esm/* umd/* .idea coverage -build/* \ No newline at end of file +build/* +.turbo \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 222cd8a..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,663 +0,0 @@ -## [0.10.1](https://github.com/trust0-project/RIDB/compare/v0.10.0...v0.10.1) (2024-12-23) - - -### Bug Fixes - -* improve documentation ([8537f21](https://github.com/trust0-project/RIDB/commit/8537f217cf50f4758a5e2596a96d15f48892806f)) - -# [0.10.0](https://github.com/trust0-project/RIDB/compare/v0.9.0...v0.10.0) (2024-12-23) - - -### Bug Fixes - -* upgrade wasm ([f964a70](https://github.com/trust0-project/RIDB/commit/f964a7022dbc979a3be83e938a1b4df0cf43ab4a)) - - -### Features - -* split packages ([7e43973](https://github.com/trust0-project/RIDB/commit/7e439730b1ae575b172f32428ea381429e11a1f4)) - -# [0.10.0-rc.2](https://github.com/trust0-project/RIDB/compare/v0.10.0-rc.1...v0.10.0-rc.2) (2024-12-23) - - -### Bug Fixes - -* upgrade wasm ([f964a70](https://github.com/trust0-project/RIDB/commit/f964a7022dbc979a3be83e938a1b4df0cf43ab4a)) - -# [0.10.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.9.0...v0.10.0-rc.1) (2024-12-23) - - -### Features - -* split packages ([7e43973](https://github.com/trust0-project/RIDB/commit/7e439730b1ae575b172f32428ea381429e11a1f4)) - -# [0.9.0](https://github.com/trust0-project/RIDB/compare/v0.8.0...v0.9.0) (2024-12-23) - - -### Bug Fixes - -* improve types and restore commented tests ([2f40c32](https://github.com/trust0-project/RIDB/commit/2f40c3264b08ff975bd469909ecadf318785bb37)) -* setting default values plugin ([#31](https://github.com/trust0-project/RIDB/issues/31)) ([9c77a6d](https://github.com/trust0-project/RIDB/commit/9c77a6dc446ff7a99e5764ea7607d8855a1ee9aa)) - - -### Features - -* extract logic of setting the default values into defaults plugin + testing ([75f23d8](https://github.com/trust0-project/RIDB/commit/75f23d8c9e1cd91ebb1423f39d52ec7997708a83)) - -# [0.9.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.8.1-rc.1...v0.9.0-rc.1) (2024-12-23) - - -### Features - -* extract logic of setting the default values into defaults plugin + testing ([75f23d8](https://github.com/trust0-project/RIDB/commit/75f23d8c9e1cd91ebb1423f39d52ec7997708a83)) - -## [0.8.1-rc.1](https://github.com/trust0-project/RIDB/compare/v0.8.0...v0.8.1-rc.1) (2024-12-23) - - -### Bug Fixes - -* improve types and restore commented tests ([2f40c32](https://github.com/trust0-project/RIDB/commit/2f40c3264b08ff975bd469909ecadf318785bb37)) - -# [0.8.0](https://github.com/trust0-project/RIDB/compare/v0.7.0...v0.8.0) (2024-12-23) - - -### Bug Fixes - -* adding integrity check to ensure data has not been manipulated ([b7354ca](https://github.com/trust0-project/RIDB/commit/b7354ca18bd81ecc19e7a305abe2a903c87f93ef)) -* apply migrations on early finds on recover hook, count, etc ([a32458a](https://github.com/trust0-project/RIDB/commit/a32458a0c3f4d01e89ddff6e6645551682495b36)) - - -### Features - -* implementing new hashing, integrity check and encryption plugins with PBKDF2, AES-256-GCM and SHA3-512 ([33eef48](https://github.com/trust0-project/RIDB/commit/33eef485cf9cea504748a2018f79e9a1fdfd87c3)) - -# [0.8.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.7.1-rc.2...v0.8.0-rc.1) (2024-12-23) - - -### Features - -* implementing new hashing, integrity check and encryption plugins with PBKDF2, AES-256-GCM and SHA3-512 ([33eef48](https://github.com/trust0-project/RIDB/commit/33eef485cf9cea504748a2018f79e9a1fdfd87c3)) - -## [0.7.1-rc.2](https://github.com/trust0-project/RIDB/compare/v0.7.1-rc.1...v0.7.1-rc.2) (2024-12-23) - - -### Bug Fixes - -* adding integrity check to ensure data has not been manipulated ([b7354ca](https://github.com/trust0-project/RIDB/commit/b7354ca18bd81ecc19e7a305abe2a903c87f93ef)) - -## [0.7.1-rc.1](https://github.com/trust0-project/RIDB/compare/v0.7.0...v0.7.1-rc.1) (2024-12-22) - - -### Bug Fixes - -* apply migrations on early finds on recover hook, count, etc ([a32458a](https://github.com/trust0-project/RIDB/commit/a32458a0c3f4d01e89ddff6e6645551682495b36)) - -# [0.7.0](https://github.com/trust0-project/RIDB/compare/v0.6.5...v0.7.0) (2024-12-22) - - -### Bug Fixes - -* add sample browser implementation ([4e59c05](https://github.com/trust0-project/RIDB/commit/4e59c055d17e5dca6f67d79e5d05a17f6a520187)) - - -### Features - -* make indexdb re-usable on the same browser runtime ([6b15e62](https://github.com/trust0-project/RIDB/commit/6b15e62d6e3bd0006b5328f8aa44b37529df2304)) -* make inmemory storage reusable ([3a9d73f](https://github.com/trust0-project/RIDB/commit/3a9d73f44c9d35f53ff1e9990af6c539eda6d41c)) -* making indexdb, and inmemory re-usable ([#30](https://github.com/trust0-project/RIDB/issues/30)) ([19597be](https://github.com/trust0-project/RIDB/commit/19597beff5224cc2c80be8de9b30802eed2cca94)) - -# [0.7.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.6.5...v0.7.0-rc.1) (2024-12-22) - - -### Bug Fixes - -* add sample browser implementation ([4e59c05](https://github.com/trust0-project/RIDB/commit/4e59c055d17e5dca6f67d79e5d05a17f6a520187)) - - -### Features - -* make indexdb re-usable on the same browser runtime ([6b15e62](https://github.com/trust0-project/RIDB/commit/6b15e62d6e3bd0006b5328f8aa44b37529df2304)) -* make inmemory storage reusable ([3a9d73f](https://github.com/trust0-project/RIDB/commit/3a9d73f44c9d35f53ff1e9990af6c539eda6d41c)) - -## [0.6.5](https://github.com/trust0-project/RIDB/compare/v0.6.4...v0.6.5) (2024-11-14) - - -### Bug Fixes - -* indexdb and inmemory storage fixes ([#27](https://github.com/trust0-project/RIDB/issues/27)) ([f98a577](https://github.com/trust0-project/RIDB/commit/f98a577d9246e51e31489f32feeebc4dc46b4234)) -* indexdb issue with starting a database with different stores (potentially breaking it) ([341a989](https://github.com/trust0-project/RIDB/commit/341a989900c8653ebf625c4bc606829ac27e36c8)) -* issue with inmemory collection not storing indexes for each collection correctly ([aafa0a4](https://github.com/trust0-project/RIDB/commit/aafa0a4e35ab24f4f4303247ebb35abf44df4c1d)) - -## [0.6.5-rc.2](https://github.com/trust0-project/RIDB/compare/v0.6.5-rc.1...v0.6.5-rc.2) (2024-11-14) - - -### Bug Fixes - -* indexdb issue with starting a database with different stores (potentially breaking it) ([341a989](https://github.com/trust0-project/RIDB/commit/341a989900c8653ebf625c4bc606829ac27e36c8)) - -## [0.6.5-rc.1](https://github.com/trust0-project/RIDB/compare/v0.6.4...v0.6.5-rc.1) (2024-11-14) - - -### Bug Fixes - -* issue with inmemory collection not storing indexes for each collection correctly ([aafa0a4](https://github.com/trust0-project/RIDB/commit/aafa0a4e35ab24f4f4303247ebb35abf44df4c1d)) - -## [0.6.4](https://github.com/trust0-project/RIDB/compare/v0.6.3...v0.6.4) (2024-11-11) - - -### Bug Fixes - -* update docs and package exports ([f31eee2](https://github.com/trust0-project/RIDB/commit/f31eee21ea2e5ec2e472b329b6f7d4e1b393d129)) - -## [0.6.4-rc.1](https://github.com/trust0-project/RIDB/compare/v0.6.3...v0.6.4-rc.1) (2024-11-11) - - -### Bug Fixes - -* update docs and package exports ([f31eee2](https://github.com/trust0-project/RIDB/commit/f31eee21ea2e5ec2e472b329b6f7d4e1b393d129)) - -## [0.6.3](https://github.com/trust0-project/RIDB/compare/v0.6.2...v0.6.3) (2024-11-11) - - -### Bug Fixes - -* adding small improvements to support wider storage types ([40ed8d5](https://github.com/trust0-project/RIDB/commit/40ed8d59357a953586ebd45d7921b4ab107fcc2e)) -* small changes ([#26](https://github.com/trust0-project/RIDB/issues/26)) ([173025b](https://github.com/trust0-project/RIDB/commit/173025be8204a8a955238cf29bc16e1db3a0abb2)) - -## [0.6.3-rc.1](https://github.com/trust0-project/RIDB/compare/v0.6.2...v0.6.3-rc.1) (2024-11-11) - - -### Bug Fixes - -* adding small improvements to support wider storage types ([40ed8d5](https://github.com/trust0-project/RIDB/commit/40ed8d59357a953586ebd45d7921b4ab107fcc2e)) - -## [0.6.2](https://github.com/trust0-project/RIDB/compare/v0.6.1...v0.6.2) (2024-11-11) - - -### Bug Fixes - -* add simple db tests for indexdb and inmemory ([100bdf7](https://github.com/trust0-project/RIDB/commit/100bdf78d7bff228ba055681a36395791615b8da)) -* lint code ([2204f65](https://github.com/trust0-project/RIDB/commit/2204f6579090039d49456e1bd30f47c46bf5f5a8)) -* small database tests ([5394479](https://github.com/trust0-project/RIDB/commit/53944792e4ec5d0fd2ca25562ea80dc648217519)) -* test coverage and small doc improvements ([#25](https://github.com/trust0-project/RIDB/issues/25)) ([fc2dcce](https://github.com/trust0-project/RIDB/commit/fc2dcce18d022bb994af82e1682f812527e0c4c2)) - -## [0.6.2-rc.1](https://github.com/trust0-project/RIDB/compare/v0.6.1...v0.6.2-rc.1) (2024-11-11) - - -### Bug Fixes - -* add simple db tests for indexdb and inmemory ([100bdf7](https://github.com/trust0-project/RIDB/commit/100bdf78d7bff228ba055681a36395791615b8da)) -* lint code ([2204f65](https://github.com/trust0-project/RIDB/commit/2204f6579090039d49456e1bd30f47c46bf5f5a8)) -* small database tests ([5394479](https://github.com/trust0-project/RIDB/commit/53944792e4ec5d0fd2ca25562ea80dc648217519)) - -## [0.6.1](https://github.com/trust0-project/RIDB/compare/v0.6.0...v0.6.1) (2024-11-10) - - -### Bug Fixes - -* code improvements ([3524d68](https://github.com/trust0-project/RIDB/commit/3524d689a3c40c79ecee57b68faee4f77e3b0fa7)) - -## [0.6.1-rc.1](https://github.com/trust0-project/RIDB/compare/v0.6.0...v0.6.1-rc.1) (2024-11-10) - - -### Bug Fixes - -* code improvements ([3524d68](https://github.com/trust0-project/RIDB/commit/3524d689a3c40c79ecee57b68faee4f77e3b0fa7)) - -# [0.6.0](https://github.com/trust0-project/RIDB/compare/v0.5.0...v0.6.0) (2024-11-10) - - -### Bug Fixes - -* improve documentation and interface for external storages ([8c4b793](https://github.com/trust0-project/RIDB/commit/8c4b793ba15f02a81452c07c053d4448d3ba80a1)) -* port minor improvements in docs and exports ([#24](https://github.com/trust0-project/RIDB/issues/24)) ([c92fabb](https://github.com/trust0-project/RIDB/commit/c92fabb231f210471bdb3a83b1f794f3982c18f6)) - - -### Features - -* add start and stop methods for the Database ([b12151f](https://github.com/trust0-project/RIDB/commit/b12151fc8443f983328d23f66c8f373378406ad8)) - -# [0.6.0-rc.2](https://github.com/trust0-project/RIDB/compare/v0.6.0-rc.1...v0.6.0-rc.2) (2024-11-10) - - -### Bug Fixes - -* improve documentation and interface for external storages ([8c4b793](https://github.com/trust0-project/RIDB/commit/8c4b793ba15f02a81452c07c053d4448d3ba80a1)) - -# [0.6.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.5.0...v0.6.0-rc.1) (2024-11-10) - - -### Features - -* add start and stop methods for the Database ([b12151f](https://github.com/trust0-project/RIDB/commit/b12151fc8443f983328d23f66c8f373378406ad8)) - -# [0.5.0](https://github.com/trust0-project/RIDB/compare/v0.4.5...v0.5.0) (2024-11-10) - - -### Bug Fixes - -* code update ([eddf865](https://github.com/trust0-project/RIDB/commit/eddf865ee4d531503caa49a40c498dfeb3a60b61)) -* improve error handling in collections ([c584abf](https://github.com/trust0-project/RIDB/commit/c584abf57d8d6e51134f282086d066a8315f581d)) -* improve release config ([0cd02ae](https://github.com/trust0-project/RIDB/commit/0cd02ae3e34559b04d838414283e2318fa84fa3e)) -* indexdb improvement and test coverage ([4e6bc43](https://github.com/trust0-project/RIDB/commit/4e6bc431512c611dd1e409374a8a1ec96a931e89)) -* migration and encryption plugins for array of documents ([3fa3c01](https://github.com/trust0-project/RIDB/commit/3fa3c01c383ebe7221a8d1d0274385734eb89446)) -* remove library ([f2ed971](https://github.com/trust0-project/RIDB/commit/f2ed9711729bf8db8bf78b14948642f222e9698d)) -* remove peer dependencies ([e21661a](https://github.com/trust0-project/RIDB/commit/e21661a28c658ea366a3eaaf05f77a5ba6773521)) -* remove typings ([1def54c](https://github.com/trust0-project/RIDB/commit/1def54c2ceaa10e826fbbe73d50b7a5a11ce7f4e)) -* restore indexdb working version ([69251e1](https://github.com/trust0-project/RIDB/commit/69251e193f57c4a23a04cbb1df3a9de27b04e668)) -* wrapping up InMemory storage to support async creation for (indexdb) ([6fddda9](https://github.com/trust0-project/RIDB/commit/6fddda9d9705ffe0202fb8358ca723467faeb154)) - - -### Features - -* indexdb ([28afca7](https://github.com/trust0-project/RIDB/commit/28afca7734a683964a59f28972bc2630c7877ff6)) -* indexdb basic implementation ([f9513b0](https://github.com/trust0-project/RIDB/commit/f9513b0bdc92846c5ac5141875e32ab4435d3db0)) -* refactor ridb to simplify approach and create 1 instance for whole db, vs instance per collection ([c70bdf9](https://github.com/trust0-project/RIDB/commit/c70bdf98daf194ac69e0f3f9369f18e97af1d09a)) - -# [0.5.0-rc.7](https://github.com/trust0-project/RIDB/compare/v0.5.0-rc.6...v0.5.0-rc.7) (2024-11-10) - - -### Bug Fixes - -* remove library ([f2ed971](https://github.com/trust0-project/RIDB/commit/f2ed9711729bf8db8bf78b14948642f222e9698d)) - -# [0.5.0-rc.6](https://github.com/trust0-project/RIDB/compare/v0.5.0-rc.5...v0.5.0-rc.6) (2024-11-10) - - -### Bug Fixes - -* restore indexdb working version ([69251e1](https://github.com/trust0-project/RIDB/commit/69251e193f57c4a23a04cbb1df3a9de27b04e668)) - -# [0.5.0-rc.5](https://github.com/trust0-project/RIDB/compare/v0.5.0-rc.4...v0.5.0-rc.5) (2024-11-10) - - -### Features - -* refactor ridb to simplify approach and create 1 instance for whole db, vs instance per collection ([c70bdf9](https://github.com/trust0-project/RIDB/commit/c70bdf98daf194ac69e0f3f9369f18e97af1d09a)) - -# [0.5.0-rc.4](https://github.com/trust0-project/RIDB/compare/v0.5.0-rc.3...v0.5.0-rc.4) (2024-11-09) - - -### Bug Fixes - -* migration and encryption plugins for array of documents ([3fa3c01](https://github.com/trust0-project/RIDB/commit/3fa3c01c383ebe7221a8d1d0274385734eb89446)) - -# [0.5.0-rc.3](https://github.com/trust0-project/RIDB/compare/v0.5.0-rc.2...v0.5.0-rc.3) (2024-11-08) - - -### Features - -* indexdb ([28afca7](https://github.com/trust0-project/RIDB/commit/28afca7734a683964a59f28972bc2630c7877ff6)) - -# [0.5.0-rc.2](https://github.com/trust0-project/RIDB/compare/v0.5.0-rc.1...v0.5.0-rc.2) (2024-11-08) - - -### Bug Fixes - -* indexdb improvement and test coverage ([4e6bc43](https://github.com/trust0-project/RIDB/commit/4e6bc431512c611dd1e409374a8a1ec96a931e89)) - -# [0.5.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.4.6-rc.6...v0.5.0-rc.1) (2024-11-08) - - -### Features - -* indexdb basic implementation ([f9513b0](https://github.com/trust0-project/RIDB/commit/f9513b0bdc92846c5ac5141875e32ab4435d3db0)) - -## [0.4.6-rc.6](https://github.com/trust0-project/RIDB/compare/v0.4.6-rc.5...v0.4.6-rc.6) (2024-11-08) - - -### Bug Fixes - -* wrapping up InMemory storage to support async creation for (indexdb) ([6fddda9](https://github.com/trust0-project/RIDB/commit/6fddda9d9705ffe0202fb8358ca723467faeb154)) - -## [0.4.6-rc.5](https://github.com/trust0-project/RIDB/compare/v0.4.6-rc.4...v0.4.6-rc.5) (2024-11-08) - - -### Bug Fixes - -* improve error handling in collections ([c584abf](https://github.com/trust0-project/RIDB/commit/c584abf57d8d6e51134f282086d066a8315f581d)) - -## [0.4.6-rc.4](https://github.com/trust0-project/RIDB/compare/v0.4.6-rc.3...v0.4.6-rc.4) (2024-11-07) - - -### Bug Fixes - -* remove typings ([1def54c](https://github.com/trust0-project/RIDB/commit/1def54c2ceaa10e826fbbe73d50b7a5a11ce7f4e)) - -## [0.4.6-rc.3](https://github.com/trust0-project/RIDB/compare/v0.4.6-rc.2...v0.4.6-rc.3) (2024-11-07) - - -### Bug Fixes - -* remove peer dependencies ([e21661a](https://github.com/trust0-project/RIDB/commit/e21661a28c658ea366a3eaaf05f77a5ba6773521)) - -## [0.4.6-rc.2](https://github.com/trust0-project/RIDB/compare/v0.4.6-rc.1...v0.4.6-rc.2) (2024-11-07) - - -### Bug Fixes - -* code update ([eddf865](https://github.com/trust0-project/RIDB/commit/eddf865ee4d531503caa49a40c498dfeb3a60b61)) - -## [0.4.6-rc.1](https://github.com/trust0-project/RIDB/compare/v0.4.5...v0.4.6-rc.1) (2024-11-07) - - -### Bug Fixes - -* improve release config ([0cd02ae](https://github.com/trust0-project/RIDB/commit/0cd02ae3e34559b04d838414283e2318fa84fa3e)) - -## [0.4.5](https://github.com/trust0-project/RIDB/compare/v0.4.4...v0.4.5) (2024-11-05) - - -### Bug Fixes - -* code suggestions ([2cb7b48](https://github.com/trust0-project/RIDB/commit/2cb7b487d36d411ac4812dc3f94a4e7a03a45cb0)) -* correct example [skip-ci] ([176db1e](https://github.com/trust0-project/RIDB/commit/176db1ecc9834ba4ce9f8366e9c74f47582315d3)) -* improve docs ([349f96a](https://github.com/trust0-project/RIDB/commit/349f96a7189f07845de489afb6523849ae196660)) -* move docs improvements and small changes ([#20](https://github.com/trust0-project/RIDB/issues/20)) ([defee3d](https://github.com/trust0-project/RIDB/commit/defee3d79dc273f962b81c71bdcd92242cb0aa0b)) -* tests ([831d41d](https://github.com/trust0-project/RIDB/commit/831d41dc258d2d0272c7aea2dbba731e387ec3a3)) - -## [0.4.5-rc.4](https://github.com/trust0-project/RIDB/compare/v0.4.5-rc.3...v0.4.5-rc.4) (2024-11-05) - - -### Bug Fixes - -* adding storage doc class reference ([cae907c](https://github.com/trust0-project/RIDB/commit/cae907c632b51f172a4ebe25b8d604e48b642c1f)) - -## [0.4.5-rc.3](https://github.com/trust0-project/RIDB/compare/v0.4.5-rc.2...v0.4.5-rc.3) (2024-11-05) - - -### Bug Fixes - -* improve docs ([349f96a](https://github.com/trust0-project/RIDB/commit/349f96a7189f07845de489afb6523849ae196660)) - -## [0.4.5-rc.2](https://github.com/trust0-project/RIDB/compare/v0.4.5-rc.1...v0.4.5-rc.2) (2024-11-05) - - -### Bug Fixes - -* code suggestions ([2cb7b48](https://github.com/trust0-project/RIDB/commit/2cb7b487d36d411ac4812dc3f94a4e7a03a45cb0)) -* tests ([831d41d](https://github.com/trust0-project/RIDB/commit/831d41dc258d2d0272c7aea2dbba731e387ec3a3)) - -## [0.4.5-rc.1](https://github.com/trust0-project/RIDB/compare/v0.4.4...v0.4.5-rc.1) (2024-11-04) - - -### Bug Fixes - -* correct example [skip-ci] ([176db1e](https://github.com/trust0-project/RIDB/commit/176db1ecc9834ba4ce9f8366e9c74f47582315d3)) - -## [0.4.4](https://github.com/trust0-project/RIDB/compare/v0.4.3...v0.4.4) (2024-11-04) - - -### Bug Fixes - -* improve npm package ([#19](https://github.com/trust0-project/RIDB/issues/19)) ([e2a4160](https://github.com/trust0-project/RIDB/commit/e2a4160f5e7140a984fb3c5e8cb3c9185f1a9865)) -* readme and npm package docs ([4a4ad5f](https://github.com/trust0-project/RIDB/commit/4a4ad5f7e092fa79a9126bf900cc940620a30404)) - -## [0.4.4-rc.1](https://github.com/trust0-project/RIDB/compare/v0.4.3...v0.4.4-rc.1) (2024-11-04) - - -### Bug Fixes - -* readme and npm package docs ([4a4ad5f](https://github.com/trust0-project/RIDB/commit/4a4ad5f7e092fa79a9126bf900cc940620a30404)) - -## [0.4.3](https://github.com/trust0-project/RIDB/compare/v0.4.2...v0.4.3) (2024-11-04) - - -### Bug Fixes - -* add docs ([5251308](https://github.com/trust0-project/RIDB/commit/5251308f680b7b399168e455b4ba7781294fb456)) -* package branding ([#18](https://github.com/trust0-project/RIDB/issues/18)) ([a9e67e9](https://github.com/trust0-project/RIDB/commit/a9e67e9bb820ac2d35de4862892340a8cc11a416)) - -## [0.4.3-rc.1](https://github.com/trust0-project/RIDB/compare/v0.4.2...v0.4.3-rc.1) (2024-11-04) - - -### Bug Fixes - -* add docs ([5251308](https://github.com/trust0-project/RIDB/commit/5251308f680b7b399168e455b4ba7781294fb456)) - -## [0.4.2](https://github.com/trust0-project/RIDB/compare/v0.4.1...v0.4.2) (2024-11-04) - - -### Bug Fixes - -* docs ([#17](https://github.com/trust0-project/RIDB/issues/17)) ([e995bae](https://github.com/trust0-project/RIDB/commit/e995bae40018afc7e6a067f271b70d569fa56403)) -* documentation improvement ([baa77a0](https://github.com/trust0-project/RIDB/commit/baa77a0084d56770d52058113de94b1414c3e79a)) - -## [0.4.2-rc.1](https://github.com/trust0-project/RIDB/compare/v0.4.1...v0.4.2-rc.1) (2024-11-04) - - -### Bug Fixes - -* documentation improvement ([baa77a0](https://github.com/trust0-project/RIDB/commit/baa77a0084d56770d52058113de94b1414c3e79a)) - -## [0.4.1](https://github.com/trust0-project/RIDB/compare/v0.4.0...v0.4.1) (2024-11-04) - - -### Bug Fixes - -* complete migration plugin ([bef2f8b](https://github.com/trust0-project/RIDB/commit/bef2f8b6398123daf06bf1470f84b49cd5240b4c)) -* improve build and fix examples ([55a89aa](https://github.com/trust0-project/RIDB/commit/55a89aac9756bf9733c371af7c92a6d348c0facf)) -* improve migration testing ([768293f](https://github.com/trust0-project/RIDB/commit/768293ffd402045e7dc902f293a5f4c61e3f5611)) -* improve migration tests ([5a66dcf](https://github.com/trust0-project/RIDB/commit/5a66dcf99254c05acc4a87be5430b358a3e87f0c)) -* improvements for migration plugin ([#16](https://github.com/trust0-project/RIDB/issues/16)) ([ce4cef9](https://github.com/trust0-project/RIDB/commit/ce4cef92fa5802f7f7aa5d831b33efa77695a048)) -* integrate ([89fef74](https://github.com/trust0-project/RIDB/commit/89fef7459383cf700aaa031ff1458da5c7199455)) - -## [0.4.1-rc.1](https://github.com/trust0-project/RIDB/compare/v0.4.0...v0.4.1-rc.1) (2024-11-04) - - -### Bug Fixes - -* complete migration plugin ([bef2f8b](https://github.com/trust0-project/RIDB/commit/bef2f8b6398123daf06bf1470f84b49cd5240b4c)) -* improve build and fix examples ([55a89aa](https://github.com/trust0-project/RIDB/commit/55a89aac9756bf9733c371af7c92a6d348c0facf)) -* improve migration testing ([768293f](https://github.com/trust0-project/RIDB/commit/768293ffd402045e7dc902f293a5f4c61e3f5611)) -* improve migration tests ([5a66dcf](https://github.com/trust0-project/RIDB/commit/5a66dcf99254c05acc4a87be5430b358a3e87f0c)) -* integrate ([89fef74](https://github.com/trust0-project/RIDB/commit/89fef7459383cf700aaa031ff1458da5c7199455)) - -# [0.4.0](https://github.com/trust0-project/RIDB/compare/v0.3.5...v0.4.0) (2024-11-04) - - -### Features - -* implementing database migrations ([#15](https://github.com/trust0-project/RIDB/issues/15)) ([0aea0d7](https://github.com/trust0-project/RIDB/commit/0aea0d7456c0d6c0f888a6f46b33e97a3505a102)) - -## [0.3.6-rc.3](https://github.com/trust0-project/RIDB/compare/v0.3.6-rc.2...v0.3.6-rc.3) (2024-11-04) - - -### Bug Fixes - -* improve migration tests ([5a66dcf](https://github.com/trust0-project/RIDB/commit/5a66dcf99254c05acc4a87be5430b358a3e87f0c)) - -## [0.3.6-rc.2](https://github.com/trust0-project/RIDB/compare/v0.3.6-rc.1...v0.3.6-rc.2) (2024-11-04) - - -### Bug Fixes - -* improve migration testing ([768293f](https://github.com/trust0-project/RIDB/commit/768293ffd402045e7dc902f293a5f4c61e3f5611)) - -## [0.3.6-rc.1](https://github.com/trust0-project/RIDB/compare/v0.3.5...v0.3.6-rc.1) (2024-11-04) - - -### Bug Fixes - -* complete migration plugin ([bef2f8b](https://github.com/trust0-project/RIDB/commit/bef2f8b6398123daf06bf1470f84b49cd5240b4c)) - -## [0.3.5](https://github.com/trust0-project/RIDB/compare/v0.3.4...v0.3.5) (2024-11-03) - - -### Bug Fixes - -* pkg description ([066807d](https://github.com/trust0-project/RIDB/commit/066807d00d9ae167613f767c52b1832147eecb07)) -* pkg description ([#13](https://github.com/trust0-project/RIDB/issues/13)) ([10960b3](https://github.com/trust0-project/RIDB/commit/10960b3e1260e0269cda133696ebe4116e6384c7)) - -## [0.3.5-rc.1](https://github.com/trust0-project/RIDB/compare/v0.3.4...v0.3.5-rc.1) (2024-11-03) - - -### Bug Fixes - -* pkg description ([066807d](https://github.com/trust0-project/RIDB/commit/066807d00d9ae167613f767c52b1832147eecb07)) - -## [0.3.4](https://github.com/trust0-project/RIDB/compare/v0.3.3...v0.3.4) (2024-11-03) - - -### Bug Fixes - -* package json fix ([408db20](https://github.com/trust0-project/RIDB/commit/408db2016601e85b8f27cdbf21223dafd6dade07)) -* release small change ([9ad1cbb](https://github.com/trust0-project/RIDB/commit/9ad1cbb1754f8e9ff066afc968f7241a588ff27d)) -* small change in package json ([078c531](https://github.com/trust0-project/RIDB/commit/078c5318c74df137b63a5f885767c8e865415096)) - -## [0.3.3-rc.2](https://github.com/trust0-project/RIDB/compare/v0.3.3-rc.1...v0.3.3-rc.2) (2024-11-03) - - -### Bug Fixes - -* small change in package json ([078c531](https://github.com/trust0-project/RIDB/commit/078c5318c74df137b63a5f885767c8e865415096)) - -## [0.3.3](https://github.com/trust0-project/RIDB/compare/v0.3.2...v0.3.3) (2024-11-03) - - -### Bug Fixes - -* release minor fix and ammend changelog ([#11](https://github.com/trust0-project/RIDB/issues/11)) ([758cfc8](https://github.com/trust0-project/RIDB/commit/758cfc8b6c642a00ca3c845a64506089ee6b69b0)), closes [#6](https://github.com/trust0-project/RIDB/issues/6) [#9](https://github.com/trust0-project/RIDB/issues/9) - -## [0.3.3-rc.1](https://github.com/trust0-project/RIDB/compare/v0.3.2...v0.3.3-rc.1) (2024-11-03) - - -### Bug Fixes - -* package json fix ([408db20](https://github.com/trust0-project/RIDB/commit/408db2016601e85b8f27cdbf21223dafd6dade07)) - -## [0.3.2](https://github.com/trust0-project/RIDB/compare/v0.3.1...v0.3.2) (2024-11-03) - -### Bug Fixes - -* port improvements ([#10](https://github.com/trust0-project/RIDB/issues/10)) ([f6bce9c](https://github.com/trust0-project/RIDB/commit/f6bce9c437858974df0d76bbcc9a5a8e7e86ff66)), closes [#6](https://github.com/trust0-project/RIDB/issues/6) [#9](https://github.com/trust0-project/RIDB/issues/9) [#9](https://github.com/trust0-project/RIDB/issues/9) - -## [0.3.1-rc.3](https://github.com/trust0-project/RIDB/compare/v0.3.1-rc.2...v0.3.1-rc.3) (2024-11-03) - -### Bug Fixes - -* remove space ([#9](https://github.com/trust0-project/RIDB/issues/9)) ([1346ef4](https://github.com/trust0-project/RIDB/commit/1346ef46734b4e02a302f63d8b76bdaf4dbbf745)) - -## [0.3.1-rc.2](https://github.com/trust0-project/RIDB/compare/v0.3.1-rc.1...v0.3.1-rc.2) (2024-11-03) - - -### Bug Fixes - -* small improvement ([#6](https://github.com/trust0-project/RIDB/issues/6)) ([80c4ce6](https://github.com/trust0-project/RIDB/commit/80c4ce6f845cebcaa7bda21f8fc96200599100e2)) - -## [0.3.1-rc.1](https://github.com/trust0-project/RIDB/compare/v0.3.0...v0.3.1-rc.1) (2024-11-03) - - -### Bug Fixes - -* small change ([d0deeea](https://github.com/trust0-project/RIDB/commit/d0deeea83d262d8ffd5e26c1ba18827f05e28fc4)) - -# [0.3.0](https://github.com/trust0-project/RIDB/compare/v0.2.0...v0.3.0) (2024-11-03) - - -### Bug Fixes - -* change tests ([6f4a3e9](https://github.com/trust0-project/RIDB/commit/6f4a3e9e445f4bd3560febae30ede49f86fd7e05)) -* pipeline improvement ([121a3eb](https://github.com/trust0-project/RIDB/commit/121a3eb6ad0bd3e2e21979d0c83fbf60cbdeef33)) - - -### Features - -* encryption, migration plugins and database improvements ([b488150](https://github.com/trust0-project/RIDB/commit/b48815093aa13c1706f9767766d5d5ac24ea20d6)) -* loading default plugins + create one for password ([b65d0b0](https://github.com/trust0-project/RIDB/commit/b65d0b03d0825ac65e6075bcd7d159939e6270fc)) - -# [0.3.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.2.0...v0.3.0-rc.1) (2024-11-03) - - -### Bug Fixes - -* change tests ([6f4a3e9](https://github.com/trust0-project/RIDB/commit/6f4a3e9e445f4bd3560febae30ede49f86fd7e05)) - - -### Features - -* encryption, migration plugins and database improvements ([b488150](https://github.com/trust0-project/RIDB/commit/b48815093aa13c1706f9767766d5d5ac24ea20d6)) -* fix pipeline ([54d494e](https://github.com/trust0-project/RIDB/commit/54d494ecd3595efd4cf95ce77d8eb378c1a920b4)) -* loading default plugins + create one for password ([b65d0b0](https://github.com/trust0-project/RIDB/commit/b65d0b03d0825ac65e6075bcd7d159939e6270fc)) - -# [0.3.0-rc.1](https://github.com/trust0-project/RIDB/compare/v0.2.0...v0.3.0-rc.1) (2024-11-03) - - -### Bug Fixes - -* change tests ([6f4a3e9](https://github.com/trust0-project/RIDB/commit/6f4a3e9e445f4bd3560febae30ede49f86fd7e05)) - - -### Features - -* encryption, migration plugins and database improvements ([b488150](https://github.com/trust0-project/RIDB/commit/b48815093aa13c1706f9767766d5d5ac24ea20d6)) -* fix pipeline ([54d494e](https://github.com/trust0-project/RIDB/commit/54d494ecd3595efd4cf95ce77d8eb378c1a920b4)) -* loading default plugins + create one for password ([b65d0b0](https://github.com/trust0-project/RIDB/commit/b65d0b03d0825ac65e6075bcd7d159939e6270fc)) - -# [0.2.0](https://github.com/trust0-project/RIDB/compare/v0.1.0...v0.2.0) (2024-11-02) - - -### Bug Fixes - -* code improvement ([dc32887](https://github.com/trust0-project/RIDB/commit/dc328870a605da499087ae4e45d3b84c640dc579)) -* readme update ([cd3a4e4](https://github.com/trust0-project/RIDB/commit/cd3a4e430df8a3d77df6c04ac8bb6432547f8c6e)) -* start integrating with edge agent ([9183ede](https://github.com/trust0-project/RIDB/commit/9183ede47289d887c42e8721be133c7aa77edd75)) - - -### Features - -* basic encryption and identus integration example ([28241ea](https://github.com/trust0-project/RIDB/commit/28241ea2269e62b2121291829e72f5c8b7efe89f)) - -# [0.1.0](https://github.com/trust0-project/RIDB/compare/v0.0.1...v0.1.0) (2024-09-17) - - -### Bug Fixes - -* typings ([3648b42](https://github.com/trust0-project/RIDB/commit/3648b42af4cf7bbbd1da0177549767bef8e1fefc)) - - -### Features - -* improve types ([a1267f7](https://github.com/trust0-project/RIDB/commit/a1267f7bd0ee0a337070b81a7a533ec51fe88817)) - -## [0.0.1](https://github.com/trust0-project/RIDB/compare/v0.0.0...v0.0.1) (2024-09-16) - - -### Bug Fixes - -* find, update, findOne, create and delete 83fadb1 Javier Ribó 15 sept 2024, 16:32 ([559f191](https://github.com/trust0-project/RIDB/commit/559f19146c3ce71314a278e8ad74ad327f0f377a)) -* pipeline improvement ([95f7b0b](https://github.com/trust0-project/RIDB/commit/95f7b0bb954a19f8a09226b8eeaa41b1a897580f)) - -## [0.0.1-rc.1](https://github.com/trust0-project/RIDB/compare/v0.0.0...v0.0.1-rc.1) (2024-09-16) - - -### Bug Fixes - -* ci setting correct tag ([0501bff](https://github.com/trust0-project/RIDB/commit/0501bff8c036b47d8c2d12e0d8e640c9d796c359)) -* find, update, findOne, create and delete 83fadb1 Javier Ribó 15 sept 2024, 16:32 ([559f191](https://github.com/trust0-project/RIDB/commit/559f19146c3ce71314a278e8ad74ad327f0f377a)) -* pipeline ([523bfd3](https://github.com/trust0-project/RIDB/commit/523bfd32e85be83aa158c9f6828cf4e6c6e4edbe)) -* release ([7765d1f](https://github.com/trust0-project/RIDB/commit/7765d1ff88c07936f0eb36d2945259aee282f04f)) -* release ([84c3784](https://github.com/trust0-project/RIDB/commit/84c3784dd8bd683af6f0153a7c4e7e2ef17663e1)) -* release pipeline ([3c427e9](https://github.com/trust0-project/RIDB/commit/3c427e9670590faa7a8a452c2f20de3e4af7556d)) -* release pipeline ([67cc617](https://github.com/trust0-project/RIDB/commit/67cc617cd3a159b93ea0bd3640bebc8cab8008f3)) -* release pipeline ([c0021d9](https://github.com/trust0-project/RIDB/commit/c0021d9bda045f9cd6052fb05713cb5fe7e4dcab)) -* release pipeline ([be7dbdf](https://github.com/trust0-project/RIDB/commit/be7dbdf29dbb7f838f5a08c307446ad2cce14555)) - -# 1.0.0 (2024-09-15) - - -### Bug Fixes - -* find, update, findOne, create and delete 83fadb1 Javier Ribó 15 sept 2024, 16:32 ([559f191](https://github.com/trust0-project/RIDB/commit/559f19146c3ce71314a278e8ad74ad327f0f377a)) -* release pipeline ([22b8690](https://github.com/trust0-project/RIDB/commit/22b8690dcd9cbd7d0b2d5426e6b712eb8aa802d6)) -* release pipeline ([d0fe911](https://github.com/trust0-project/RIDB/commit/d0fe911fdc7611ce5a50574e2a16320db6dcc4fa)) -* release pipeline ([c8ab868](https://github.com/trust0-project/RIDB/commit/c8ab86845d81aa0fc7c01473a6d8f473922d1e0f)) - -# 1.0.0 (2024-09-15) - - -### Bug Fixes - -* find, update, findOne, create and delete 83fadb1 Javier Ribó 15 sept 2024, 16:32 ([559f191](https://github.com/trust0-project/RIDB/commit/559f19146c3ce71314a278e8ad74ad327f0f377a)) -* release pipeline ([d0fe911](https://github.com/trust0-project/RIDB/commit/d0fe911fdc7611ce5a50574e2a16320db6dcc4fa)) -* release pipeline ([c8ab868](https://github.com/trust0-project/RIDB/commit/c8ab86845d81aa0fc7c01473a6d8f473922d1e0f)) diff --git a/build.sh b/build.sh deleted file mode 100644 index 567ab81..0000000 --- a/build.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash -set -e # Exit on any error - -is_mac() { - [[ "$OSTYPE" == "darwin"* ]] -} - -echo "Building the rust library" - -rm -rf build && node esbuild.config.mjs -npx dts-bundle-generator src/index.ts --no-check -o ./build/index.d.ts -npx dts-bundle-generator src/index.ts --no-check -o ./build/esm/index.d.ts -npx dts-bundle-generator src/index.ts --no-check -o ./build/cjs/index.d.ts diff --git a/docs/README.md b/docs/README.md index b5235fb..a043d77 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,9 +23,26 @@ # SDK Rerefence +## Enumerations + +- [OpType](enumerations/OpType.md) + +## Classes + +- [Collection](classes/Collection.md) +- [Database](classes/Database.md) +- [Property](classes/Property.md) +- [Schema](classes/Schema.md) + ## Type Aliases -- [StartOptions](type-aliases/StartOptions.md) +- [CreateStorage](type-aliases/CreateStorage.md) +- [Doc](type-aliases/Doc.md) +- [ExtractType](type-aliases/ExtractType.md) +- [Operation](type-aliases/Operation.md) +- [RIDBModule](type-aliases/RIDBModule.md) +- [SchemaType](type-aliases/SchemaType.md) +- [SchemaTypeRecord](type-aliases/SchemaTypeRecord.md) ## Variables diff --git a/docs/classes/Collection.md b/docs/classes/Collection.md index 51777e5..631a691 100644 --- a/docs/classes/Collection.md +++ b/docs/classes/Collection.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -24,7 +24,9 @@ count all documents in the collection. #### Parameters -• **query**: `QueryType`\<`T`\> +##### query + +`QueryType`\<`T`\> #### Returns @@ -34,7 +36,7 @@ A promise that resolves to an array of documents. #### Defined in -pkg/ridb\_rust.d.ts:311 +ridb-wasm/pkg/ridb\_wasm.d.ts:497 *** @@ -46,7 +48,9 @@ Creates a new document in the collection. #### Parameters -• **document**: [`Doc`](../type-aliases/Doc.md)\<`T`\> +##### document + +[`Doc`](../type-aliases/Doc.md)\<`T`\> The document to create. @@ -58,7 +62,7 @@ A promise that resolves to the created document. #### Defined in -pkg/ridb\_rust.d.ts:336 +ridb-wasm/pkg/ridb\_wasm.d.ts:519 *** @@ -70,7 +74,9 @@ Deletes a document in the collection by its ID. #### Parameters -• **id**: `string` +##### id + +`string` The ID of the document to delete. @@ -82,7 +88,7 @@ A promise that resolves when the deletion is complete. #### Defined in -pkg/ridb\_rust.d.ts:344 +ridb-wasm/pkg/ridb\_wasm.d.ts:526 *** @@ -94,7 +100,9 @@ Finds all documents in the collection. #### Parameters -• **query**: `QueryType`\<`T`\> +##### query + +`QueryType`\<`T`\> #### Returns @@ -104,7 +112,7 @@ A promise that resolves to an array of documents. #### Defined in -pkg/ridb\_rust.d.ts:304 +ridb-wasm/pkg/ridb\_wasm.d.ts:491 *** @@ -116,7 +124,9 @@ Finds a single document in the collection by its ID. #### Parameters -• **id**: `string` +##### id + +`string` The ID of the document to find. @@ -128,7 +138,7 @@ A promise that resolves to the found document. #### Defined in -pkg/ridb\_rust.d.ts:319 +ridb-wasm/pkg/ridb\_wasm.d.ts:504 *** @@ -140,7 +150,9 @@ Updates a document in the collection by its ID. #### Parameters -• **document**: `Partial`\<[`Doc`](../type-aliases/Doc.md)\<`T`\>\> +##### document + +`Partial`\<[`Doc`](../type-aliases/Doc.md)\<`T`\>\> A partial document containing the fields to update. @@ -152,4 +164,4 @@ A promise that resolves when the update is complete. #### Defined in -pkg/ridb\_rust.d.ts:328 +ridb-wasm/pkg/ridb\_wasm.d.ts:512 diff --git a/docs/classes/Database.md b/docs/classes/Database.md index b211434..e6dc291 100644 --- a/docs/classes/Database.md +++ b/docs/classes/Database.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -50,7 +50,7 @@ This is a read-only property where the key is the name of the collection and the #### Defined in -pkg/ridb\_rust.d.ts:602 +ridb-wasm/pkg/ridb\_wasm.d.ts:288 ## Methods @@ -68,7 +68,7 @@ A promise that resolves when the database is closed. #### Defined in -pkg/ridb\_rust.d.ts:618 +ridb-wasm/pkg/ridb\_wasm.d.ts:306 *** @@ -86,7 +86,7 @@ A promise that resolves when the database is started. #### Defined in -pkg/ridb\_rust.d.ts:611 +ridb-wasm/pkg/ridb\_wasm.d.ts:299 *** @@ -104,21 +104,35 @@ A record of schema types. #### Parameters -• **db\_name**: `string` +##### db\_name -• **schemas**: `TS` +`string` + +##### schemas + +`TS` The schemas to use for the collections. -• **migrations**: `MigrationPathsForSchemas`\<`TS`\> \| `MigrationPathsForSchema`\<`TS`\[`string`\]\> +##### migrations + +`MigrationPathsForSchemas`\<`TS`\> | `MigrationPathsForSchema`\<`TS`\[`string`\]\> + +##### plugins + +*typeof* `BasePlugin`[] + +##### options + +[`RIDBModule`](../type-aliases/RIDBModule.md) -• **plugins**: *typeof* `BasePlugin`[] +##### password? -• **options**: [`RIDBModule`](../type-aliases/RIDBModule.md) +`string` -• **password?**: `string` +##### storage? -• **storage?**: `BaseStorage`\<`TS`\> +`BaseStorage`\<`TS`\> #### Returns @@ -128,4 +142,4 @@ A promise that resolves to the created `Database` instance. #### Defined in -pkg/ridb\_rust.d.ts:587 +ridb-wasm/pkg/ridb\_wasm.d.ts:273 diff --git a/docs/classes/Property.md b/docs/classes/Property.md index fa4f1dd..c024b08 100644 --- a/docs/classes/Property.md +++ b/docs/classes/Property.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -10,6 +10,18 @@ Represents a property within a schema, including various constraints and nested ## Properties +### default? + +> `readonly` `optional` **default**: `any` + +An optional default value for the property. + +#### Defined in + +ridb-wasm/pkg/ridb\_wasm.d.ts:432 + +*** + ### items? > `readonly` `optional` **items**: [`Property`](Property.md)[] @@ -18,7 +30,7 @@ An optional array of nested properties for array-type properties. #### Defined in -pkg/ridb\_rust.d.ts:438 +ridb-wasm/pkg/ridb\_wasm.d.ts:402 *** @@ -30,7 +42,7 @@ The maximum number of items for array-type properties, if applicable. #### Defined in -pkg/ridb\_rust.d.ts:443 +ridb-wasm/pkg/ridb\_wasm.d.ts:407 *** @@ -42,7 +54,7 @@ The maximum length for string-type properties, if applicable. #### Defined in -pkg/ridb\_rust.d.ts:453 +ridb-wasm/pkg/ridb\_wasm.d.ts:417 *** @@ -54,7 +66,7 @@ The minimum number of items for array-type properties, if applicable. #### Defined in -pkg/ridb\_rust.d.ts:448 +ridb-wasm/pkg/ridb\_wasm.d.ts:412 *** @@ -66,7 +78,7 @@ The minimum length for string-type properties, if applicable. #### Defined in -pkg/ridb\_rust.d.ts:458 +ridb-wasm/pkg/ridb\_wasm.d.ts:422 *** @@ -78,7 +90,7 @@ The primary key of the property, if applicable. #### Defined in -pkg/ridb\_rust.d.ts:433 +ridb-wasm/pkg/ridb\_wasm.d.ts:397 *** @@ -94,7 +106,7 @@ An optional map of nested properties for object-type properties. #### Defined in -pkg/ridb\_rust.d.ts:468 +ridb-wasm/pkg/ridb\_wasm.d.ts:437 *** @@ -106,7 +118,7 @@ An optional array of required fields for object-type properties. #### Defined in -pkg/ridb\_rust.d.ts:463 +ridb-wasm/pkg/ridb\_wasm.d.ts:427 *** @@ -118,7 +130,7 @@ The type of the property. #### Defined in -pkg/ridb\_rust.d.ts:423 +ridb-wasm/pkg/ridb\_wasm.d.ts:387 *** @@ -130,4 +142,4 @@ The version of the property, if applicable. #### Defined in -pkg/ridb\_rust.d.ts:428 +ridb-wasm/pkg/ridb\_wasm.d.ts:392 diff --git a/docs/classes/Schema.md b/docs/classes/Schema.md index 1705b97..dd6f576 100644 --- a/docs/classes/Schema.md +++ b/docs/classes/Schema.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -24,7 +24,7 @@ An optional array of indexes. #### Defined in -pkg/ridb\_rust.d.ts:237 +ridb-wasm/pkg/ridb\_wasm.d.ts:207 *** @@ -36,19 +36,19 @@ The primary key of the schema. #### Defined in -pkg/ridb\_rust.d.ts:227 +ridb-wasm/pkg/ridb\_wasm.d.ts:197 *** ### properties -> `readonly` **properties**: \{ \[K in string \| number \| symbol as T\["properties"\]\[K\]\["required"\] extends false ? K : never\]?: T\["properties"\]\[K\] \} & \{ \[K in string \| number \| symbol as T\["properties"\]\[K\]\["required"\] extends false ? never : K\]: T\["properties"\]\[K\] \} +> `readonly` **properties**: \{ \[K in string \| number \| symbol as T\["properties"\]\[K\]\["required"\] extends false \| (T\["properties"\]\[K\]\["default"\] extends undefined ? true : false) ? K : never\]?: T\["properties"\]\[K\] \} & \{ \[K in string \| number \| symbol as T\["properties"\]\[K\]\["required"\] extends false ? never : K\]: T\["properties"\]\[K\] \} The properties defined in the schema. #### Defined in -pkg/ridb\_rust.d.ts:246 +ridb-wasm/pkg/ridb\_wasm.d.ts:216 *** @@ -60,7 +60,7 @@ The schema definition. #### Defined in -pkg/ridb\_rust.d.ts:208 +ridb-wasm/pkg/ridb\_wasm.d.ts:178 *** @@ -72,7 +72,7 @@ The type of the schema. #### Defined in -pkg/ridb\_rust.d.ts:232 +ridb-wasm/pkg/ridb\_wasm.d.ts:202 *** @@ -84,7 +84,7 @@ The version of the schema. #### Defined in -pkg/ridb\_rust.d.ts:222 +ridb-wasm/pkg/ridb\_wasm.d.ts:192 ## Methods @@ -102,7 +102,7 @@ The JSON representation of the schema. #### Defined in -pkg/ridb\_rust.d.ts:256 +ridb-wasm/pkg/ridb\_wasm.d.ts:226 *** @@ -120,7 +120,9 @@ The schema type. #### Parameters -• **definition**: `TS` +##### definition + +`TS` #### Returns @@ -130,4 +132,4 @@ The created `Schema` instance. #### Defined in -pkg/ridb\_rust.d.ts:217 +ridb-wasm/pkg/ridb\_wasm.d.ts:187 diff --git a/docs/enumerations/OpType.md b/docs/enumerations/OpType.md index b5c0455..72734e3 100644 --- a/docs/enumerations/OpType.md +++ b/docs/enumerations/OpType.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -18,7 +18,7 @@ Count Operation. #### Defined in -pkg/ridb\_rust.d.ts:59 +ridb-wasm/pkg/ridb\_wasm.d.ts:63 *** @@ -30,7 +30,7 @@ Create operation. #### Defined in -pkg/ridb\_rust.d.ts:43 +ridb-wasm/pkg/ridb\_wasm.d.ts:47 *** @@ -42,7 +42,7 @@ Delete operation. #### Defined in -pkg/ridb\_rust.d.ts:51 +ridb-wasm/pkg/ridb\_wasm.d.ts:55 *** @@ -54,7 +54,7 @@ Query Operation. #### Defined in -pkg/ridb\_rust.d.ts:55 +ridb-wasm/pkg/ridb\_wasm.d.ts:59 *** @@ -66,4 +66,4 @@ Update operation. #### Defined in -pkg/ridb\_rust.d.ts:47 +ridb-wasm/pkg/ridb\_wasm.d.ts:51 diff --git a/docs/type-aliases/CreateStorage.md b/docs/type-aliases/CreateStorage.md index ddb8af0..5905d81 100644 --- a/docs/type-aliases/CreateStorage.md +++ b/docs/type-aliases/CreateStorage.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -18,7 +18,9 @@ The schema type record. ## Parameters -• **records**: `T` +### records + +`T` The schema type records. @@ -30,4 +32,4 @@ A promise that resolves to the created internals record. ## Defined in -pkg/ridb\_rust.d.ts:628 +ridb-wasm/pkg/ridb\_wasm.d.ts:316 diff --git a/docs/type-aliases/Doc.md b/docs/type-aliases/Doc.md index 6b05a8b..c9ab98e 100644 --- a/docs/type-aliases/Doc.md +++ b/docs/type-aliases/Doc.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -6,7 +6,7 @@ # Type Alias: Doc\ -> **Doc**\<`T`\>: `{ [name in keyof T["properties"]]: ExtractType }` & `object` +> **Doc**\<`T`\>: \{ \[K in keyof T\["properties"\] as T\["properties"\]\[K\]\["required"\] extends false \| (T\["properties"\]\[K\]\["default"\] extends undefined ? true : false) ? K : never\]?: ExtractType\ \} & `{ [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: ExtractType }` & `object` Doc is a utility type that transforms a schema type into a document type where each property is mapped to its extracted type. @@ -26,4 +26,4 @@ type Document = Doc; // Document is { name: string; age: number; } ## Defined in -pkg/ridb\_rust.d.ts:290 +ridb-wasm/pkg/ridb\_wasm.d.ts:473 diff --git a/docs/type-aliases/ExtractType.md b/docs/type-aliases/ExtractType.md index be87c18..8ab2636 100644 --- a/docs/type-aliases/ExtractType.md +++ b/docs/type-aliases/ExtractType.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -28,4 +28,4 @@ type ArrayType = ExtractType<'array'>; // ArrayType is Array ## Defined in -pkg/ridb\_rust.d.ts:276 +ridb-wasm/pkg/ridb\_wasm.d.ts:459 diff --git a/docs/type-aliases/Operation.md b/docs/type-aliases/Operation.md index 39ffed5..cdbb95f 100644 --- a/docs/type-aliases/Operation.md +++ b/docs/type-aliases/Operation.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -44,4 +44,4 @@ The type of operation to be performed (e.g., CREATE, UPDATE, DELETE). ## Defined in -pkg/ridb\_rust.d.ts:115 +ridb-wasm/pkg/ridb\_wasm.d.ts:338 diff --git a/docs/type-aliases/RIDBModule.md b/docs/type-aliases/RIDBModule.md index a3b5d79..99aef92 100644 --- a/docs/type-aliases/RIDBModule.md +++ b/docs/type-aliases/RIDBModule.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -20,7 +20,9 @@ Plugin constructors array #### Parameters -• **plugins**: *typeof* `BasePlugin`[] +##### plugins + +*typeof* `BasePlugin`[] #### Returns @@ -28,4 +30,4 @@ Plugin constructors array ## Defined in -pkg/ridb\_rust.d.ts:635 +ridb-wasm/pkg/ridb\_wasm.d.ts:323 diff --git a/docs/type-aliases/SchemaType.md b/docs/type-aliases/SchemaType.md index b30f26b..d25a497 100644 --- a/docs/type-aliases/SchemaType.md +++ b/docs/type-aliases/SchemaType.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -58,4 +58,4 @@ The version of the schema. ## Defined in -pkg/ridb\_rust.d.ts:165 +ridb-wasm/pkg/ridb\_wasm.d.ts:135 diff --git a/docs/type-aliases/SchemaTypeRecord.md b/docs/type-aliases/SchemaTypeRecord.md index 8aec069..10d1a73 100644 --- a/docs/type-aliases/SchemaTypeRecord.md +++ b/docs/type-aliases/SchemaTypeRecord.md @@ -1,4 +1,4 @@ -[**@trust0/ridb**](../README.md) • **Docs** +[**@trust0/ridb**](../README.md) *** @@ -16,4 +16,4 @@ Represents a record of schema types, where each key is a string and the value is ## Defined in -pkg/ridb\_rust.d.ts:516 +ridb-wasm/pkg/ridb\_wasm.d.ts:558 diff --git a/docs/variables/SchemaFieldType.md b/docs/variables/SchemaFieldType.md index d016d04..bf5c066 100644 --- a/docs/variables/SchemaFieldType.md +++ b/docs/variables/SchemaFieldType.md @@ -34,4 +34,4 @@ An enumeration of schema field types. ## Defined in -[index.ts:292](https://github.com/trust0-project/RIDB/blob/8537f217cf50f4758a5e2596a96d15f48892806f/src/index.ts#L292) +ridb-rust/packages/ridb/src/index.ts:298 diff --git a/package-lock.json b/package-lock.json index dd3e69b..7830c2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,17 @@ { - "name": "@trust0/ridb", - "version": "0.10.1", + "name": "trust0", + "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@trust0/ridb", - "version": "0.10.1", - "license": "Apache-2.0", + "name": "trust0", + "version": "0.0.0", + "workspaces": [ + "packages/*" + ], "devDependencies": { + "@changesets/cli": "^2.27.11", "@esbuild-plugins/node-resolve": "^0.2.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.0", @@ -17,7 +20,6 @@ "@semantic-release/github": "^10.3.5", "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.2", - "@trust0/ridb-wasm": "file:../ridb-wasm/pkg", "@types/node": "^20.14.2", "@vitest/browser": "^1.6.0", "@vitest/coverage-istanbul": "^1.6.0", @@ -28,6 +30,7 @@ "jsdom": "^24.1.3", "semantic-release": "^24.2.0", "ts-node": "^10.9.2", + "turbo": "^2.3.3", "typedoc": "^0.27.5", "typedoc-plugin-external-module-map": "^2.1.0", "typedoc-plugin-markdown": "^4.3.3", @@ -47,9 +50,6 @@ "classic-level": "^2.0.0" } }, - "../ridb-wasm": { - "dev": true - }, "../ridb-wasm/pkg": { "name": "@trust0/ridb-wasm", "version": "1.0.10", @@ -271,6 +271,19 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", @@ -319,6 +332,539 @@ "node": ">=6.9.0" } }, + "node_modules/@changesets/apply-release-plan": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.7.tgz", + "integrity": "sha512-qnPOcmmmnD0MfMg9DjU1/onORFyRpDXkMMl2IJg9mECY6RnxL3wN0TCCc92b2sXt1jt8DgjAUUsZYGUGTdYIXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/config": "^3.0.5", + "@changesets/get-version-range-type": "^0.4.0", + "@changesets/git": "^3.0.2", + "@changesets/should-skip-package": "^0.1.1", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "detect-indent": "^6.0.0", + "fs-extra": "^7.0.1", + "lodash.startcase": "^4.4.0", + "outdent": "^0.5.0", + "prettier": "^2.7.1", + "resolve-from": "^5.0.0", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@changesets/assemble-release-plan": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.5.tgz", + "integrity": "sha512-IgvBWLNKZd6k4t72MBTBK3nkygi0j3t3zdC1zrfusYo0KpdsvnDjrMM9vPnTCLCMlfNs55jRL4gIMybxa64FCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.2", + "@changesets/should-skip-package": "^0.1.1", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/changelog-git": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.0.tgz", + "integrity": "sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0" + } + }, + "node_modules/@changesets/cli": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.11.tgz", + "integrity": "sha512-1QislpE+nvJgSZZo9+Lj3Lno5pKBgN46dAV8IVxKJy9wX8AOrs9nn5pYVZuDpoxWJJCALmbfOsHkyxujgetQSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/apply-release-plan": "^7.0.7", + "@changesets/assemble-release-plan": "^6.0.5", + "@changesets/changelog-git": "^0.2.0", + "@changesets/config": "^3.0.5", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.2", + "@changesets/get-release-plan": "^4.0.6", + "@changesets/git": "^3.0.2", + "@changesets/logger": "^0.1.1", + "@changesets/pre": "^2.0.1", + "@changesets/read": "^0.6.2", + "@changesets/should-skip-package": "^0.1.1", + "@changesets/types": "^6.0.0", + "@changesets/write": "^0.3.2", + "@manypkg/get-packages": "^1.1.3", + "ansi-colors": "^4.1.3", + "ci-info": "^3.7.0", + "enquirer": "^2.4.1", + "external-editor": "^3.1.0", + "fs-extra": "^7.0.1", + "mri": "^1.2.0", + "p-limit": "^2.2.0", + "package-manager-detector": "^0.2.0", + "picocolors": "^1.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "spawndamnit": "^3.0.1", + "term-size": "^2.1.0" + }, + "bin": { + "changeset": "bin.js" + } + }, + "node_modules/@changesets/cli/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@changesets/cli/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@changesets/cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@changesets/cli/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@changesets/cli/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@changesets/config": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.5.tgz", + "integrity": "sha512-QyXLSSd10GquX7hY0Mt4yQFMEeqnO5z/XLpbIr4PAkNNoQNKwDyiSrx4yd749WddusH1v3OSiA0NRAYmH/APpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.2", + "@changesets/logger": "^0.1.1", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.8" + } + }, + "node_modules/@changesets/config/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@changesets/config/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@changesets/config/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@changesets/errors": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", + "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", + "dev": true, + "license": "MIT", + "dependencies": { + "extendable-error": "^0.1.5" + } + }, + "node_modules/@changesets/get-dependents-graph": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.2.tgz", + "integrity": "sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "picocolors": "^1.1.0", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/get-release-plan": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.6.tgz", + "integrity": "sha512-FHRwBkY7Eili04Y5YMOZb0ezQzKikTka4wL753vfUA5COSebt7KThqiuCN9BewE4/qFGgF/5t3AuzXx1/UAY4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/assemble-release-plan": "^6.0.5", + "@changesets/config": "^3.0.5", + "@changesets/pre": "^2.0.1", + "@changesets/read": "^0.6.2", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/get-version-range-type": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", + "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.2.tgz", + "integrity": "sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@manypkg/get-packages": "^1.1.3", + "is-subdir": "^1.1.1", + "micromatch": "^4.0.8", + "spawndamnit": "^3.0.1" + } + }, + "node_modules/@changesets/logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz", + "integrity": "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.0" + } + }, + "node_modules/@changesets/parse": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.0.tgz", + "integrity": "sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0", + "js-yaml": "^3.13.1" + } + }, + "node_modules/@changesets/parse/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@changesets/parse/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@changesets/parse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@changesets/pre": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.1.tgz", + "integrity": "sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1" + } + }, + "node_modules/@changesets/pre/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@changesets/pre/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@changesets/pre/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@changesets/read": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.2.tgz", + "integrity": "sha512-wjfQpJvryY3zD61p8jR87mJdyx2FIhEcdXhKUqkja87toMrP/3jtg/Yg29upN+N4Ckf525/uvV7a4tzBlpk6gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/git": "^3.0.2", + "@changesets/logger": "^0.1.1", + "@changesets/parse": "^0.4.0", + "@changesets/types": "^6.0.0", + "fs-extra": "^7.0.1", + "p-filter": "^2.1.0", + "picocolors": "^1.1.0" + } + }, + "node_modules/@changesets/read/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@changesets/read/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@changesets/read/node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@changesets/read/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@changesets/read/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@changesets/should-skip-package": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.1.tgz", + "integrity": "sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.0.0.tgz", + "integrity": "sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/write": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.2.tgz", + "integrity": "sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "prettier": "^2.7.1" + } + }, + "node_modules/@changesets/write/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@changesets/write/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@changesets/write/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -659,6 +1205,24 @@ "node": ">=12" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", @@ -677,9 +1241,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", "cpu": [ "arm64" ], @@ -957,6 +1521,225 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + } + }, + "node_modules/@manypkg/find-root/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@manypkg/find-root/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@manypkg/find-root/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@manypkg/find-root/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@manypkg/find-root/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@manypkg/get-packages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@manypkg/get-packages/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@manypkg/get-packages/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@manypkg/get-packages/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/get-packages/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2309,8 +3092,8 @@ "dev": true, "license": "MIT" }, - "node_modules/@trust0/ridb-wasm": { - "resolved": "../ridb-wasm/pkg", + "node_modules/@trust0/ridb": { + "resolved": "packages/ridb", "link": true }, "node_modules/@tsconfig/node10": { @@ -2782,53 +3565,28 @@ "dev": true, "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/abstract-level": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-2.0.2.tgz", - "integrity": "sha512-pPJixmXk/kTKLB2sSue7o4Uj6TlLD2XfaP2gWZomHVCC6cuUGX/VslQqKG1yZHfXwBb/3lS6oSTMPGzh1P1iig==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "is-buffer": "^2.0.5", - "level-supports": "^6.0.0", - "level-transcoder": "^1.0.1", - "maybe-combine-errors": "^1.0.0", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/abstract-level/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abstract-level": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-2.0.2.tgz", + "integrity": "sha512-pPJixmXk/kTKLB2sSue7o4Uj6TlLD2XfaP2gWZomHVCC6cuUGX/VslQqKG1yZHfXwBb/3lS6oSTMPGzh1P1iig==", "license": "MIT", "peer": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "buffer": "^6.0.3", + "is-buffer": "^2.0.5", + "level-supports": "^6.0.0", + "level-transcoder": "^1.0.1", + "maybe-combine-errors": "^1.0.0", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=16" } }, "node_modules/acorn": { @@ -2881,6 +3639,16 @@ "node": ">=8" } }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-escapes": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", @@ -2978,31 +3746,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/archiver-utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/archiver-utils/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -3088,31 +3831,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/archiver/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/archiver/node_modules/readable-stream": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.6.0.tgz", @@ -3199,6 +3917,16 @@ "dev": true, "license": "MIT" }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -3338,6 +4066,19 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/better-path-resolve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", + "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-windows": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -3410,10 +4151,9 @@ } }, "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -3431,7 +4171,7 @@ "license": "MIT", "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, "node_modules/buffer-crc32": { @@ -3540,6 +4280,13 @@ "node": ">=10" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", @@ -3611,6 +4358,22 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/classic-level": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-2.0.0.tgz", @@ -3843,31 +4606,6 @@ "node": ">= 14" } }, - "node_modules/compress-commons/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/compress-commons/node_modules/readable-stream": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.6.0.tgz", @@ -4081,31 +4819,6 @@ "node": ">= 14" } }, - "node_modules/crc32-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/crc32-stream/node_modules/readable-stream": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.6.0.tgz", @@ -4381,6 +5094,16 @@ "node": ">=0.4.0" } }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -4459,9 +5182,9 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.1.tgz", + "integrity": "sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4616,6 +5339,20 @@ "once": "^1.4.0" } }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -5033,6 +5770,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/extendable-error": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -5785,6 +6557,13 @@ "node": ">= 14" } }, + "node_modules/human-id": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz", + "integrity": "sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==", + "dev": true, + "license": "MIT" + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -6110,6 +6889,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-subdir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", + "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "better-path-resolve": "1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/is-unicode-supported": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", @@ -6123,6 +6915,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6405,46 +7207,21 @@ "license": "MIT", "peer": true, "engines": { - "node": ">=16" - } - }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/level-transcoder/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node": ">=16" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", "license": "MIT", "peer": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" } }, "node_modules/lie": { @@ -6619,6 +7396,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", @@ -6945,6 +7729,16 @@ "node": ">=10" } }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", @@ -9966,6 +10760,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/outdent": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", + "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==", + "dev": true, + "license": "MIT" + }, "node_modules/p-each-series": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", @@ -10105,6 +10916,13 @@ "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/package-manager-detector": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", + "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", + "dev": true, + "license": "MIT" + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -10380,6 +11198,22 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -10647,6 +11481,63 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/read-yaml-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", + "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.6.1", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-yaml-file/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/read-yaml-file/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/read-yaml-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/read-yaml-file/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -10696,6 +11587,13 @@ "node": ">=10" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, "node_modules/registry-auth-token": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.3.tgz", @@ -11578,6 +12476,30 @@ "dev": true, "license": "MIT" }, + "node_modules/spawndamnit": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz", + "integrity": "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "cross-spawn": "^7.0.5", + "signal-exit": "^4.0.1" + } + }, + "node_modules/spawndamnit/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/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -11965,6 +12887,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -12074,6 +13009,19 @@ "node": ">=14.0.0" } }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12200,6 +13148,108 @@ "dev": true, "license": "0BSD" }, + "node_modules/turbo": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.3.tgz", + "integrity": "sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==", + "dev": true, + "license": "MIT", + "bin": { + "turbo": "bin/turbo" + }, + "optionalDependencies": { + "turbo-darwin-64": "2.3.3", + "turbo-darwin-arm64": "2.3.3", + "turbo-linux-64": "2.3.3", + "turbo-linux-arm64": "2.3.3", + "turbo-windows-64": "2.3.3", + "turbo-windows-arm64": "2.3.3" + } + }, + "node_modules/turbo-darwin-64": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.3.tgz", + "integrity": "sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/turbo-darwin-arm64": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.3.tgz", + "integrity": "sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/turbo-linux-64": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.3.tgz", + "integrity": "sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/turbo-linux-arm64": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.3.tgz", + "integrity": "sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/turbo-windows-64": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.3.tgz", + "integrity": "sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/turbo-windows-arm64": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.3.tgz", + "integrity": "sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/type-detect": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", @@ -12211,9 +13261,9 @@ } }, "node_modules/type-fest": { - "version": "4.30.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz", - "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz", + "integrity": "sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -12224,9 +13274,9 @@ } }, "node_modules/typedoc": { - "version": "0.27.5", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.5.tgz", - "integrity": "sha512-x+fhKJtTg4ozXwKayh/ek4wxZQI/+2hmZUdO2i2NGDBRUflDble70z+ewHod3d4gRpXSO6fnlnjbDTnJk7HlkQ==", + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.6.tgz", + "integrity": "sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -12392,6 +13442,31 @@ "through": "^2.3.8" } }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/undici": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", @@ -12574,14 +13649,14 @@ } }, "node_modules/vite": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", - "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz", + "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "esbuild": "0.24.0", + "esbuild": "^0.24.2", "postcss": "^8.4.49", "rollup": "^4.23.0" }, @@ -12769,9 +13844,9 @@ } }, "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", "cpu": [ "ppc64" ], @@ -12787,9 +13862,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", "cpu": [ "arm" ], @@ -12805,9 +13880,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", "cpu": [ "arm64" ], @@ -12823,9 +13898,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", "cpu": [ "x64" ], @@ -12841,9 +13916,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", "cpu": [ "arm64" ], @@ -12859,9 +13934,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", "cpu": [ "x64" ], @@ -12877,9 +13952,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", "cpu": [ "arm64" ], @@ -12895,9 +13970,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", "cpu": [ "x64" ], @@ -12913,9 +13988,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", "cpu": [ "arm" ], @@ -12931,9 +14006,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", "cpu": [ "arm64" ], @@ -12949,9 +14024,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", "cpu": [ "ia32" ], @@ -12967,9 +14042,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", "cpu": [ "loong64" ], @@ -12985,9 +14060,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", "cpu": [ "mips64el" ], @@ -13003,9 +14078,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", "cpu": [ "ppc64" ], @@ -13021,9 +14096,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", "cpu": [ "riscv64" ], @@ -13039,9 +14114,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", "cpu": [ "s390x" ], @@ -13057,9 +14132,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", "cpu": [ "x64" ], @@ -13075,9 +14150,9 @@ } }, "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", "cpu": [ "x64" ], @@ -13093,9 +14168,9 @@ } }, "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", "cpu": [ "x64" ], @@ -13111,9 +14186,9 @@ } }, "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", "cpu": [ "x64" ], @@ -13129,9 +14204,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", "cpu": [ "arm64" ], @@ -13147,9 +14222,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", "cpu": [ "ia32" ], @@ -13165,9 +14240,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", "cpu": [ "x64" ], @@ -13183,9 +14258,9 @@ } }, "node_modules/vite/node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -13197,30 +14272,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" } }, "node_modules/vitest": { @@ -14005,31 +15081,6 @@ "node": ">= 14" } }, - "node_modules/zip-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/zip-stream/node_modules/readable-stream": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.6.0.tgz", @@ -14077,6 +15128,24 @@ "dependencies": { "safe-buffer": "~5.2.0" } + }, + "packages/ridb": { + "name": "@trust0/ridb", + "version": "0.10.1", + "license": "Apache-2.0", + "devDependencies": { + "@trust0/ridb-wasm": "file:../../../ridb-wasm/pkg" + }, + "engines": { + "node": ">=20" + } + }, + "packages/ridb/node_modules/@trust0/ridb-wasm": { + "resolved": "../ridb-wasm/pkg", + "link": true + }, + "ridb-wasm/pkg": { + "extraneous": true } } } diff --git a/package.json b/package.json index 00e5735..570d3b1 100644 --- a/package.json +++ b/package.json @@ -1,47 +1,21 @@ { - "name": "@trust0/ridb", - "version": "0.10.1", - "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", - "main": "./build/cjs/index.js", - "publishConfig": { - "access": "public" - }, - "module": "./build/esm/index.js", - "exports": { - ".": { - "import": "./build/esm/index.mjs", - "require": "./build/cjs/index.cjs", - "default": "./build/esm/index.mjs", - "types": "./build/index.d.ts" - } - }, - "author": "elribonazo@gmail.com", - "types": "./build/index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/trust0-project/RIDB.git" - }, - "license": "Apache-2.0", - "files": [ - "./build/**/*", - "./**/*.md" - ], + "name": "trust0", + "version": "0.0.0", "engines": { "node": ">=20" }, + "packageManager": "npm@10.9.0", + "workspaces": [ + "packages/*" + ], "scripts": { "docs": "typedoc --cleanOutputDir false", - "runtest": "npm run build && npm run test:node", - "build": "sh build.sh", - "test": "sh test.sh", - "performance": "sh performance.sh", - "performance:node": "sh performance.sh -e node", - "performance:browser": "sh performance.sh -e browser", - "test:node": "sh test.sh -e node", - "test:browser": "sh test.sh -e browser", - "prepublishOnly": "npm run build" + "build": "npx turbo build", + "test": "npx turbo test", + "release": "npm run build && npm run docs && changeset version && changeset publish" }, "devDependencies": { + "@changesets/cli": "^2.27.11", "@esbuild-plugins/node-resolve": "^0.2.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.0", @@ -50,7 +24,6 @@ "@semantic-release/github": "^10.3.5", "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.2", - "@trust0/ridb-wasm": "file:../ridb-wasm/pkg", "@types/node": "^20.14.2", "@vitest/browser": "^1.6.0", "@vitest/coverage-istanbul": "^1.6.0", @@ -61,6 +34,7 @@ "jsdom": "^24.1.3", "semantic-release": "^24.2.0", "ts-node": "^10.9.2", + "turbo": "^2.3.3", "typedoc": "^0.27.5", "typedoc-plugin-external-module-map": "^2.1.0", "typedoc-plugin-markdown": "^4.3.3", diff --git a/packages/ridb/build/cjs/index.cjs b/packages/ridb/build/cjs/index.cjs new file mode 100644 index 0000000..0b46c23 --- /dev/null +++ b/packages/ridb/build/cjs/index.cjs @@ -0,0 +1,2733 @@ + +if (typeof Buffer === 'undefined') { + global.Buffer = require('buffer').Buffer; +} +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// ../../../ridb-wasm/pkg/ridb_wasm.js +var ridb_wasm_exports = {}; +__export(ridb_wasm_exports, { + BasePlugin: () => BasePlugin, + BaseStorage: () => BaseStorage, + Collection: () => Collection, + CoreStorage: () => CoreStorage, + Database: () => Database, + InMemory: () => InMemory, + IndexDB: () => IndexDB, + OpType: () => OpType, + Operation: () => Operation, + Property: () => Property, + Query: () => Query, + Schema: () => Schema, + WasmBindgenTestContext: () => WasmBindgenTestContext, + __wbgtest_console_debug: () => __wbgtest_console_debug, + __wbgtest_console_error: () => __wbgtest_console_error, + __wbgtest_console_info: () => __wbgtest_console_info, + __wbgtest_console_log: () => __wbgtest_console_log, + __wbgtest_console_warn: () => __wbgtest_console_warn, + default: () => ridb_wasm_default, + initSync: () => initSync, + is_debug_mode: () => is_debug_mode, + main_js: () => main_js +}); +function getObject(idx) { + return heap[idx]; +} +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + heap[idx] = obj; + return idx; +} +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === void 0) { + const buf = cachedTextEncoder.encode(arg); + const ptr2 = malloc(buf.length, 1) >>> 0; + getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr2; + } + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + const mem = getUint8Memory0(); + let offset = 0; + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 127) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + WASM_VECTOR_LEN = offset; + return ptr; +} +function isLikeNone(x) { + return x === void 0 || x === null; +} +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} +function getFloat64Memory0() { + if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) { + cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); + } + return cachedFloat64Memory0; +} +function getBigInt64Memory0() { + if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) { + cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); + } + return cachedBigInt64Memory0; +} +function debugString(val) { + const type = typeof val; + if (type == "number" || type == "boolean" || val == null) { + return `${val}`; + } + if (type == "string") { + return `"${val}"`; + } + if (type == "symbol") { + const description = val.description; + if (description == null) { + return "Symbol"; + } else { + return `Symbol(${description})`; + } + } + if (type == "function") { + const name = val.name; + if (typeof name == "string" && name.length > 0) { + return `Function(${name})`; + } else { + return "Function"; + } + } + if (Array.isArray(val)) { + const length = val.length; + let debug = "["; + if (length > 0) { + debug += debugString(val[0]); + } + for (let i = 1; i < length; i++) { + debug += ", " + debugString(val[i]); + } + debug += "]"; + return debug; + } + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + return toString.call(val); + } + if (className == "Object") { + try { + return "Object(" + JSON.stringify(val) + ")"; + } catch (_) { + return "Object"; + } + } + if (val instanceof Error) { + return `${val.name}: ${val.message} +${val.stack}`; + } + return className; +} +function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); + CLOSURE_DTORS.unregister(state); + } else { + state.a = a; + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; +} +function __wbg_adapter_56(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h30fcf24f930ac73b(arg0, arg1, addHeapObject(arg2)); +} +function __wbg_adapter_59(arg0, arg1, arg2) { + const ret = wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0343af3ff210bc6c(arg0, arg1, addHeapObject(arg2)); + return takeObject(ret); +} +function makeClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + state.cnt++; + try { + return f(state.a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); + state.a = 0; + CLOSURE_DTORS.unregister(state); + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; +} +function __wbg_adapter_62(arg0, arg1, arg2, arg3, arg4) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm._dyn_core__ops__function__Fn__A_B_C___Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h083305484f53f562(retptr, arg0, arg1, addHeapObject(arg2), addHeapObject(arg3), addHeapObject(arg4)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} +function __wbg_adapter_67(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd0b7b7031e33a384(arg0, arg1, addHeapObject(arg2)); +} +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} +function getUint32Memory0() { + if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32Memory0; +} +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getUint32Memory0(); + const slice = mem.subarray(ptr / 4, ptr / 4 + len); + const result = []; + for (let i = 0; i < slice.length; i++) { + result.push(takeObject(slice[i])); + } + return result; +} +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + const mem = getUint32Memory0(); + for (let i = 0; i < array.length; i++) { + mem[ptr / 4 + i] = addHeapObject(array[i]); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} +function main_js() { + wasm.main_js(); +} +function is_debug_mode() { + const ret = wasm.is_debug_mode(); + return ret !== 0; +} +function addBorrowedObject(obj) { + if (stack_pointer == 1) throw new Error("out of js stack"); + heap[--stack_pointer] = obj; + return stack_pointer; +} +function __wbgtest_console_log(args) { + try { + wasm.__wbgtest_console_log(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_debug(args) { + try { + wasm.__wbgtest_console_debug(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_info(args) { + try { + wasm.__wbgtest_console_info(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_warn(args) { + try { + wasm.__wbgtest_console_warn(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_error(args) { + try { + wasm.__wbgtest_console_error(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbg_adapter_253(arg0, arg1) { + wasm.wasm_bindgen__convert__closures__invoke0_mut__h831654003a8114c2(arg0, arg1); +} +function __wbg_adapter_296(arg0, arg1, arg2, arg3, arg4) { + wasm.wasm_bindgen__convert__closures__invoke3_mut__h79ad1c6e6a197be2(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); +} +function __wbg_adapter_347(arg0, arg1, arg2, arg3) { + wasm.wasm_bindgen__convert__closures__invoke2_mut__h33b30c564f43a8a5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); +} +function __wbg_load(module2, imports) { + return __async(this, null, function* () { + if (typeof Response === "function" && module2 instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return yield WebAssembly.instantiateStreaming(module2, imports); + } catch (e) { + if (module2.headers.get("Content-Type") != "application/wasm") { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } else { + throw e; + } + } + } + const bytes = yield module2.arrayBuffer(); + return yield WebAssembly.instantiate(bytes, imports); + } else { + const instance = yield WebAssembly.instantiate(module2, imports); + if (instance instanceof WebAssembly.Instance) { + return { instance, module: module2 }; + } else { + return instance; + } + } + }); +} +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); + }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === void 0; + return ret; + }; + imports.wbg.__wbindgen_is_null = function(arg0) { + const ret = getObject(arg0) === null; + return ret; + }; + imports.wbg.__wbg_inmemory_new = function(arg0) { + const ret = InMemory.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_findDocumentById_3c953e7cb816631f = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).findDocumentById(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_write_5ed217718c943bb6 = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).write(Operation.__wrap(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_indexdb_new = function(arg0) { + const ret = IndexDB.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_close_9079d609f51f315b = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).close(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof obj === "string" ? obj : void 0; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof obj === "number" ? obj : void 0; + getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbg_count_56b737f3e1f9808b = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).count(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_start_8e90ba4b9a66ad6d = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).start(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_apply_5cc20a9c59aa42cc = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg1).apply(takeObject(arg2)); + const ptr1 = passArrayJsValueToWasm0(ret, wasm.__wbindgen_malloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }, arguments); + }; + imports.wbg.__wbg_database_new = function(arg0) { + const ret = Database.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_find_4fb73c61983f3303 = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).find(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_collection_new = function(arg0) { + const ret = Collection.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_function = function(arg0) { + const ret = typeof getObject(arg0) === "function"; + return ret; + }; + imports.wbg.__wbindgen_is_string = function(arg0) { + const ret = typeof getObject(arg0) === "string"; + return ret; + }; + imports.wbg.__wbindgen_is_array = function(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; + }; + imports.wbg.__wbindgen_is_object = function(arg0) { + const val = getObject(arg0); + const ret = typeof val === "object" && val !== null; + return ret; + }; + imports.wbg.__wbindgen_is_falsy = function(arg0) { + const ret = !getObject(arg0); + return ret; + }; + imports.wbg.__wbindgen_is_bigint = function(arg0) { + const ret = typeof getObject(arg0) === "bigint"; + return ret; + }; + imports.wbg.__wbindgen_error_new = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_boolean_get = function(arg0) { + const v = getObject(arg0); + const ret = typeof v === "boolean" ? v ? 1 : 0 : 2; + return ret; + }; + imports.wbg.__wbindgen_in = function(arg0, arg1) { + const ret = getObject(arg0) in getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_bigint_from_i64 = function(arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_bigint_from_u64 = function(arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + return ret; + }; + imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); + }; + imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); + }; + imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); + }; + imports.wbg.__wbg_require_cca90b1a94a0255b = function() { + return handleError(function() { + const ret = module.require; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { + return handleError(function(arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { + return handleError(function(arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_instanceof_Window_f401953a2cf86220 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Window; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_localStorage_e381d34d0c40c761 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).localStorage; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_indexedDB_7c51d9056667f4e0 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).indexedDB; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_open_f0d7259fd7e689ce = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), arg3 >>> 0); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_getItem_164e8e5265095b87 = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }, arguments); + }; + imports.wbg.__wbg_error_8e3928cfb8a43e2b = function(arg0) { + console.error(getObject(arg0)); + }; + imports.wbg.__wbg_log_5bb5f88f245d7762 = function(arg0) { + console.log(getObject(arg0)); + }; + imports.wbg.__wbg_length_9ae5daf9a690cba9 = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_contains_c65b44400b549286 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).contains(getStringFromWasm0(arg1, arg2)); + return ret; + }; + imports.wbg.__wbg_get_910bbb94abdcf488 = function(arg0, arg1, arg2) { + const ret = getObject(arg1)[arg2 >>> 0]; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_target_2fc177e386c8b7b0 = function(arg0) { + const ret = getObject(arg0).target; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_instanceof_IdbOpenDbRequest_3f4a166bc0340578 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof IDBOpenDBRequest; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_setonupgradeneeded_ad7645373c7d5e1b = function(arg0, arg1) { + getObject(arg0).onupgradeneeded = getObject(arg1); + }; + imports.wbg.__wbg_instanceof_IdbRequest_93249da04f5370b6 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof IDBRequest; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_result_6cedf5f78600a79c = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).result; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_error_685b20024dc2d6ca = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).error; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_setonsuccess_632ce0a1460455c2 = function(arg0, arg1) { + getObject(arg0).onsuccess = getObject(arg1); + }; + imports.wbg.__wbg_setonerror_8479b33e7568a904 = function(arg0, arg1) { + getObject(arg0).onerror = getObject(arg1); + }; + imports.wbg.__wbg_setoncomplete_d8e4236665cbf1e2 = function(arg0, arg1) { + getObject(arg0).oncomplete = getObject(arg1); + }; + imports.wbg.__wbg_setonerror_da071ec94e148397 = function(arg0, arg1) { + getObject(arg0).onerror = getObject(arg1); + }; + imports.wbg.__wbg_objectStore_da468793bd9df17b = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).objectStore(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_instanceof_IdbDatabase_db671cf2454a9542 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof IDBDatabase; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_objectStoreNames_588b5924274239fd = function(arg0) { + const ret = getObject(arg0).objectStoreNames; + return addHeapObject(ret); + }; + imports.wbg.__wbg_close_6bfe4ca2fe67cb67 = function(arg0) { + getObject(arg0).close(); + }; + imports.wbg.__wbg_createObjectStore_882f2f6b1b1ef040 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).createObjectStore(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_transaction_c32bb10c9c692f4b = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_transaction_1e282a79e9bb7387 = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_delete_f60bba7d0ae59a4f = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).delete(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_get_5361b64cac0d0826 = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).get(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_getAll_2782e438df699384 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).getAll(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_put_22792e17580ca18b = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).put(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) { + const ret = getObject(arg0) == getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_as_number = function(arg0) { + const ret = +getObject(arg0); + return ret; + }; + imports.wbg.__wbg_String_389b54bd9d25375f = function(arg0, arg1) { + const ret = String(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_getwithrefkey_4a92a5eca60879b9 = function(arg0, arg1) { + const ret = getObject(arg0)[getObject(arg1)]; + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_9182712abebf82ef = function(arg0, arg1, arg2) { + getObject(arg0)[takeObject(arg1)] = takeObject(arg2); + }; + imports.wbg.__wbg_log_28eee4e6432efd24 = function(arg0, arg1) { + console.log(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbg_String_55b8bdc4bc243677 = function(arg0, arg1) { + const ret = String(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_getElementById_8458f2a6c28467dc = function(arg0, arg1, arg2) { + const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_settextcontent_fc3ff485b96fcb1d = function(arg0, arg1, arg2) { + getObject(arg0).textContent = getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_wbgtestinvoke_8c20f4132af2bded = function() { + return handleError(function(arg0, arg1) { + try { + var state0 = { a: arg0, b: arg1 }; + var cb0 = () => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_253(a, state0.b); + } finally { + state0.a = a; + } + }; + __wbg_test_invoke(cb0); + } finally { + state0.a = state0.b = 0; + } + }, arguments); + }; + imports.wbg.__wbg_wbgtestoutputwriteln_4db3bd64914ec955 = function(arg0) { + __wbg_test_output_writeln(takeObject(arg0)); + }; + imports.wbg.__wbg_stack_436273c21658169b = function(arg0) { + const ret = getObject(arg0).stack; + return addHeapObject(ret); + }; + imports.wbg.__wbg_static_accessor_document_d4b6ae7f5578480f = function() { + const ret = document; + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_17c77e9f5bfe6714 = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_self_55106357ec10ecd4 = function(arg0) { + const ret = getObject(arg0).self; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_constructor_fd0d22d60b7dfd72 = function(arg0) { + const ret = getObject(arg0).constructor; + return addHeapObject(ret); + }; + imports.wbg.__wbg_name_7f439d24ff7ba1d3 = function(arg0, arg1) { + const ret = getObject(arg1).name; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_textcontent_67e4e811cbdf00fc = function(arg0, arg1) { + const ret = getObject(arg1).textContent; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_stack_44743fb7d71926a0 = function(arg0) { + const ret = getObject(arg0).stack; + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_abda76e883ba8a5f = function() { + const ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }; + imports.wbg.__wbg_queueMicrotask_3cbae2ec6b6cd3d6 = function(arg0) { + const ret = getObject(arg0).queueMicrotask; + return addHeapObject(ret); + }; + imports.wbg.__wbg_queueMicrotask_481971b0d87f3dd4 = function(arg0) { + queueMicrotask(getObject(arg0)); + }; + imports.wbg.__wbg_get_bd8e338fbd5f5cc8 = function(arg0, arg1) { + const ret = getObject(arg0)[arg1 >>> 0]; + return addHeapObject(ret); + }; + imports.wbg.__wbg_length_cd7af8117672b8b8 = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_new_16b304a2cfa7ff4a = function() { + const ret = new Array(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_newnoargs_e258087cd0daa0ea = function(arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_d9bc3a0147634640 = function() { + const ret = /* @__PURE__ */ new Map(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_next_40fc327bfc8770e6 = function(arg0) { + const ret = getObject(arg0).next; + return addHeapObject(ret); + }; + imports.wbg.__wbg_next_196c84450b364254 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).next(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_done_298b57d23c0fc80c = function(arg0) { + const ret = getObject(arg0).done; + return ret; + }; + imports.wbg.__wbg_value_d93c65011f51a456 = function(arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); + }; + imports.wbg.__wbg_iterator_2cee6dadfd956dfa = function() { + const ret = Symbol.iterator; + return addHeapObject(ret); + }; + imports.wbg.__wbg_get_e3c254076557e348 = function() { + return handleError(function(arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_call_27c0f87801dedf93 = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_new_72fb9a18b5ae2624 = function() { + const ret = new Object(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_self_ce0dbfc45cf2f5be = function() { + return handleError(function() { + const ret = self.self; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_window_c6fb939a7f436783 = function() { + return handleError(function() { + const ret = window.window; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_globalThis_d1e6af4856ba331b = function() { + return handleError(function() { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_global_207b558942527489 = function() { + return handleError(function() { + const ret = global.global; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_set_d4638f722068f043 = function(arg0, arg1, arg2) { + getObject(arg0)[arg1 >>> 0] = takeObject(arg2); + }; + imports.wbg.__wbg_from_89e3fc3ba5e6fb48 = function(arg0) { + const ret = Array.from(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_forEach_2be8de7347d63332 = function(arg0, arg1, arg2) { + try { + var state0 = { a: arg1, b: arg2 }; + var cb0 = (arg02, arg12, arg22) => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_296(a, state0.b, arg02, arg12, arg22); + } finally { + state0.a = a; + } + }; + getObject(arg0).forEach(cb0); + } finally { + state0.a = state0.b = 0; + } + }; + imports.wbg.__wbg_isArray_2ab64d95e09ea0ae = function(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; + }; + imports.wbg.__wbg_of_4a2b313a453ec059 = function(arg0) { + const ret = Array.of(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_push_a5b05aedc7234f9f = function(arg0, arg1) { + const ret = getObject(arg0).push(getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_instanceof_ArrayBuffer_836825be07d4c9d2 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_new_28c511d9baebfa89 = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_message_5bf28016c2b49cfb = function(arg0) { + const ret = getObject(arg0).message; + return addHeapObject(ret); + }; + imports.wbg.__wbg_name_e7429f0dda6079e2 = function(arg0) { + const ret = getObject(arg0).name; + return addHeapObject(ret); + }; + imports.wbg.__wbg_call_b3ca7c6051f9bec1 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_call_938992c832f74314 = function() { + return handleError(function(arg0, arg1, arg2, arg3, arg4) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3), getObject(arg4)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_set_8417257aaedc936b = function(arg0, arg1, arg2) { + const ret = getObject(arg0).set(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_isSafeInteger_f7b04ef02296c4d2 = function(arg0) { + const ret = Number.isSafeInteger(getObject(arg0)); + return ret; + }; + imports.wbg.__wbg_entries_95cc2c823b285a09 = function(arg0) { + const ret = Object.entries(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_is_010fdc0f4ab96916 = function(arg0, arg1) { + const ret = Object.is(getObject(arg0), getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_keys_91e412b4b222659f = function(arg0) { + const ret = Object.keys(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_81740750da40724f = function(arg0, arg1) { + try { + var state0 = { a: arg0, b: arg1 }; + var cb0 = (arg02, arg12) => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_347(a, state0.b, arg02, arg12); + } finally { + state0.a = a; + } + }; + const ret = new Promise(cb0); + return addHeapObject(ret); + } finally { + state0.a = state0.b = 0; + } + }; + imports.wbg.__wbg_resolve_b0083a7967828ec8 = function(arg0) { + const ret = Promise.resolve(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_0c86a60e8fcfe9f6 = function(arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_a73caa9a87991566 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_length_c20a40f15020d68a = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_newwithlength_e9b4878cebadb3d3 = function(arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_subarray_a1f73cd4b5b42fe1 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_apply_0a5aa603881e6d79 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = Reflect.apply(getObject(arg0), getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_deleteProperty_13e721a56f19e842 = function() { + return handleError(function(arg0, arg1) { + const ret = Reflect.deleteProperty(getObject(arg0), getObject(arg1)); + return ret; + }, arguments); + }; + imports.wbg.__wbg_set_1f9b04f170055d33 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + return ret; + }, arguments); + }; + imports.wbg.__wbg_parse_66d1801634e099ac = function() { + return handleError(function(arg0, arg1) { + const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_stringify_8887fe74e1c50d81 = function() { + return handleError(function(arg0) { + const ret = JSON.stringify(getObject(arg0)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { + const v = getObject(arg1); + const ret = typeof v === "bigint" ? v : void 0; + getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper537 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper539 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_59); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper541 = function(arg0, arg1, arg2) { + const ret = makeClosure(arg0, arg1, 220, __wbg_adapter_62); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper543 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper1352 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 373, __wbg_adapter_67); + return addHeapObject(ret); + }; + return imports; +} +function __wbg_init_memory(imports, maybe_memory) { +} +function __wbg_finalize_init(instance, module2) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module2; + cachedBigInt64Memory0 = null; + cachedFloat64Memory0 = null; + cachedInt32Memory0 = null; + cachedUint32Memory0 = null; + cachedUint8Memory0 = null; + wasm.__wbindgen_start(); + return wasm; +} +function initSync(module2) { + if (wasm !== void 0) return wasm; + const imports = __wbg_get_imports(); + __wbg_init_memory(imports); + if (!(module2 instanceof WebAssembly.Module)) { + module2 = new WebAssembly.Module(module2); + } + const instance = new WebAssembly.Instance(module2, imports); + return __wbg_finalize_init(instance, module2); +} +function __wbg_init(input) { + return __async(this, null, function* () { + if (wasm !== void 0) return wasm; + const imports = __wbg_get_imports(); + if (typeof input === "string" || typeof Request === "function" && input instanceof Request || typeof URL === "function" && input instanceof URL) { + input = fetch(input); + } + __wbg_init_memory(imports); + const { instance, module: module2 } = yield __wbg_load(yield input, imports); + return __wbg_finalize_init(instance, module2); + }); +} +var wasm, heap, heap_next, cachedTextDecoder, cachedUint8Memory0, WASM_VECTOR_LEN, cachedTextEncoder, encodeString, cachedInt32Memory0, cachedFloat64Memory0, cachedBigInt64Memory0, CLOSURE_DTORS, cachedUint32Memory0, stack_pointer, OpType, BasePluginFinalization, BasePlugin, BaseStorageFinalization, BaseStorage, CollectionFinalization, Collection, CoreStorageFinalization, CoreStorage, DatabaseFinalization, Database, InMemoryFinalization, InMemory, IndexDBFinalization, IndexDB, OperationFinalization, Operation, PropertyFinalization, Property, QueryFinalization, Query, SchemaFinalization, Schema, WasmBindgenTestContextFinalization, WasmBindgenTestContext, ridb_wasm_default; +var init_ridb_wasm = __esm({ + "../../../ridb-wasm/pkg/ridb_wasm.js"() { + heap = new Array(128).fill(void 0); + heap.push(void 0, null, true, false); + heap_next = heap.length; + cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => { + throw Error("TextDecoder not available"); + } }; + if (typeof TextDecoder !== "undefined") { + cachedTextDecoder.decode(); + } + cachedUint8Memory0 = null; + WASM_VECTOR_LEN = 0; + cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => { + throw Error("TextEncoder not available"); + } }; + encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) { + return cachedTextEncoder.encodeInto(arg, view); + } : function(arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; + cachedInt32Memory0 = null; + cachedFloat64Memory0 = null; + cachedBigInt64Memory0 = null; + CLOSURE_DTORS = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((state) => { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); + }); + cachedUint32Memory0 = null; + stack_pointer = 128; + OpType = Object.freeze({ + /** + * Create operation. + */ + CREATE: 0, + "0": "CREATE", + /** + * Update operation. + */ + UPDATE: 1, + "1": "UPDATE", + /** + * Delete operation. + */ + DELETE: 2, + "2": "DELETE", + /** + * Query Operation. + */ + QUERY: 3, + "3": "QUERY", + /** + * Count Operation. + */ + COUNT: 4, + "4": "COUNT" + }); + BasePluginFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_baseplugin_free(ptr >>> 0)); + BasePlugin = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BasePluginFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_baseplugin_free(ptr); + } + /** + * @param {string} name + */ + constructor(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.baseplugin_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {any} + */ + get name() { + const ret = wasm.baseplugin_name(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {any} + */ + get docCreateHook() { + const ret = wasm.baseplugin_get_doc_create_hook(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {any} + */ + get docRecoverHook() { + const ret = wasm.baseplugin_get_doc_recover_hook(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @param {any} hook + */ + set docCreateHook(hook) { + wasm.baseplugin_set_doc_create_hook(this.__wbg_ptr, addHeapObject(hook)); + } + /** + * @param {any} hook + */ + set docRecoverHook(hook) { + wasm.baseplugin_set_doc_recover_hook(this.__wbg_ptr, addHeapObject(hook)); + } + }; + BaseStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_basestorage_free(ptr >>> 0)); + BaseStorage = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BaseStorageFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_basestorage_free(ptr); + } + /** + * Creates a new `BaseStorage` instance with the provided name and schema type. + * + * # Arguments + * + * * `name` - The name of the storage. + * * `schema_type` - The schema type in `JsValue` format. + * + * # Returns + * + * * `Result` - A result containing the new `BaseStorage` instance or an error. + * @param {string} name + * @param {object} schemas_js + * @param {object | undefined} [options] + */ + constructor(name, schemas_js, options) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.basestorage_new(retptr, ptr0, len0, addHeapObject(schemas_js), isLikeNone(options) ? 0 : addHeapObject(options)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {string} name + * @returns {any} + */ + getOption(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.basestorage_getOption(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {string} name + * @returns {Schema} + */ + getSchema(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.basestorage_getSchema(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return Schema.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {CoreStorage} + */ + get core() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.basestorage_core(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CoreStorage.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + CollectionFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_collection_free(ptr >>> 0)); + Collection = class _Collection { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Collection.prototype); + obj.__wbg_ptr = ptr; + CollectionFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CollectionFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_collection_free(ptr); + } + /** + * @returns {string} + */ + get name() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.collection_name(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * @returns {Schema} + */ + get schema() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.collection_schema(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return Schema.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Finds and returns all documents in the collection. + * + * This function is asynchronous and returns a `Schema` representing + * the documents found in the collection. + * @param {any} query + * @returns {Promise} + */ + find(query) { + const ret = wasm.collection_find(this.__wbg_ptr, addHeapObject(query)); + return takeObject(ret); + } + /** + * counts and returns all documents in the collection. + * + * This function is asynchronous and returns a `Schema` representing + * the documents found in the collection. + * @param {any} query + * @returns {Promise} + */ + count(query) { + const ret = wasm.collection_count(this.__wbg_ptr, addHeapObject(query)); + return takeObject(ret); + } + /** + * Finds and returns a single document in the collection by its ID. + * + * This function is asynchronous. + * @param {any} primary_key + * @returns {Promise} + */ + findById(primary_key) { + const ret = wasm.collection_findById(this.__wbg_ptr, addHeapObject(primary_key)); + return takeObject(ret); + } + /** + * Updates a document in the collection with the given data. + * + * This function is asynchronous and returns a `Result` indicating success or failure. + * + * # Arguments + * + * * `document` - A `JsValue` representing the partial document to update. + * @param {any} document + * @returns {Promise} + */ + update(document2) { + const ret = wasm.collection_update(this.__wbg_ptr, addHeapObject(document2)); + return takeObject(ret); + } + /** + * Creates a new document in the collection. + * + * This function is asynchronous and returns a `Result` indicating success or failure. + * + * # Arguments + * + * * `document` - A `JsValue` representing the document to create. + * @param {any} document + * @returns {Promise} + */ + create(document2) { + const ret = wasm.collection_create(this.__wbg_ptr, addHeapObject(document2)); + return takeObject(ret); + } + /** + * Deletes a document from the collection by its ID. + * + * This function is asynchronous. + * @param {any} primary_key + * @returns {Promise} + */ + delete(primary_key) { + const ret = wasm.collection_delete(this.__wbg_ptr, addHeapObject(primary_key)); + return takeObject(ret); + } + }; + CoreStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_corestorage_free(ptr >>> 0)); + CoreStorage = class _CoreStorage { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_CoreStorage.prototype); + obj.__wbg_ptr = ptr; + CoreStorageFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CoreStorageFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_corestorage_free(ptr); + } + /** + */ + constructor() { + const ret = wasm.corestorage_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * @param {any} document + * @param {Query} query + * @returns {boolean} + */ + matchesQuery(document2, query) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(query, Query); + wasm.corestorage_matchesQuery(retptr, this.__wbg_ptr, addBorrowedObject(document2), query.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = void 0; + } + } + }; + DatabaseFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_database_free(ptr >>> 0)); + Database = class _Database { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Database.prototype); + obj.__wbg_ptr = ptr; + DatabaseFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DatabaseFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_database_free(ptr); + } + /** + * @returns {Promise} + */ + start() { + const ret = wasm.database_start(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + close() { + const ptr = this.__destroy_into_raw(); + const ret = wasm.database_close(ptr); + return takeObject(ret); + } + /** + * @returns {boolean} + */ + get started() { + const ret = wasm.database_started(this.__wbg_ptr); + return ret !== 0; + } + /** + * Retrieves the collections in the database. + * + * This function returns an `Object` containing the collections. + * + * # Returns + * + * * `Result` - A result containing an `Object` with the collections or an error. + * @returns {object} + */ + get collections() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.database_collections(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {string} db_name + * @param {object} schemas_js + * @param {object} migrations_js + * @param {Array} plugins + * @param {any} module + * @param {string | undefined} [password] + * @param {any | undefined} [storage] + * @returns {Promise} + */ + static create(db_name, schemas_js, migrations_js, plugins, module2, password, storage) { + const ptr0 = passStringToWasm0(db_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(password) ? 0 : passStringToWasm0(password, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.database_create(ptr0, len0, addHeapObject(schemas_js), addHeapObject(migrations_js), addHeapObject(plugins), addHeapObject(module2), ptr1, len1, isLikeNone(storage) ? 0 : addHeapObject(storage)); + return takeObject(ret); + } + }; + InMemoryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_inmemory_free(ptr >>> 0)); + InMemory = class _InMemory { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_InMemory.prototype); + obj.__wbg_ptr = ptr; + InMemoryFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + InMemoryFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_inmemory_free(ptr); + } + /** + * @param {string} name + * @param {object} schemas_js + * @returns {Promise} + */ + static create(name, schemas_js) { + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_create(ptr0, len0, addHeapObject(schemas_js)); + return takeObject(ret); + } + /** + * @returns {any} + */ + get by_index() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.inmemory_by_index(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Operation} op + * @returns {Promise} + */ + write(op) { + _assertClass(op, Operation); + const ret = wasm.inmemory_write(this.__wbg_ptr, op.__wbg_ptr); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + find(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} primary_key + * @returns {Promise} + */ + findDocumentById(collection_name, primary_key) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + count(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + close() { + const ret = wasm.inmemory_close(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + start() { + const ret = wasm.inmemory_start(this.__wbg_ptr); + return takeObject(ret); + } + }; + IndexDBFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_indexdb_free(ptr >>> 0)); + IndexDB = class _IndexDB { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_IndexDB.prototype); + obj.__wbg_ptr = ptr; + IndexDBFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + IndexDBFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_indexdb_free(ptr); + } + /** + * @param {string} name + * @param {object} schemas_js + * @returns {Promise} + */ + static create(name, schemas_js) { + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_create(ptr0, len0, addHeapObject(schemas_js)); + return takeObject(ret); + } + /** + * @param {Operation} op + * @returns {Promise} + */ + write(op) { + _assertClass(op, Operation); + const ret = wasm.indexdb_write(this.__wbg_ptr, op.__wbg_ptr); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + find(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} primary_key + * @returns {Promise} + */ + findDocumentById(collection_name, primary_key) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + count(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + close() { + const ret = wasm.indexdb_close(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + start() { + const ret = wasm.indexdb_start(this.__wbg_ptr); + return takeObject(ret); + } + }; + OperationFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_operation_free(ptr >>> 0)); + Operation = class _Operation { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Operation.prototype); + obj.__wbg_ptr = ptr; + OperationFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + OperationFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_operation_free(ptr); + } + /** + * Retrieves the name of the collection. + * + * # Returns + * + * * `String` - The name of the collection. + * @returns {string} + */ + get collection() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.operation_collection(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Retrieves the type of operation. + * + * # Returns + * + * * `OpType` - The type of operation. + * @returns {OpType} + */ + get opType() { + const ret = wasm.operation_opType(this.__wbg_ptr); + return ret; + } + /** + * Retrieves the data involved in the operation. + * + * # Returns + * + * * `JsValue` - The data involved in the operation. + * @returns {any} + */ + get data() { + const ret = wasm.operation_data(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Retrieves the indexes related to the operation. + * + * # Returns + * + * * `Result` - A result containing the indexes as a `JsValue` or an error. + * @returns {any} + */ + get indexes() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.operation_indexes(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + PropertyFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_property_free(ptr >>> 0)); + Property = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + PropertyFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_property_free(ptr); + } + /** + * Checks is the schema is valid. + * + * # Returns + * + * Throws exception if not valid + * @returns {boolean} + */ + is_valid() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_is_valid(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the type of the property. + * + * # Returns + * + * * `PropertyType` - The type of the property. + * @returns {any} + */ + get type() { + const ret = wasm.property_type(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Retrieves the items of the property. + * + * # Returns + * + * * `Result` - A result containing the items as a `JsValue` or an error. + * @returns {any} + */ + get items() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_items(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the maximum number of items of the property. + * + * # Returns + * + * * `Result` - A result containing the maximum number of items as a `JsValue` or an error. + * @returns {any} + */ + get maxItems() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_maxItems(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the minimum number of items of the property. + * + * # Returns + * + * * `Result` - A result containing the minimum number of items as a `JsValue` or an error. + * @returns {any} + */ + get minItems() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_minItems(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the maximum length of the property. + * + * # Returns + * + * * `Result` - A result containing the maximum length as a `JsValue` or an error. + * @returns {any} + */ + get maxLength() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_maxLength(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the minimum length of the property. + * + * # Returns + * + * * `Result` - A result containing the minimum length as a `JsValue` or an error. + * @returns {any} + */ + get minLength() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_minLength(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the nested properties of the property. + * + * # Returns + * + * * `Result` - A result containing the nested properties as a `JsValue` or an error. + * @returns {any} + */ + get properties() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_properties(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + QueryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_query_free(ptr >>> 0)); + Query = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + QueryFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_query_free(ptr); + } + /** + * @param {any} query + * @param {Schema} schema + */ + constructor(query, schema) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(schema, Schema); + var ptr0 = schema.__destroy_into_raw(); + wasm.query_new(retptr, addHeapObject(query), ptr0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {any} + */ + get query() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.query_query(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {any} + */ + parse() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.query_parse(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + SchemaFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_schema_free(ptr >>> 0)); + Schema = class _Schema { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Schema.prototype); + obj.__wbg_ptr = ptr; + SchemaFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SchemaFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_schema_free(ptr); + } + /** + * @param {any} document + */ + validate_schema(document2) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_validate_schema(retptr, this.__wbg_ptr, addHeapObject(document2)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {boolean} + */ + is_valid() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_is_valid(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Creates a new `Schema` instance from a given `JsValue`. + * + * # Arguments + * + * * `schema` - A `JsValue` representing the schema. + * + * # Returns + * + * * `Result` - A result containing the new `Schema` instance or an error. + * @param {any} schema + * @returns {Schema} + */ + static create(schema) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_create(retptr, addHeapObject(schema)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return _Schema.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the version of the schema. + * + * # Returns + * + * * `i32` - The version of the schema. + * @returns {number} + */ + get version() { + const ret = wasm.schema_version(this.__wbg_ptr); + return ret; + } + /** + * Retrieves the primary key of the schema. + * + * # Returns + * + * * `String` - The primary key of the schema. + * @returns {string} + */ + get primaryKey() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_primaryKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Retrieves the type of the schema. + * + * # Returns + * + * * `String` - The type of the schema. + * @returns {string} + */ + get type() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_type(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Retrieves the indexes of the schema, if any. + * + * # Returns + * + * * `Option>` - The indexes of the schema, if any. + * @returns {(string)[] | undefined} + */ + get indexes() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_indexes(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {(string)[] | undefined} + */ + get required() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_required(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {(string)[] | undefined} + */ + get encrypted() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_encrypted(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the properties of the schema. + * + * # Returns + * + * * `Result` - A result containing the properties as a `JsValue` or an error. + * @returns {any} + */ + get properties() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_properties(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + WasmBindgenTestContextFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmbindgentestcontext_free(ptr >>> 0)); + WasmBindgenTestContext = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmBindgenTestContextFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmbindgentestcontext_free(ptr); + } + /** + * Creates a new context ready to run tests. + * + * A `Context` is the main structure through which test execution is + * coordinated, and this will collect output and results for all executed + * tests. + */ + constructor() { + const ret = wasm.wasmbindgentestcontext_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Inform this context about runtime arguments passed to the test + * harness. + * @param {any[]} args + */ + args(args) { + const ptr0 = passArrayJsValueToWasm0(args, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.wasmbindgentestcontext_args(this.__wbg_ptr, ptr0, len0); + } + /** + * Executes a list of tests, returning a promise representing their + * eventual completion. + * + * This is the main entry point for executing tests. All the tests passed + * in are the JS `Function` object that was plucked off the + * `WebAssembly.Instance` exports list. + * + * The promise returned resolves to either `true` if all tests passed or + * `false` if at least one test failed. + * @param {any[]} tests + * @returns {Promise} + */ + run(tests) { + const ptr0 = passArrayJsValueToWasm0(tests, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.wasmbindgentestcontext_run(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + }; + ridb_wasm_default = __wbg_init; + } +}); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + BasePlugin: () => BasePlugin, + BaseStorage: () => BaseStorage, + Collection: () => Collection, + Database: () => Database, + OpType: () => OpType, + Operation: () => Operation, + Property: () => Property, + Query: () => Query, + RIDB: () => RIDB, + Schema: () => Schema, + SchemaFieldType: () => SchemaFieldType, + StorageType: () => StorageType +}); +module.exports = __toCommonJS(src_exports); + +// wasm:/Users/ribo/Projects/personal/ridb-rust/packages/ridb/node_modules/@trust0/ridb-wasm/ridb_wasm_bg.wasm +var ridb_wasm_bg_default = Buffer.from("AGFzbQEAAAABgwIjYAF/AGACf38Bf2ACf38AYAN/f38AYAF/AX9gA39/fwF/YAR/f39/AGAFf39/f38AYAABf2AEf39/fwF/YAAAYAV/f39/fwF/YAZ/f39/f38AYAd/f39/f39/AGAFf39/fn8AYAF+AX9gBn9/f39/fwF/YAV/f35/fwBgAXwBf2ABfwF8YAJ/fwF+YAN/f38BfmACfn8AYAl/f39/f39+fn4AYAd/f39/f39/AX9gA35/fwF/YAt/f39/f39/f39/fwF/YAl/f39/f39/f38Bf2ADf35+AGAEf35+fwBgBH9+f38AYAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AAsArmwEDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAADd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcAAQN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQABAN3YmcSX193YmluZGdlbl9pc19udWxsAAQDd2JnEl9fd2JnX2lubWVtb3J5X25ldwAEA3diZydfX3diZ19maW5kRG9jdW1lbnRCeUlkXzNjOTUzZTdjYjgxNjYzMWYACQN3YmccX193Ymdfd3JpdGVfNWVkMjE3NzE4Yzk0M2JiNgABA3diZxFfX3diZ19pbmRleGRiX25ldwAEA3diZxxfX3diZ19jbG9zZV85MDc5ZDYwOWY1MWYzMTViAAQDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwASA3diZxVfX3diaW5kZ2VuX3N0cmluZ19nZXQAAgN3YmcVX193YmluZGdlbl9udW1iZXJfZ2V0AAIDd2JnHF9fd2JnX2NvdW50XzU2YjczN2YzZTFmOTgwOGIACQN3YmccX193Ymdfc3RhcnRfOGU5MGJhNGI5YTY2YWQ2ZAAEA3diZxxfX3diZ19hcHBseV81Y2MyMGE5YzU5YWE0MmNjAAMDd2JnEl9fd2JnX2RhdGFiYXNlX25ldwAEA3diZxtfX3diZ19maW5kXzRmYjczYzYxOTgzZjMzMDMACQN3YmcUX193YmdfY29sbGVjdGlvbl9uZXcABAN3YmcWX193YmluZGdlbl9pc19mdW5jdGlvbgAEA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEA3diZxNfX3diaW5kZ2VuX2lzX2FycmF5AAQDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAQDd2JnE19fd2JpbmRnZW5faXNfZmFsc3kABAN3YmcUX193YmluZGdlbl9pc19iaWdpbnQABAN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAEA3diZw1fX3diaW5kZ2VuX2luAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0AA8Dd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAQN3YmcaX193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQADwN3YmcSX193YmluZGdlbl9jYl9kcm9wAAQDd2JnHV9fd2JnX2NyeXB0b18xZDFmMjI4MjRhNmEwODBjAAQDd2JnHl9fd2JnX3Byb2Nlc3NfNGE3Mjg0N2NjNTAzOTk1YgAEA3diZx9fX3diZ192ZXJzaW9uc19mNjg2NTY1ZTU4NmRkOTM1AAQDd2JnG19fd2JnX25vZGVfMTA0YTJmZjhkNmVhMDNhMgAEA3diZx5fX3diZ19yZXF1aXJlX2NjYTkwYjFhOTRhMDI1NWIACAN3YmcfX193YmdfbXNDcnlwdG9fZWIwNWU2MmI1MzBhMTUwOAAEA3diZyVfX3diZ19yYW5kb21GaWxsU3luY181YzljOTU1YWE1NmI2MDQ5AAIDd2JnJl9fd2JnX2dldFJhbmRvbVZhbHVlc18zYWE1NmFhNmVkZWM4NzRjAAIDd2JnKF9fd2JnX2luc3RhbmNlb2ZfV2luZG93X2Y0MDE5NTNhMmNmODYyMjAABAN3YmcjX193YmdfbG9jYWxTdG9yYWdlX2UzODFkMzRkMGM0MGM3NjEABAN3YmcgX193YmdfaW5kZXhlZERCXzdjNTFkOTA1NjY2N2Y0ZTAABAN3YmcbX193Ymdfb3Blbl9mMGQ3MjU5ZmQ3ZTY4OWNlAAkDd2JnHl9fd2JnX2dldEl0ZW1fMTY0ZThlNTI2NTA5NWI4NwAGA3diZxxfX3diZ19lcnJvcl84ZTM5MjhjZmI4YTQzZTJiAAADd2JnGl9fd2JnX2xvZ181YmI1Zjg4ZjI0NWQ3NzYyAAADd2JnHV9fd2JnX2xlbmd0aF85YWU1ZGFmOWE2OTBjYmE5AAQDd2JnH19fd2JnX2NvbnRhaW5zX2M2NWI0NDQwMGI1NDkyODYABQN3YmcaX193YmdfZ2V0XzkxMGJiYjk0YWJkY2Y0ODgAAwN3YmcdX193YmdfdGFyZ2V0XzJmYzE3N2UzODZjOGI3YjAABAN3YmcyX193YmdfaW5zdGFuY2VvZl9JZGJPcGVuRGJSZXF1ZXN0XzNmNGExNjZiYzAzNDA1NzgABAN3YmcpX193Ymdfc2V0b251cGdyYWRlbmVlZGVkX2FkNzY0NTM3M2M3ZDVlMWIAAgN3YmcsX193YmdfaW5zdGFuY2VvZl9JZGJSZXF1ZXN0XzkzMjQ5ZGEwNGY1MzcwYjYABAN3YmcdX193YmdfcmVzdWx0XzZjZWRmNWY3ODYwMGE3OWMABAN3YmccX193YmdfZXJyb3JfNjg1YjIwMDI0ZGMyZDZjYQAEA3diZyNfX3diZ19zZXRvbnN1Y2Nlc3NfNjMyY2UwYTE0NjA0NTVjMgACA3diZyFfX3diZ19zZXRvbmVycm9yXzg0NzliMzNlNzU2OGE5MDQAAgN3YmckX193Ymdfc2V0b25jb21wbGV0ZV9kOGU0MjM2NjY1Y2JmMWUyAAIDd2JnIV9fd2JnX3NldG9uZXJyb3JfZGEwNzFlYzk0ZTE0ODM5NwACA3diZyJfX3diZ19vYmplY3RTdG9yZV9kYTQ2ODc5M2JkOWRmMTdiAAUDd2JnLV9fd2JnX2luc3RhbmNlb2ZfSWRiRGF0YWJhc2VfZGI2NzFjZjI0NTRhOTU0MgAEA3diZydfX3diZ19vYmplY3RTdG9yZU5hbWVzXzU4OGI1OTI0Mjc0MjM5ZmQABAN3YmccX193YmdfY2xvc2VfNmJmZTRjYTJmZTY3Y2I2NwAAA3diZyhfX3diZ19jcmVhdGVPYmplY3RTdG9yZV84ODJmMmY2YjFiMWVmMDQwAAUDd2JnIl9fd2JnX3RyYW5zYWN0aW9uX2MzMmJiMTBjOWM2OTJmNGIABQN3YmciX193YmdfdHJhbnNhY3Rpb25fMWUyODJhNzllOWJiNzM4NwAJA3diZx1fX3diZ19kZWxldGVfZjYwYmJhN2QwYWU1OWE0ZgABA3diZxpfX3diZ19nZXRfNTM2MWI2NGNhYzBkMDgyNgABA3diZx1fX3diZ19nZXRBbGxfMjc4MmU0MzhkZjY5OTM4NAAEA3diZxpfX3diZ19wdXRfMjI3OTJlMTc1ODBjYTE4YgAFA3diZxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxAAEDd2JnFF9fd2JpbmRnZW5fYXNfbnVtYmVyABMDd2JnHV9fd2JnX1N0cmluZ18zODliNTRiZDlkMjUzNzVmAAIDd2JnJF9fd2JnX2dldHdpdGhyZWZrZXlfNGE5MmE1ZWNhNjA4NzliOQABA3diZxpfX3diZ19zZXRfOTE4MjcxMmFiZWJmODJlZgADA3diZxpfX3diZ19sb2dfMjhlZWU0ZTY0MzJlZmQyNAACA3diZx1fX3diZ19TdHJpbmdfNTViOGJkYzRiYzI0MzY3NwACA3diZyVfX3diZ19nZXRFbGVtZW50QnlJZF84NDU4ZjJhNmMyODQ2N2RjAAUDd2JnJV9fd2JnX3NldHRleHRjb250ZW50X2ZjM2ZmNDg1Yjk2ZmNiMWQAAwN3YmckX193Ymdfd2JndGVzdGludm9rZV84YzIwZjQxMzJhZjJiZGVkAAIDd2JnK19fd2JnX3diZ3Rlc3RvdXRwdXR3cml0ZWxuXzRkYjNiZDY0OTE0ZWM5NTUAAAN3YmccX193Ymdfc3RhY2tfNDM2MjczYzIxNjU4MTY5YgAEA3diZy9fX3diZ19zdGF0aWNfYWNjZXNzb3JfZG9jdW1lbnRfZDRiNmFlN2Y1NTc4NDgwZgAIA3diZxxfX3diZ19zdGFja18xN2M3N2U5ZjViZmU2NzE0AAIDd2JnG19fd2JnX3NlbGZfNTUxMDYzNTdlYzEwZWNkNAAEA3diZyJfX3diZ19jb25zdHJ1Y3Rvcl9mZDBkMjJkNjBiN2RmZDcyAAQDd2JnG19fd2JnX25hbWVfN2Y0MzlkMjRmZjdiYTFkMwACA3diZyJfX3diZ190ZXh0Y29udGVudF82N2U0ZTgxMWNiZGYwMGZjAAIDd2JnHF9fd2JnX3N0YWNrXzQ0NzQzZmI3ZDcxOTI2YTAABAN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgACA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAIDd2JnJV9fd2JnX3F1ZXVlTWljcm90YXNrXzNjYmFlMmVjNmI2Y2QzZDYABAN3YmclX193YmdfcXVldWVNaWNyb3Rhc2tfNDgxOTcxYjBkODdmM2RkNAAAA3diZxpfX3diZ19nZXRfYmQ4ZTMzOGZiZDVmNWNjOAABA3diZx1fX3diZ19sZW5ndGhfY2Q3YWY4MTE3NjcyYjhiOAAEA3diZxpfX3diZ19uZXdfMTZiMzA0YTJjZmE3ZmY0YQAIA3diZyBfX3diZ19uZXdub2FyZ3NfZTI1ODA4N2NkMGRhYTBlYQABA3diZxpfX3diZ19uZXdfZDliYzNhMDE0NzYzNDY0MAAIA3diZxtfX3diZ19uZXh0XzQwZmMzMjdiZmM4NzcwZTYABAN3YmcbX193YmdfbmV4dF8xOTZjODQ0NTBiMzY0MjU0AAQDd2JnG19fd2JnX2RvbmVfMjk4YjU3ZDIzYzBmYzgwYwAEA3diZxxfX3diZ192YWx1ZV9kOTNjNjUwMTFmNTFhNDU2AAQDd2JnH19fd2JnX2l0ZXJhdG9yXzJjZWU2ZGFkZmQ5NTZkZmEACAN3YmcaX193YmdfZ2V0X2UzYzI1NDA3NjU1N2UzNDgAAQN3YmcbX193YmdfY2FsbF8yN2MwZjg3ODAxZGVkZjkzAAEDd2JnGl9fd2JnX25ld183MmZiOWExOGI1YWUyNjI0AAgDd2JnG19fd2JnX3NlbGZfY2UwZGJmYzQ1Y2YyZjViZQAIA3diZx1fX3diZ193aW5kb3dfYzZmYjkzOWE3ZjQzNjc4MwAIA3diZyFfX3diZ19nbG9iYWxUaGlzX2QxZTZhZjQ4NTZiYTMzMWIACAN3YmcdX193YmdfZ2xvYmFsXzIwN2I1NTg5NDI1Mjc0ODkACAN3YmcaX193Ymdfc2V0X2Q0NjM4ZjcyMjA2OGYwNDMAAwN3YmcbX193YmdfZnJvbV84OWUzZmMzYmE1ZTZmYjQ4AAQDd2JnHl9fd2JnX2ZvckVhY2hfMmJlOGRlNzM0N2Q2MzMzMgADA3diZx5fX3diZ19pc0FycmF5XzJhYjY0ZDk1ZTA5ZWEwYWUABAN3YmcZX193Ymdfb2ZfNGEyYjMxM2E0NTNlYzA1OQAEA3diZxtfX3diZ19wdXNoX2E1YjA1YWVkYzcyMzRmOWYAAQN3YmctX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl84MzY4MjViZTA3ZDRjOWQyAAQDd2JnGl9fd2JnX25ld18yOGM1MTFkOWJhZWJmYTg5AAEDd2JnHl9fd2JnX21lc3NhZ2VfNWJmMjgwMTZjMmI0OWNmYgAEA3diZxtfX3diZ19uYW1lX2U3NDI5ZjBkZGE2MDc5ZTIABAN3YmcbX193YmdfY2FsbF9iM2NhN2M2MDUxZjliZWMxAAUDd2JnG19fd2JnX2NhbGxfOTM4OTkyYzgzMmY3NDMxNAALA3diZxpfX3diZ19zZXRfODQxNzI1N2FhZWRjOTM2YgAFA3diZyRfX3diZ19pc1NhZmVJbnRlZ2VyX2Y3YjA0ZWYwMjI5NmM0ZDIABAN3YmceX193YmdfZW50cmllc185NWNjMmM4MjNiMjg1YTA5AAQDd2JnGV9fd2JnX2lzXzAxMGZkYzBmNGFiOTY5MTYAAQN3YmcbX193Ymdfa2V5c185MWU0MTJiNGIyMjI2NTlmAAQDd2JnGl9fd2JnX25ld184MTc0MDc1MGRhNDA3MjRmAAEDd2JnHl9fd2JnX3Jlc29sdmVfYjAwODNhNzk2NzgyOGVjOAAEA3diZxtfX3diZ190aGVuXzBjODZhNjBlOGZjZmU5ZjYAAQN3YmcbX193YmdfdGhlbl9hNzNjYWE5YTg3OTkxNTY2AAUDd2JnHV9fd2JnX2J1ZmZlcl8xMmQwNzljYzIxZTE0YmRiAAQDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2FhNGExN2MzM2EwNmU1Y2IABQN3YmcaX193YmdfbmV3XzYzYjkyYmM4NjcxZWQ0NjQABAN3YmcaX193Ymdfc2V0X2E0N2JhYzcwMzA2YTE5YTcAAwN3YmcdX193YmdfbGVuZ3RoX2MyMGE0MGYxNTAyMGQ2OGEABAN3YmcsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzJiM2JiZWNkMDMzZDE5ZjYABAN3YmckX193YmdfbmV3d2l0aGxlbmd0aF9lOWI0ODc4Y2ViYWRiM2QzAAQDd2JnH19fd2JnX3N1YmFycmF5X2ExZjczY2Q0YjViNDJmZTEABQN3YmccX193YmdfYXBwbHlfMGE1YWE2MDM4ODFlNmQ3OQAFA3di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ZXNfMTQAgAZCX193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yXzE1AIEGRV9fd2JndF90ZXN0X3F1ZXJ5X2dldF9xdWVyeV9ub3JtYWxpemF0aW9uX25lc3RlZF9sb2dpY2FsX29wZXJhdG9yc18xNgCCBkJfX3diZ3RfdGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3JfMTcAgwY6X193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fY29tcGxleF9taXhlZF8xOACEBiZfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9lbXB0eV9xdWVyeV8xOQCFBitfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5XzIwAIYGLV9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc18yMQCHBi5fX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9pbnZhbGlkX2luX29wZXJhdG9yXzIyAIgGMl9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X2xvZ2ljYWxfb3BlcmF0b3JzXzIzAIkGFl9fd2JnX2Jhc2VzdG9yYWdlX2ZyZWUAiwMPYmFzZXN0b3JhZ2VfbmV3AKYCFWJhc2VzdG9yYWdlX2dldE9wdGlvbgDQAxViYXNlc3RvcmFnZV9nZXRTY2hlbWEAuAMQYmFzZXN0b3JhZ2VfY29yZQCWBRFfX3diZ19zY2hlbWFfZnJlZQCqBRZzY2hlbWFfdmFsaWRhdGVfc2NoZW1hAL0ED3NjaGVtYV9pc192YWxpZAD7Aw1zY2hlbWFfY3JlYXRlAJAEDnNjaGVtYV92ZXJzaW9uAK4GEXNjaGVtYV9wcmltYXJ5S2V5AIEEC3NjaGVtYV90eXBlAIIEDnNjaGVtYV9pbmRleGVzAPECD3NjaGVtYV9yZXF1aXJlZADyAhBzY2hlbWFfZW5jcnlwdGVkAPMCEXNjaGVtYV9wcm9wZXJ0aWVzALAEHV9fd2JndF90ZXN0X3NjaGVtYV9jcmVhdGlvbl8zAIsGH19fd2JndF90ZXN0X3NjaGVtYV92YWxpZGF0aW9uXzQAjAYcX193Ymd0X3Rlc3RfaW52YWxpZF9zY2hlbWFfNQCNBhNfX3diZ19kYXRhYmFzZV9mcmVlALgCDmRhdGFiYXNlX3N0YXJ0ANUEDmRhdGFiYXNlX2Nsb3NlALYFEGRhdGFiYXNlX3N0YXJ0ZWQArwYUZGF0YWJhc2VfY29sbGVjdGlvbnMAsQQPZGF0YWJhc2VfY3JlYXRlAKcEFF9fd2JnX29wZXJhdGlvbl9mcmVlAIMEFG9wZXJhdGlvbl9jb2xsZWN0aW9uAIQEEG9wZXJhdGlvbl9vcFR5cGUAsAYOb3BlcmF0aW9uX2RhdGEAvAURb3BlcmF0aW9uX2luZGV4ZXMAsgQVX193YmdfYmFzZXBsdWdpbl9mcmVlAOUEDmJhc2VwbHVnaW5fbmV3AK8FD2Jhc2VwbHVnaW5fbmFtZQCwBR5iYXNlcGx1Z2luX2dldF9kb2NfY3JlYXRlX2hvb2sAqQQfYmFzZXBsdWdpbl9nZXRfZG9jX3JlY292ZXJfaG9vawCqBB5iYXNlcGx1Z2luX3NldF9kb2NfY3JlYXRlX2hvb2sAwQUfYmFzZXBsdWdpbl9zZXRfZG9jX3JlY292ZXJfaG9vawDCBQdtYWluX2pzAMsFDWlzX2RlYnVnX21vZGUA2gcTX193YmdfcHJvcGVydHlfZnJlZQCUBRFwcm9wZXJ0eV9pc192YWxpZAD8Aw1wcm9wZXJ0eV90eXBlAPMEDnByb3BlcnR5X2l0ZW1zAKcDEXByb3BlcnR5X21heEl0ZW1zAK4DEXByb3BlcnR5X21pbkl0ZW1zAK8DEnByb3BlcnR5X21heExlbmd0aACwAxJwcm9wZXJ0eV9taW5MZW5ndGgAsQMTcHJvcGVydHlfcHJvcGVydGllcwCsAx9fX3diZ3RfdGVzdF9wcm9wZXJ0eV9jcmVhdGlvbl8wAI8GIV9fd2JndF90ZXN0X3Byb3BlcnR5X3ZhbGlkYXRpb25fMQCQBh5fX3diZ3RfdGVzdF9pbnZhbGlkX3Byb3BlcnR5XzIAkQYVX193YmdfY29sbGVjdGlvbl9mcmVlALACD2NvbGxlY3Rpb25fbmFtZQCFBBFjb2xsZWN0aW9uX3NjaGVtYQDKAw9jb2xsZWN0aW9uX2ZpbmQAiwUQY29sbGVjdGlvbl9jb3VudAD2BRNjb2xsZWN0aW9uX2ZpbmRCeUlkAP4EEWNvbGxlY3Rpb25fdXBkYXRlAIYFEWNvbGxlY3Rpb25fY3JlYXRlAIcFEWNvbGxlY3Rpb25fZGVsZXRlALYEE19fd2JnX2lubWVtb3J5X2ZyZWUA/AIPaW5tZW1vcnlfY3JlYXRlAL4EEWlubWVtb3J5X2J5X2luZGV4ALMEDmlubWVtb3J5X3dyaXRlAOEEDWlubWVtb3J5X2ZpbmQA/wQZaW5tZW1vcnlfZmluZERvY3VtZW50QnlJZADNBQ5pbm1lbW9yeV9jb3VudACABQ5pbm1lbW9yeV9jbG9zZQChBQ5pbm1lbW9yeV9zdGFydACiBRJfX3diZ19pbmRleGRiX2ZyZWUA+gEOaW5kZXhkYl9jcmVhdGUA5gQNaW5kZXhkYl93cml0ZQC6BAxpbmRleGRiX2ZpbmQA2QUYaW5kZXhkYl9maW5kRG9jdW1lbnRCeUlkANoFDWluZGV4ZGJfY291bnQA2wUNaW5kZXhkYl9jbG9zZQCjBQ1pbmRleGRiX3N0YXJ0AKgGD2NvcmVzdG9yYWdlX25ldwCyBhhjb3Jlc3RvcmFnZV9tYXRjaGVzUXVlcnkA+AMWX193YmdfY29yZXN0b3JhZ2VfZnJlZQCxBiFfX3diZ193YXNtYmluZGdlbnRlc3Rjb250ZXh0X2ZyZWUApgUad2FzbWJpbmRnZW50ZXN0Y29udGV4dF9uZXcAmgYbd2FzbWJpbmRnZW50ZXN0Y29udGV4dF9hcmdzAIgFGndhc21iaW5kZ2VudGVzdGNvbnRleHRfcnVuANcEFV9fd2JndGVzdF9jb25zb2xlX2xvZwDeBRdfX3diZ3Rlc3RfY29uc29sZV9kZWJ1ZwDfBRZfX3diZ3Rlc3RfY29uc29sZV9pbmZvAOAFFl9fd2JndGVzdF9jb25zb2xlX3dhcm4A4QUXX193Ymd0ZXN0X2NvbnNvbGVfZXJyb3IA4gURX193YmluZGdlbl9tYWxsb2MA1QUSX193YmluZGdlbl9yZWFsbG9jAPcFE19fd2JpbmRnZW5fZXhwb3J0XzIBAHxfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19BX19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gzMGZjZjI0ZjkzMGFjNzNiAMYGfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDAzNDNhZjNmZjIxMGJjNmMAxQYfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCLB3xfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuX19BX0JfQ19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gwODMzMDU0ODRmNTNmNTYyAOgEfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faGQwYjdiNzAzMWUzM2EzODQAzAYPX193YmluZGdlbl9mcmVlAOAGFF9fd2JpbmRnZW5fZXhuX3N0b3JlAPIGP3dhc21fYmluZGdlbl9fY29udmVydF9fY2xvc3VyZXNfX2ludm9rZTBfbXV0X19oODMxNjU0MDAzYTgxMTRjMgDVBj93YXNtX2JpbmRnZW5fX2NvbnZlcnRfX2Nsb3N1cmVzX19pbnZva2UzX211dF9faDc5YWQxYzZlNmExOTdiZTIAvAY/d2FzbV9iaW5kZ2VuX19jb252ZXJ0X19jbG9zdXJlc19faW52b2tlMl9tdXRfX2gzM2IzMGM1NjRmNDNhOGE1AMMGEF9fd2JpbmRnZW5fc3RhcnQAywUJqAcFAEEBC9kByQbQBJYE6wbqBqwG9gP2A4oDigOYA5gD6gPqA5sDmwP/A/8D9QP1A+kD6QPsA+wD7gPuA/4D/gPvA+8D6wPrA+QC5AKJA4kD5gPmA5wDnAPtA+0DrQOtA+gD6APnA+cD/QP9A4AEgATyA9wB+gS9AbUEgQKdA9MB9wOgAaEDuQHaA/MBkAOsAaQE2wGEA7oB2gGiA88BiwSb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AygCCEUNASADKAIMIQYMBgsgA0EBNgLkASADQcy0wAA2AuABIANCATcC7AEgAyADQbACaq1CgICAgMAAhDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNBSABIAJBARD6BgwFCyADIAggBhACNgLMAiADQeABaiADQYQCaiADQcwCaiADQaQCahCtBSADLQDgAUUEQCADKALMAiIEQYQBTwRAIAQQAAsgAygCpAIiBEGEAU8EQCAEEAALIAMoAsABIgQEQCAIIARBARD6BgsgCUEBaiIJIAdHDQEMBwsLIAMoAuQBIQYgAygCzAIiAUGEAUkNAyABEAAMAwsgAyAEIAUgDhCNAyADKAIABEAgAygCBCEGDAgLIAQQASEGDAULIANBATYC5AEgA0GItMAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUEIAMoAtACIgEgAygC1AIQAiEGIAMoAswCIgJFDQYgASACQQEQ+gYMBgsgA0EBNgLkASADQay0wAA2AuABIANCATcC7AEgAyADQcABaq1CgICAgNAThDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNACABIAJBARD6BgsgAygCpAIiAUGEAUkNACABEAALIAMoAsABIgEEQCADKALEASABQQEQ+gYLIAMoApACIgFBhAFPBEAgARAACyADKAKEAiIBQYQBSQ0DIAEQAAwDCyADKAKEAiEGIAMoApACIgRBhAFJDQAgBBAACyADIAY2AqACIAMgAygC6AIgAygC7AIQAjYCzAIgA0HgAWogA0HYAWogA0HMAmogA0GgAmoQrQUgAy0A4AFFBEAgAygCzAIiBEGEAU8EQCAEEAALIAMoAqACIgRBhAFJDQQgBBAADAQLIAMoAuQBIQYgAygCzAIiAUGEAU8EQCABEAALIAMoAqACIgFBhAFJDQEgARAADAELIANBnAJqEIIHRQRAIANBAjYC5AEgA0HoscAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUE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AnQQsgUMBgsgAkHYAWogARCeASACLQDYASIFQQZGBEAgAigC3AEMBgsgAkGOAmoiByAKQQJqLQAAOgAAIAJBgAJqIgkgBkEIaikDADcDACACIAovAAA7AYwCIAIgBikDADcD+AEgAigC3AEhCyACKALIASIDIAIoAsABRgRAIAJBwAFqEL0DCyACKALEASADQRhsaiIEIAIpA/gBNwMIIAQgBToAACAEIAIvAYwCOwABIAQgCzYCBCAEQQNqIActAAA6AAAgBEEQaiAJKQMANwMAIAIgA0EBajYCyAFBACEFIAEoAhQiBCABKAIQIgNJDQALDAMLIABBBjoAACAAIAg2AgQMEAsgBkEwa0H/AXFBCk8EQCACQQo2AtgBIAIgCBCYBSACIAJB2AFqIAIoAgAgAigCBBCyBTYCrAEMBgsgAkHYAWogAUEBEN0BAn4CQCACKQPYASIUQgNSBEAgAikD4AEhEwJAAkAgFKdBAWsOAgABAwsgAkECOgCoAUIADAMLIAJBAjoAqAEgE0I/iAwCCyAAIAIoAuABNgIEIABBBjoAAAwRCyACIBNC////////////AINCgICAgICAgPj/AFRBAXQ6AKgBQgILIRQgAkG4AWogEzcDACACQbABaiAUNwMAIABBEGogEzcDACAAQQhqIBQ3AwAgACACKQOoATcDAAwPCyABIAEtABhBAWsiAzoAGCADQf8BcQRAIAEgBEEEazYCFCACQcABaiEGQQAhCiMAQfABayIDJAAgA0EBOgAQIAMgATYCDCADQThqIgQgA0EMahCTAgJAAkACQCADLQA4RQRAIAMtADlFDQEgAygCDCEFIwBBEGsiByQAIAVBADYCCCAFIAUoAhRBAWo2AhQgB0EEaiAFQQxqIAUQjgIgBygCCCEMAkACQCAHKAIEIglBAkcEQCAHKAIMIQUCQCAJRQRAQQAhCSAFQQBOBEAgBUUEQEEBIQsMAwtByc3DAC0AABpBASEJIAVBARDtBiILDQILIAkgBRDZBgALQQAhCSAFQQBIDQIgBUUEQEEBIQsMAQtByc3DAC0AABpBASEJIAVBARDtBiILRQ0CCyALIAwgBRD6AiEJIAQgBTYCCCAEIAk2AgQgBCAFNgIADAILIARBgICAgHg2AgAgBCAMNgIEDAELIAkgBRDZBgALIAdBEGokACADKAI4IgRBgICAgHhHDQILIAMoAjwhBCAGQQY6AAAgBiAENgIEDAILIAZBADYCDCAGQQA2AgQgBkEFOgAADAELIAMoAjwhBSADKAJAIQcgA0EANgIcIANBADYCFCADIAc2AmggAyAFNgJkIAMgBDYCYCADQThqIANBDGoQ2wMCQCADLQA4QQZHBEAgA0EwaiADQcgAaikDADcDACADQShqIANBQGsiESkDADcDACADIAMpAzg3AyAgA0HQAWogA0EUaiADQeAAaiADQSBqEOYBAkACQAJAAkAgAy0A0AEOBwMDAwECAAMACyADQdABakEEchD7AQwCCyADKALUASIERQ0BIAMoAtgBIARBARD6BgwBCyADQdABakEEchC5BCADKALUASIERQ0AIAMoAtgBIARBGGxBCBD6BgsgA0HkAGohCyADQcQAaiEJIANB1AFqIQwgA0HQAWpBBHIhDgNAAkAgA0GsAWohBUEAIQ0jAEEQayIEJAAgBEEEaiADQQxqIgcQkwICQAJAAkAgBC0ABEUEQCAELQAFRQRAIAVBgICAgHg2AgAMBAsgBygCACIHQQA2AgggByAHKAIUQQFqNgIUIARBBGogB0EMaiAHEI4CIAQoAgghDyAEKAIEQQJGDQEgBCgCDCIHQQBOBEAgB0UEQEEBIRAMBAtByc3DAC0AABpBASENIAdBARDtBiIQDQMLIA0gBxDZBgALIAUgBCgCCDYCBCAFQYGAgIB4NgIADAILIAVBgYCAgHg2AgAgBSAPNgIEDAELIBAgDyAHEPoCIQ0gBSAHNgIIIAUgDTYCBCAFIAc2AgALIARBEGokAAJAAkACQAJAIAMoAqwBIgRBgICAgHhrDgIEAAELIAMoArABIQUMAQsgAykCsAEhEyADKAKwASADQbgBaiADQQxqENsDIAMtALgBQQZHDQEgAygCvAEhBSAERQ0AIARBARD6BgsgBkEGOgAAIAYgBTYCBAwECyAMIAMpA7gBNwIAIAxBEGogA0HIAWopAwA3AgAgDEEIaiADQcABaikDADcCACADQegAaiADQdgBaikCACIUNwMAIANB8ABqIANB4AFqKQIAIhU3AwAgA0H4AGoiBSADQegBaigCADYCACADIAMpAtABIhY3A2AgCUEQaiAVNwIAIAlBCGogFDcCACAJIBY3AgAgCUEYaiAFKAIANgIAIAMgE6ci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DCAEIAJBUGxqIgJBKGsgBzYCACACQTBrIB43AwAgAkEkayIDIAEpAqABNwIAIANBCGogAUGoAWopAgA3AgAgA0EQaiABQbABaigCADYCACACQQhrIBw3AwAgAkEQayAdNwMACyACQSBrIQMCQAJAAkACQCAOLQAcIgoOAwAAAwELIAEgDigCGBABNgKYASABIAEoAmggASgCbBACNgKcASABQUBrIAFBmAFqIAFBnAFqEOMFIAEoAkQhBCABKAJAQQFxBEAgASAENgLEASABQQE2AqQBIAFBrJHAADYCoAEgAUIBNwKsASABIAFBxAFqrUKAgICAMIQ3A8gBIAEgAUHIAWo2AqgBIAFBiAFqIAFBoAFqEOICIAEoAowBIgMgASgCkAEQAiECIAEoAogBIgQEQCADIARBARD6BgsgASgCxAEiA0GEAU8EQCADEAALIAEoApwBIgNBhAFJDRMgAxAADBMLIAEoApwBIgJBhAFPBEAgAhAACyAEEANBAUYNASAEEARBAUYNASABQThqIAQQCwJAAkACQCABKAI4IgVFDQAgASgCPCICQYCAgIB4Rg0AIAEgAjYCkAEgASAFNgKMASABIAI2AogBDAELIAFBKGogBBAMIAEoAihFDQEgASABKwMwOQOgASABQYgBaiABQaABahCrBAsgAUEgaiAaQeAAayABKAKYARABEKQBIAEoAiQhAiABKAIgIQUgCkUEQCAFDRIgAyABQYgBaiICELsDRQRAIAFBoAFqIgUgAhD4BCABQRBqIAMgBSABKAKYARABEIkCIAEoAhBFDRggASgCFCICQYMBTQ0YDBcLQdSPwABBLRACIQIMEgsgBQ0RIAMgAUGIAWoQuwNFBEBBnZDAAEEtEAIhAgwSCyABQaABaiICIAFBiAFqEPgEIAFBGGogAyACIAEoApgBEAEQiQIgASgCGEUNFiABKAIcIgJBgwFLDRUMFgtBypDAAEEmEAIhAgwRC0EBIQNByovAAEEaEAIhAgwVC0HgisAAQSMQAiECDA8LIA4oAhgQASIEEANBAUcNCAwJC0GAkcAAEJUGAAtBxJfAABCVBgALQbSXwAAQlQYAC0G8h8AAEJUGAAtB8IzAAEEUEAIhAkEADA8LEKMHAAsQpAcACwALIAQQBEEBRg0AIAFB2ABqIAQQCwJAAkACQCABKAJYIgpFDQAg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AUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AgwgAiABQQFqIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgIcIAJBIGogCCACEKcBIAItACAhDyACLQAhIRAgAi0AIiERIAItACMhEiACLQAkIRMgAi0AJSEUIAItACYhFSACLQAnIRYgAi0AKCEXIAItACkhGCACLQAqIRkgAi0AKyEaIAItACwhGyACLQAtIRwgAi0ALiEdIAItAC8hHiACLQAwIR8gAi0AMSEgIAItADIhIiACLQAzISMgAi0ANCEkIAItADUhJSACLQA2ISYgAi0ANyEnIAItADghKCACLQA5ISkgAi0AOiEqIAItADshKyACLQA8ISwgAi0APSEtIAItAD4hLiAEIAdqIgEtAAAhLyABQQFqLQAAITAgAUECai0AACExIAFBA2otAAAhMiABQQRqLQAAITMgAUEFai0AACE0IAFBBmotAAAhNSABQQdqLQAAITYgAUEIai0AACE3IAFBCWotAAAhOCABQQpqLQAAITkgAUELai0AACE6IAFBDGotAAAhOyABQQ1qLQAAITwgAUEOai0AACE9IAFBD2otAAAhPiABQRBqLQAAIT8gAUERai0AACFAIAFBEmotAAAhQSABQRNqLQAAIUIgAUEUai0AACFDIAFBFWotAAAhRCABQRZqLQAAIUUgAUEXai0AACFGIAFBGGotAAAhRyABQRlqLQAAIUggAUEaai0AACFJIAFBG2otAAAhSiABQRxqLQAAIUsgAUEdai0AACFMIAFBHmotAAAhTSAEICFqIgNBH2ogAUEfai0AACACLQA/czoAACADQR5qIC4gTXM6AAAgA0EdaiAtIExzOgAAIANBHGogLCBLczoAACADQRtqICsgSnM6AAAgA0EaaiAqIElzOgAAIANBGWogKSBIczoAACADQRhqICggR3M6AAAgA0EXaiAnIEZzOgAAIANBFmogJiBFczoAACADQRVqICUgRHM6AAAgA0EUaiAkIENzOgAAIANBE2ogIyBCczoAACADQRJqICIgQXM6AAAgA0ERaiAgIEBzOgAAIANBEGogHyA/czoAACADQQ9qIB4gPnM6AAAgA0EOaiAdID1zOgAAIANBDWogHCA8czoAACADQQxqIBsgO3M6AAAgA0ELaiAaIDpzOgAAIANBCmogGSA5czoAACADQQlqIBggOHM6AAAgA0EIaiAXIDdzOgAAIANBB2ogFiA2czoAACADQQZqIBUgNXM6AAAgA0EFaiAUIDRzOgAAIANBBGogEyAzczoAACADQQNqIBIgMnM6AAAgA0ECaiARIDFzOgAAIANBAWogECAwczoAACADIA8gL3M6AAAgBEEgaiEEIAYhASAJQQFrIgkNAAsLBEAgACAAKAIUIgFBAWo2AhQgACgCECEGIAApAgQhTiAAKAIMIQAgAkEYakIANwIAIAJCADcCECACIAA2AgggAiBONwIAIAIgASAGaiIAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycjYCDCACQSBqIAggAhCnASACLQAgIQYgAi0AISEDIAItACIhBCACLQAjIQggAi0AJCEJIAItACUhCiACLQAmIQsgAi0AJyEMIAItACghDSACLQApIQ4gAi0AKiEPIAItACshECACLQAsIREgAi0ALSESIAItAC4hEyAHIAVB/v///wBxQQR0IgFqIgAtAAAhBSAALQABIQcgAC0AAiEUIAAtAAMhFSAALQAEIRYgAC0ABSEXIAAtAAYhGCAALQAHIRkgAC0ACCEaIAAtAAkhGyAALQAKIRwgAC0ACyEdIAAtAAwhHiAALQANIR8gAC0ADiEgIAEgIWoiASAALQAPIAItAC9zOgAPIAEgEyAgczoADiABIBIgH3M6AA0gASARIB5zOgAMIAEgECAdczoACyABIA8gHHM6AAogASAOIBtzOgAJIAEgDSAaczoACCABIAwgGXM6AAcgASALIBhzOgAGIAEgCiAXczoABSABIAkgFnM6AAQgASAIIBVzOgADIAEgBCAUczoAAiABIAMgB3M6AAEgASAFIAZzOgAACyACQUBrJAALrikDCX8HfgF8AkACQAJAAkACQAJAAkACQCAALQAAQQFrDgUBAgMEBQALIAEoAgAiACgCACAAKAIIIgJrQQNNBEAgACACQQRBAUEBEJIDIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpB7uqx4wY2AAAMBQsgASgCACEBIAAtAAFFBEAgASgCACABKAIIIgBrQQRNBEAgASAAQQVBAUEBEJIDIAEoAgghAAsgASAAQQVqNgIIIAEoAgQgAGoiAEHorsEAKAAANgAAIABBBGpB7K7BAC0AADoAAEEADwsgASgCACABKAIIIgBrQQNNBEAgASAAQQRBAUEBEJIDIAEoAgghAAsgASAAQQRqNgIIIAEoAgQgAGpB9OTVqwY2AAAMBAsjAEEwayIFJAAgASgCACEDAkACQAJAAkACQAJAIABBCGoiASgCAEEBaw4CAQIAC0EUIQAgASkDCCILQpDOAFQEQCALIQwMBAsDQCAFQQhqIABqIgFBBGsgCyALQpDOAIAiDEKQzgB+faciAkH//wNxQeQAbiIGQQF0QZ61wQBqLwAAOwAAIAFBAmsgAiAGQeQAbGtB//8DcUEBdEGetcEAai8AADsAACAAQQRrIQAgC0L/wdcvViAMIQsNAAsMAwtBFCEAIAEpAwgiDSANQj+HIguFIAt9IgtCkM4AVARAIAshDAwCCwNAIAVBCGogAGoiAUEEayALIAtCkM4AgCIMQpDOAH59pyICQf//A3FB5ABuIgZBAXRBnrXBAGovAAA7AAAgAUECayACIAZB5ABsa0H//wNxQQF0QZ61wQBqLwAAOwAAIABBBGshACALQv/B1y9WIAwhCw0ACwwBCyABKwMIIhK9Qv///////////wCDQv/////////3/wBYBEAgBUEIaiEGIwBBoAJrIgAkACASvSIMQv////////8HgyELIAxCAFMEQCAGQS06AABBASEECwJAAn8CfwJAAkACQCAMQjSIp0H/D3EiAUUgC1BxRQRAIAFBAkkgC0IAUnIhAiALQoCAgICAgIAIhCALIAEbIgtCAoYhDSALQgGDIREgAUG1CGtBzHcgARsiAUEASARAIABBkAJqQcDWwgAgASABQYWiU2xBFHYgAUF/R2siCGoiB0EEdCIBaykDACILIA1CAoQiDhDBBCAAQYACakHI1sIAIAFrKQMAIgwgDhDBBCAAQfABaiAAQZgCaikDACIOIAApA4ACfCIPIABBiAJqKQMAIA4gD1atfCAIIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgEQggUgAEGwAWogCyANIAJBf3OsfCIOEMEEIABBoAFqIAwgDhDBBCAAQZABaiAAQbgBaikDACIOIAApA6ABfCIPIABBqAFqKQMAIA4gD1atfCABEIIFIABB4AFqIAsgDRDBBCAAQdABaiAMIA0QwQQgAEHAAWogAEHoAWopAwAiCyAA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AUHIAGoQ0wQgAUHTAGogAUEgaigCADYAACAAQQU6AAAgASABKQIYNwBLIAAgASkASDcAASAAQQhqIAFBzwBqKQAANwAADAQLIAAgASgCTDYCBCAAQQY6AAALIAFBGGoQ+wELIAQoAgBFDQMgBCgCBCIAQYMBSw0CDAMLQfCMwQBBLEH8jcEAEIwFAAsgBCgCAEUNASAEKAIEIgBBgwFNDQELIAAQAAsgAUGwAWokACADKAIUIgBBhAFJDQEgABAADAELIANBEGogA0EYakHM+cAAEJoCIQEgAEEGOgAAIAAgATYCBAsgAygCECIEQYQBSQ0BCyAEEAALIANBMGokAAwFCyAFKwNAIRYgBUHMAGoQhQdFBEAgACAWOQMQIABCAjcDCCAAIBa9Qv///////////wCDQoCAgICAgID4/wBUQQF0OgAADAMLIABBAjoAACAWRAAAAAAAAODDZiEBIABC////////////AAJ+IBaZRAAAAAAAAOBDYwRAIBawDAELQoCAgICAgICAgH8LQoCAgICAgICAgH8gARsgFkT////////fQ2QbQgAgFiAWYRsiEjcDECAAIBJCP4g3AwgMAgsgBSgCTCEDIwBBgAFrIgEkACABIAM2AhgCQCABQRhqIgMQggcEQCABQRxqIAMQ1gYgAUEANgIoIAFBADYCNCABQoCAgICAATcCLAJAIAEoAhxFDQAgAUHwAGohBCABQegAakEBciECA0AgAUEIaiABQRxqEMcFIAEoAghFDQEgASgCDCEDIAEgASgCKEEBajYCKCABQegAaiADENQBIAEtAGgiB0EGRgRAIAEoAmwhAyAAQQY6AAAgACADNgIEIAFBLGoQuQQgASgCLCIARQ0EIAEoAjAgAEEYbEEIEPoGDAQLIAFBzgBqIgggAkECai0AADoAACABQUBrIgogBEEIaikDADcDACABIAIvAAA7AUwgASAEKQMANwM4IAEoAmwhCSABKAI0IgYgASgCLEYEQCABQSxqEL0DCyABKAIwIAZBGGxqIgMgASkDODcACCADIAc6AAAgAyABLwFMOwABIAMgCTYABCADQQNqIAgtAAA6AAAgA0EQaiAKKQMANwAAIAEgBkEBajYCNCABKAIcDQALCyABQfMAaiABQTRqKAIANgAAIABBBDoAACABIAEpAiw3AGsgACABKQBoNwAB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QAJAIAQEQCAELQAADQkgAUEoakHyzMAAQcYBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQbjOwABBNBDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQezOwABB4AAQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG80MAAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQazQwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQZzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQfzPwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQezPwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQdzPwAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQczPwAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGy3MAAQcgBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQfrdwABB8gAQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakH63cAAQfIAEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAACyABQZABahDvAiAEQQE6AAACQCAAKAIEIgAoAgAiAkEBSyACRXINACAAQQRqKAIAIgJBhAFJDQAgAhAACyAAQQA2AgAgAUGgAmokAA8LQbixwABBFRCiBwALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABB3N/AABDDBAALIAEgASgCkAE2AjBB8LnAAEErIAFBMGpBnLnAAEHM38AAEMMEAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG838AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGs38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGc38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGM38AAEMMEAAsgASADNgKIAkHwucAAQSsgAUGIAmpBnLnAAEH83sAAEMMEAAsgAUEANgKIAiABQYACaiABQYQCaiABQYgCakHs3sAAEPQFAAtByK3AABCVBgALpgYBBX8jAEGgAmsiASQAIAAoAgAiAigCACEEIAJBADYCAAJAAkACQAJAAkACQAJAAkACQCAEBEAgBC0AAA0JIAFBKGpBruDAAEGdAhDuBSABKAIsIQIgASgCKA0BIAFBkAFqIgMgAhCCAyABKALkAUGAgICAeEYNAiABQTBqIgUgA0HgABD6AhogAUEgakHL4sAAQf4BEO4FIAEoAiQhAiABKAIgDQMgAyAFQeAAEPoCGiABIAI2AvABIAFBGGogAUHwAWoQwAEgASgCHCECIAEoAhgNBCABIAI2AvgBIAFBEGpByeTAAEGGAxDuBSABKAIUIQIgASgCEA0FIAEgAjYC/AEgAUEIaiABQfgBahDvBSABKAIMIQIgASgCCA0GIAEgAjYCgAIgASABQfwBahDvBSABKAIEIQMgASgCAA0HIAEgAzYChAIgAUGAAmogAUGEAmoQ5wZFDQggA0GEAU8EQCADEAAgASgCgAIhAgsgAkGEAU8EQCACEAALIAEoAvwBIgJBhAFPBEAgAhAACyABKAL4ASICQYQBTwRAIAIQAAsgAUGQAWoQ7wIgBEEBOgAAAkAgACgCBCIAKAIAIgJBAUsgAkVyDQAgAEEEaigCACICQYQBSQ0AIAIQAAsgAEEANgIAIAFBoAJqJAAPC0G4scAAQRUQogcACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQcDowAAQwwQACyABIAEoApABNgIwQfC5wABBKyABQTBqQZy5wABBsOjAABDDBAALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABBoOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBkOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBgOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABB8OfAABDDBAALIAEgAzYCiAJB8LnAAEErIAFBiAJqQZy5wABB4OfAABDDBAALIAFBADYCiAIgAUGAAmogAUGEAmogAUGIAmpB0OfAABD0BQALQcitwAAQlQYAC6YGAQV/IwBBoAJrIgEkACAAKAIAIgIoAgAhBCACQQA2AgACQAJAAkACQAJAAkACQAJAAkAgBARAIAQtAAANCSABQShqQY3XwABB8wEQ7gUgASgCLCECIAEoAigNASABQZABaiIDIAIQggMgASgC5AFBgICAgHhGDQIgAUEwaiIFIANB4AAQ+gIaIAFBIGpBgNnAAEHlARDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQYDZwABB5QEQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEHY28AAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQcjbwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQbjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQajbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQZjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYjbwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQfjawAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQejawAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGW0cAAQcUBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQdvSwABBggEQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakHd08AAQeIBEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAA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IAIgA0YNARogAkEBaiECIAEgCCAHKAIQEQEARQ0ACyACQQFrCyADSQshAiAAIAk6ACAgACAKNgIQDAELQQEhAgsgBEEQaiQAIAILrwQBBX8CQAJAAkAgAiADTwRAQQEhBgJAIANBAEwNACABIANqIQQCQCADQQNNBEADQCABIARPDQMgBEEBayIELQAAQQpHDQAMAgsAC0GAgoQIIARBBGsoAAAiB0GKlKjQAHNrIAdyQYCBgoR4cUGAgYKEeEcEQANAIAEgBE8NAyAEQQFrIgQtAABBCkcNAAwCCwALIAMgBEEDcWshBCADQQlPBEADQAJAIAQiB0EISA0AQYCChAggASAEaiIIQQhrKAIAIgRBipSo0ABzayAEckGAgYKEeHFBgIGChHhHDQAgB0EIayEEQYCChAggCEEEaygCACIIQYqUqNAAc2sgCHJBgIGChHhxQYCBgoR4Rg0BCwsgASAHaiEEA0AgASAETw0DIARBAWsiBC0AAEEKRw0ACwwBCyABIARqIQQDQCABIARPDQIgBEEBayIELQAAQQpHDQALCyAEIAFrIgRBAWohBSACIARNDQILIAEgBWogAU0NAyAFQQNxIQYgBUEBa0EDSQRAQQAhBAwDCyAFQXxxIQJBACEEA0AgBCABLQAAQQpGaiABLQABQQpGaiABLQACQQpGaiABLQADQQpGaiEEIAFBBGohASACQQRrIgINAAsMAgsgAyACQYiNwgAQ7AQACyAFIAJBmI3CABDsBAALIAYEQANAIAQgAS0AAEEKRmohBCABQQFqIQEgBkEBayIGDQALCyAEQQFqIQYLIAAgBjYCACAAIAMgBWs2AgQLhgcCCH8BfiMAQSBrIggkAAJAAkACQAJAAkACQANAIAEoAgghBwJAIAEoAggiAyABKAIEIgVGDQAgAyAFSQRAIAEoAgAiBiADai0AACIEQSJGIARB3ABGciAEQSBJcg0BIAZBAWohBEEAIAUgA0EBaiIGa0F4cSIJayEFA0AgBUUEQCABIAYgCWo2AggCQCABKAIIIgMgASgCBCIETw0AIAEoAgAhBgNAIAMgBmotAAAiBUEiRiAFQdwARnIgBUEgSXINASABIANBAWoiAzYCCCADIARHDQALCwwDCyADIARqIAVBCGohBSADQQhqIQMpAAAiC0J/hSALQty48eLFi5eu3ACFQoGC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IAuncSEBIAtCGYhC/wCDQoGChIiQoMCAAX4hDQNAAkAgASAFaikAACIMIA2FIgtCf4UgC0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyILUEUEQANAIAMgCEEAIAt6p0EDdiABaiAGcWsiCUHwAGxqIgooAghGBEAgAiAKKAIEIAMQqQVFDQMLIAtCAX0gC4MiC1BFDQALC0EAIAwgDEIBhoNCgIGChIiQoMCAf4NQRQ0CGiABIAdBCGoiB2ogBnEhAQwBCwsgBSAJQfAAbGpB8ABrCyEBIARBAjYCJCAEQbypwAA2AiAgBEIBNwIsIAQgBEEMaq1CgICAgMAAhDcDOCAEIARBOGo2AiggBEEUaiAEQSBqEOICIAQoAhgiBSAEKAIcEAIhAwJAIAFFBEBBASEBDAELIAFBEGpBACEBIANBhAFPBEAgAxAACyEDCyAEKAIUIgIEQCAFIAJBARD6BgsgACADNgIEIAAgATYCACAEQUBrJAALqwMBAn8CQAJAAkACQCABQQdqIgNB+ABPDQAgAUEPaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQZqIgNB+ABPDQAgAUEOaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQVqIgNB+ABPDQAgAUENaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQRqIgNB+ABPDQAgAUEMaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQNqIgNB+ABPDQAgAUELaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQJqIgNB+ABPDQAgAUEKaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQFqIgNB+ABPDQAgAUEJaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQfgASQ0BIAEhAwsgA0H4AEGo0sEAEOsEAAsgAUEIaiICQfgASQ0BCyACQfgAQbjSwQAQ6wQACyAAIAJBAnRqIAAgAUECdGooAgA2AgALuAMCBH8BfiMAQeAAayIBJAACQCAABEAgACgCAA0BIAFBCGogAEEIakHYABD6AhogAEHgAEEIEPoGIAEoAkgiAEGEAU8EQCAAEAALIAEoAlAhAyABKAJUIgQEQCADIQADQCAAQQxqKAIAIgJBhAFPBEAgAhAACyAAQRBqKAIAIgJBhAFPBEAgAhAACyAAKAIAIgIEQCAAQQRqKAIAIAJBARD6BgsgAEEUaiEAIARBAWsiBA0ACwsgASgCTCIABEAgAyAAQRRsQQQQ+gYLAkAgASgCDCIDRQ0AIAEoAhQiAgRAIAEoAggiBEEIaiEAIAQpAwBCf4VCgIGChIiQoMCAf4MhBQNAIAVQBEADQCAEQYAHayEEIAApAwAgAEEIaiEAQoCBgoSIkKDAgH+DIgVCgIGChIiQoMCAf1ENAAsgBUKAgYKEiJCgwIB/hSEFCyAEIAV6p0EDdkGQf2xqQfAAaxD9ASAFQgF9IAWDIQUgAkEBayICDQALCyADIANBAWpB8ABsIgBqQQlqIgNFDQAgASgCCCAAayADQQgQ+gYLIAFBKGoQtgMgAUHgAGokAA8LEKMHAAsQpAcAC/kDAQl/IwBBEGsiBCQAQcnNwwAtAAAaAkBBIEEEEO0GIgEEQCABQgA3AhQgAUKAgICAwAA3AgwgAUIBNwIEIAFBHGpBADoAABDCBiIAEF0iAhATIQMgAkGEAU8EQCACEAALIABBhAFPBEAgABAACyAEQYABNgIMIARBDGooAgAQggEhBSABQQI2AgBByc3DAC0AABpBBEEEEO0GIgJFDQEgAiABNgIAIAJB5P/BABCgByEHIAQoAgwiAEGEAU8EQCAAEAALQajNwwAoAgAhAEGozcMAIAE2AgBBrM3DACgCACEGQazNwwAgAjYCAEGwzcMAKAIAIQFBsM3DAEHk/8EANgIAQbTNwwAoAgAhCEG0zcMAIAc2AgBBuM3DACgCACECQbjNwwAgBTYCAEG8zcMALQAAIQVBvM3DACADQQFGOgAAAkAgBUECRg0AIAAgACgCAEEBayIDNgIAAkAgAw0AIABBDGoQ2AIgACgCDCIDBEAgACgCECADQQJ0QQQQ+gYLIABBBGoiAyADKAIAQQFrIgM2AgAgAw0AIABBIEEEEPoGCyACQYQBTwRAIAIQAAsgCBAfRQ0AIAEoAgAiAARAIAYgABEAAAsgASgCBCIARQ0AIAYgACABKAIIEPoGCyAEQRBqJAAPC0EEQSAQrAcAC0EEQQQQrAcAC9UDAQN/IwBBQGoiAiQAIAAoAgAhAyAAQQA2AgACQAJAAkACQCADBEAgAiADKQIANwIkIAIgATYCLCACQRhqIAJBLGoQ0wYgAigCGEUNASACIAIoAhwiADYCPCACQTxqEPwGRQ0CIAIgADYCMCACQRBqIAJBMGoQ7AUgAigCFCEAIAIoAhBFBEAgAiAANgI0IAJBgAE2AjggAiACQSRqIAJBOGogAkE0ahDUBSACKAIEIQEgAigCAA0EDAULIAIgADYCNCACQYABNgI4IAJBCGogAkEoaiACQThqIAJBNGoQ1AUgAigCDCEBIAIoAghFDQQgAiABNgI8QZCCwQBBKyACQTxqQYCCwQBBzILBABDDBAALQZiAwQBBHBCiBwALQfCBwQAQiAcACyACIAA2AjxBkILBAEErIAJBPGpB3ILBAEHsgsEAEMMEAAsgAiABNgI8QZCCwQBBKyACQTxqQYCCwQBBvILBABDDBAALIABBhAFPBEAgABAACyACKAIwIgBBhAFPBEAgABAACyACKAIsIgBBhAFPBEAgABAACyACKAIoIQAgAigCJCIEQYQBTwRAIAQQAAsgAEGEAU8EQCAAEAALIANBCEEEEPoGIAJBQGskACABC7kDAQV/AkAgAEKAgICAEFQEQCABIQIMAQsgAUEIayICIAAgAEKAwtcvgCIAQoC+qNAPfnynIgNBkM4AbiIEQZDOAHAiBUHkAG4iBkEBdEGg/8IAai8AADsAACABQQRrIAMgBEGQzgBsayIDQf//A3FB5ABuIgRBAXRBoP/CAGovAAA7AAAgAUEGayAFIAZB5ABsa0H//wNxQQF0QaD/wgBqLwAAOwAAIAFBAmsgAyAEQeQAbGtB//8DcUEBdEGg/8IAai8AADsAAAsCQCAApyIBQZDOAEkEQCABIQMMAQsgAkEEayECA0AgAiABQZDOAG4iA0HwsX9sIAFqIgRB5ABuIgVBAXRBoP/CAGovAAA7AAAgAkECaiAEIAVB5ABsa0EBdEGg/8IAai8AADsAACACQQRrIQIgAUH/wdcvSyADIQENAAsgAkEEaiECCwJAIANB4wBNBEAgAyEBDAELIAJBAmsiAiADIANB//8DcUHkAG4iAUHkAGxrQf//A3FBAXRBoP/CAGovAAA7AAALIAFBCU0EQCACQQFrIAFBMHI6AAAPCyACQQJrIAFBAXRBoP/CAGovAAA7AAAL4QMBAn8jAEEwayICJAAgACgCACEDIABBADYCAAJAAkACQAJAAkAgAwRAIAIgAygCADYCHCACIAE2AiAgAkEQaiACQSBqENMGIAIoAhBFDQEgAiACKAIUIgA2AiwgAkEsaiIBEPsGRQ0CIAIgADYCKCACQQhqIAJBKGoQ7AUgAigCDCEAIAIoAggNAyACIAA2AiwgARD9BkUNBCACIAA2AiQgAigCKCIAQYQBTwRAIAAQAAsgAkGAATYCKCACIAJBHGogAkEoaiACQSRqENQFIAIoAgQhACACKAIADQUCQCAAQYQBSQ0AIAAQACACKAIoIgBBhAFJDQAgABAACyACKAIkIgBBhAFPBEAgABAACyACKAIgIgBBhAFPBEAgABAACyACKAIcIgBBhAFPBEAgABAACyADQQRBBBD6BiACQTBqJAAPC0GYgMEAQRwQogcAC0HwhsEAEIgHAAsgAiAANgIsQZCCwQBBKyACQSxqQdyCwQBBsIfBABDDBAALIAIgADYCLEGQgsEAQSsgAkEsakGAgsEAQaCHwQAQwwQACyACIAA2AixBkILBAEErIAJBLGpBgILBAEGQh8EAEMMEAAsgAiAANgIsQZCCwQBBKyACQSxqQYCCwQBBgIfBABDDBAAL7gMBBX8jAEHwAWsiASQAIAAoAgAiAigCACEDIAJBADYCAAJAAkACQAJAAkACQCADBEAgAy0AAA0GIAFBEGpB/ujAAEGcARDuBSABKAIUIQIgASgCEA0BIAFBGGoiBCACEIIDIAEoAmxBgICAgHhGDQIgAUH4AGoiAiAEQeAAEPoCGiABQY/rwABBDRACNgLYASABQQhqIAIgAUHYAWoQnAEgASgCCEUNAyABIAEoAgwiBRALIAEoAgAiAkUNBCABKAIEIQQgASACNgLoASABIAQ2AuwBIAEgBDYC5AEgBEEXRw0FIAJB+LHAAEEXEKkFDQUgAkEXQQEQ+gYgBUGEAU8EQCAFEAALIAFB+ABqEO8CIANBAToAAAJAIAAoAgQiACgCACIDQQFLIANFcg0AIABBBGooAgAiA0GEAUkNACADEAALIABBADYCACABQfABaiQADwtBuLHAAEEVEKIHAAsgASACNgJ4QfC5wABBKyABQfgAakGcucAAQeTrwAAQwwQACyABIAEoAhg2AnhB8LnAAEErIAFB+ABqQZy5wABB1OvAABDDBAALQfC8wABBIUGc68AAENgFAAtBrOvAABCIBwALIAFBADYCGCABQeQBakG868AAIAFBGGpBxOvAABDyBQALQcitwAAQlQYAC58DAgR/AX4gACgCACIBBEAgACgCBCABQQEQ+gYLIAAoAmAiAQRAIAAoAmQgAUEBEPoGCyAAKAJQIgFBhAFPBEAgARAACyAAKAJYIQMgACgCXCIEBEAgAyEBA0AgAUEMaigCACICQYQBTwRAIAIQAAsgAUEQaigCACICQYQBTwRAIAIQAAsgASgCACICBEAgAUEEaigCACACQQEQ+gYLIAFBFGohASAEQQFrIgQNAAsLIAAoAlQiAQRAIAMgAUEUbEEEEPoGCwJAIAAoAhQiA0UNACAAKAIcIgIEQCAAKAIQIgRBCGohASAEKQMAQn+FQoCBgoSIkKDAgH+DIQUDQCAFUARAA0AgBEGAB2shBCABKQMAIAFBCGohAUKAgYKEiJCgwIB/gyIFQoCBgoSIkKDAgH9RDQALIAVCgIGChIiQoMCAf4UhBQsgBCAFeqdBA3ZBkH9sakHwAGsQ/QEgBUIBfSAFgyEFIAJBAWsiAg0ACwsgAyADQQFqQfAAbCIBakEJaiIDRQ0AIAAoAhAgAWsgA0EIEPoGCyAAQTBqELYDC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakHkrsAAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQdCuwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpBgK7AABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakGssMAAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQbyuwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpBlK7AABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakHwr8AAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQcivwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpB1LDAABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakGkscAAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQfiuwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpBhLDAABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakHAsMAAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQeiwwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpBqK7AABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakGMr8AAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQditwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpB7K3AABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakG0r8AAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQaCvwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpB3K/AABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7wDAQR/IwBBMGsiAyQAIAMgAjYCCCABKAIAIgIgAigCAEEBaiICNgIAAkACQAJAIAIEQCADIAEoAgAiBDYCDCADQQM2AhBBAEHc7MEAKAIAIgUoAgARBAAiAkUNASACKAIAIQYgAiAEQQhqNgIAIAMgBjYCHCADIAU2AhggAyABQQRqNgIgIAMgA0EIajYCLCADIANBEGo2AiggAyADQSBqNgIkIAMgA0EkakGQscAAEKAGIAMoAgQhAiADKAIAIQUgA0EYahDOBSADKAIUIQQCQAJAAkACQAJAIAMoAhAiAUECaw4CAQMAC0EBIQYgA0EMahDzAyAFQQFxDQEgBCECDAcLIANBDGoQ8wNBACEGIAVBAXENAEECIQEMBgsgAkGEAU8EQCACEAALIAFBAUsgBnJFDQEgBCECDAULQQEhASAFQQFxRQ0DIANBDGoQ8wMMBAsgAUUEQCAEIQIMBAsgBEGEAUkEQCAEIQIMBAsgBBAAQQEhASAEIQIMAwsAC0Hgo8AAQcYAIANBJGpB0KPAAEH4pMAAEMMEAAtBqKPAAEESEKIHAAsgACACNgIEIAAgATYCACADQTBqJAALvAMBBH8jAEEwayIDJAAgAyACNgIIIAEoAgAiAiACKAIAQQFqIgI2AgACQAJAAkAgAgRAIAMgASgCACIENgIMIANBAzYCEEEAQdzswQAoAgAiBSgCABEEACICRQ0BIAIoAgAhBiACIARBCGo2AgAgAyAGNgIcIAMgBTYCGCADIAFBBGo2AiAgAyADQQhqNgIsIAMgA0EQajYCKCADIANBIGo2AiQgAyADQSRqQZiwwAAQoAYgAygCBCECIAMoAgAhBSADQRhqEM4FIAMoAhQhBAJAAkACQAJAAkAgAygCECIBQQJrDgIBAwALQQEhBiADQQxqEPMDIAVBAXENASAEIQIMBwsgA0EMahDzA0EAIQYgBUEBcQ0AQQIhAQwGCyACQYQBTwRAIAIQAAsgAUEBSyAGckUNASAEIQIMBQtBASEBIAVBAXFFDQMgA0EMahDzAwwECyABRQRAIAQhAgwECyAEQYQBSQRAIAQhAgwECyAEEABBASEBIAQhAgwDCwALQeCjwABBxgAgA0EkakHQo8AAQfikwAAQwwQAC0Goo8AAQRIQogcACyAAIAI2AgQgACABNgIAIANBMGokAAu8AwEEfyMAQTBrIgMkACADIAI2AgggASgCACICIAIoAgBBAWoiAjYCAAJAAkACQCACBEAgAyABKAIAIgQ2AgwgA0EDNgIQQQBB3OzBACgCACIFKAIAEQQAIgJFDQEgAigCACEGIAIgBEEIajYCACADIAY2AhwgAyAFNgIYIAMgAUEEajYCICADIANBCGo2AiwgAyADQRBqNgIoIAMgA0EgajYCJCADIANBJGpB/LDAABCgBiADKAIEIQIgAygCACEFIANBGGoQzgUgAygCFCEEAkACQAJAAkACQCADKAIQIgFBAmsOAgEDAAtBASEGIANBDGoQ8wMgBUEBcQ0BIAQhAgwHCyADQQxqEPMDQQAhBiAFQQFxDQBBAiEBDAYLIAJBhAFPBEAgAhAACyABQQFLIAZyRQ0BIAQhAgwFC0EBIQEgBUEBcUUNAyADQQxqEPMDDAQLIAFFBEAgBCECDAQLIARBhAFJBEAgBCECDAQLIAQQAEEBIQEgBCECDAMLAAtB4KPAAEHGACADQSRqQdCjwABB+KTAABDDBAALQaijwABBEhCiBwALIAAgAjYCBCAAIAE2AgAgA0EwaiQAC7UDAQV/IwBB0ABrIgIkAAJAAkACQCABKAIIRQ0AIAJBEGogAUEIahDHBSACKAIQIgNFDQAgAkEIaiACKAIUEJUFIANBAXENAQsgAEGAgICAeDYCAAwBCyACKAIMIQYgAigCCCEEIAEgASgCFEEBajYCFCACIAQ2AhggAiAEEAsgAigCBCEDAkAgAigCACIFBEAgAyIBQYCAgIB4Rw0BCyACQRhqIAJBzwBqQdz4wAAQmgIhBUGAgICAeCEBCyAEQYQBTwRAIAQQAAsCQCABQYCAgIB4RwRAIAJBGGogBhDUASACLQAYQQZGDQEgAkHEAGogAkEoaikDADcCACACQTxqIAJBIGopAwA3AgAgAiACKQMYNwI0IAAgAzYCCCAAIAU2AgQgACABNgIAIAAgAikCMDcCDCAAQRRqIAJBOGopAgA3AgAgAEEcaiACQUBrKQIANwIAIABBJGogAkHIAGooAgA2AgAMAgsgAEGBgICAeDYCACAAIAU2AgQgBkGEAUkNASAGEAAMAQsgACACKAIcNgIEIABBgYCAgHg2AgAgAUUNACAFIAFBARD6BgsgAkHQAGokAAucAwEIfwJAIAAoAgwiAUUNACAAKAIEIQYgACgCACICIAAoAggiACACQQAgACACTxtrIgAgAWogASACIABrIgVLGyICIABHBEAgAiAAayEEIAYgAEECdGohAgNAIAIoAgAiACAAKAIAQQFrIgM2AgACQCADDQAgACgCDCIDBEAgACgCECIIKAIAIgcEQCADIAcRAAALIAgoAgQiBwRAIAMgByAIKAIIEPoGCyAAKAIYIAAoAhQoAgwRAAALIABBBGoiAyADKAIAQQFrIgM2AgAgAw0AIABBIEEEEPoGCyACQQRqIQIgBEEBayIEDQALCyABIAVNDQAgASAFayIAQQAgACABTRshAgNAIAYoAgAiACAAKAIAQQFrIgE2AgACQCABDQAgACgCDCIBBEAgACgCECIFKAIAIgQEQCABIAQRAAALIAUoAgQiBARAIAEgBCAFKAIIEPoGCyAAKAIYIAAoAhQoAgwRAAALIABBBGoiASABKAIAQQFrIgE2AgAgAQ0AIABBIEEEEPoGCyAGQQRqIQYgAkEBayICDQALCwuFBAEEfyMAQTBrIgIkACAAKAIAIQMgAEEANgIAAkACQAJAAkACQCADBEAgAiADKAIANgIUIAIgATYCGCACQQhqIAJBGGoQ0wYgAigCCEUNASACIAIoAgwiADYCICACQSBqIgEQ/AZFDQIgAiAANgIcIAJBHGooAgAQNyEAQaTOwwAoAgAhBEGgzsMAKAIAIQVBoM7DAEIANwIAIAEgBCAAIAVBAUYiBBs2AgQgAUECIABBAEcgBBs2AgAgAigCICIBQQJGDQMgAigCJCEAIAJBgAE2AiggAUUNBCACIAA2AiwgAiACQRRqIAJBKGogAkEsahDUBSACKAIEIQEgAigCAA0FIAFBhAFPBEAgARAAIAIoAiwhAAsgAEGEAU8EQCAAEAALIAIoAigiAEGEAU8EQCAAEAALIAIoAhwiAEGEAU8EQCAAEAALIAIoAhgiAEGEAU8EQCAAEAALIAIoAhQiAEGEAU8EQCAAEAALIANBBEEEEPoGIAJBMGokAA8LQZiAwQBBHBCiBwALQfyCwQAQiAcACyACIAA2AiBBkILBAEErIAJBIGpB3ILBAEG8g8EAEMMEAAsgAiACKAIkNgIsQZCCwQBBKyACQSxqQYCCwQBBrIPBABDDBAALQYyDwQAQiAcACyACIAE2AiBBkILBAEErIAJBIGpBgILBAEGcg8EAEMMEAAuAAwEEfwJAAkACQAJAAkACQAJ/AkAgByAIVgRAIAcgCH0gCFgNAwJAIAYgByAGfVQgByAGQgGGfSAIQgGGWnFFBEAgBiAIVg0BDAoLIAIgA0kNBQwICyAHIAYgCH0iBn0gBlYNCCACIANJDQUgASADaiEMIAEhCwJAA0AgAyAJRg0BIAlBAWohCSALQQFrIgsgA2oiCi0AAEE5Rg0ACyAKIAotAABBAWo6AAAgAyAJa0EBaiADTw0HIApBAWpBMCAJQQFrEPkDGgwHC0ExIANFDQIaIAFBMToAACADQQFHDQFBMAwCCyAAQQA2AgAPCyABQQFqQTAgA0EBaxD5AxpBMAshCSAEQQFqwSIEIAXBTCACIANNcg0DIAwgCToAACADQQFqIQMMAwsgAEEANgIADwsgAyACQbipwwAQ7AQACyADIAJBmKnDABDsBAALIAIgA08NACADIAJBqKnDABDsBAALIAAgBDsBCCAAIAM2AgQgACABNgIADwsgAEEANgIAC50DAQN/IwBB4AFrIgQkACAEIAM2AhAgBEHswsEAQQkQAiIFNgIUIARB+ABqIgYgARCCAyAEKAJ4IQMCQCAEKALMASIBQYCAgIB4RwRAIARBGGpBBHIgBkEEckHQABD6AhogBCABNgJsIAQgAzYCGCAEIAQpA9ABNwNwIAQoAjghAyAEQQhqIARBEGogBEEUahDjBSAEKAIMIQECQCAEKAIIBEAgASEDDAELAkACQCABEANBAUcNACAEIAO3EAoiBTYC3AEgBEH4AGogBEEQaiAEQRRqIARB3AFqEK0FIAQtAHgNASAFQYQBSQ0AIAUQAAsgBCgCECEDIAFBhAFPBEAgARAACyAEQRhqEPgCIAQoAhQiAUGEAU8EQCABEAALQQAhBQwDCyAEKAJ8IQMgBUGEAU8EQCAFEAALIAFBhAFJDQAgARAACyAEQRhqEPgCIAQoAhQhBQsgBUGEAU8EQCAFEAALIAQoAhAiAUGEAU8EQCABEAALQQEhBQsgAkGDAUsEQCACEAALIAAgAzYCBCAAIAU2AgAgBEHgAWokAAubAwIHfwJ+IAEoAgAiBkEQayEKIAEoAgQiByACp3EhBSACQhmIQv8Ag0KBgoSIkKDAgAF+IQ0CQANAIAUgBmopAAAiDCANhSICQn+FIAJCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiAlBFBEADQCAEIAogAnqnQQN2IAVqIAdxIglBBHRrIgsoAghGBEAgAyALKAIEIAQQqQVFDQQLIAJCAX0gAoMiAlBFDQALCyAMIAxCAYaDQoCBgoSIkKDAgH+DUARAIAUgCEEIaiIIaiAHcSEFDAELCyAAQYCAgIB4NgIADwtBgAEhBCAGIAlBBHRBBHUiA2oiBSkAACICIAJCAYaDQoCBgoSIkKDAgH+DeqdBA3YgBiADQQhrIAdxaiIDKQAAIgIgAkIBhoNCgIGChIiQoMCAf4N5p0EDdmpBB00EQCABIAEoAghBAWo2AghB/wEhBAsgBSAEOgAAIANBCGogBDoAACABIAEoAgxBAWs2AgwgACAGQQAgCWtBBHRqQRBrIgEpAgA3AgAgAEEIaiABQQhqKQIANwIAC4MEAQt/IwBBIGsiBSQAIAEgASgCFCIIQQFqIgc2AhQgAUEMaiEJAkACQCAHIAEoAhAiCk8NACAJKAIAIAdqIQsgCCAKa0EBaiEMAkADQCAGIAtqLQAAIg1BMGsiDkH/AXEiD0EKTwRAIAZFBEAgBiAIakEBaiEHDAQLIAQgBmshBCANQSByQeUARwRAIAAgASACIAMgBBCjAwwFCyAAIAEgAiADIAQQsQIMBAsgD0EFSyADQpmz5syZs+bMGVJyIANCmLPmzJmz5swZVnENASABIAYgCGpBAmo2AhQgA0IKfiAOrUL/AYN8IQMgDCAGQQFqIgZqDQALIAAgASACIAMgBCAHaiAKaxCjAwwCCyAEIAZrIQYCQAJAAkAgASgCFCIEIAEoAhAiB08NACABKAIMIQgDQCAEIAhqLQAAIglBMGtB/wFxQQlNBEAgASAEQQFqIgQ2AhQgBCAHRw0BDAILCyAJQSByQeUARg0BCyAAIAEgAiADIAYQowMMAQsgACABIAIgAyAGELECCwwBCyAHIApPBEAgBUEFNgIUIAVBCGogCRCYBSAFQRRqIAUoAgggBSgCDBCyBSEBIABBATYCACAAIAE2AgQMAQsgBUENNgIUIAUgCRCYBSAFQRRqIAUoAgAgBSgCBBCyBSEBIABBATYCACAAIAE2AgQLIAVBIGokAAuQBAIEfwF+IwBBMGsiAiQAIAAoAgAhAwJAAkACQAJAAkACQCAAKAIEIgQOAwMCAQALQQEhACABQdyEwwBBBxDkBg0EIAIgAzYCFCABKAIYIQAgASgCFCACQQI2AhwgAkGshMMANgIYIAJCATcCJCACIAJBFGqtQoCAgIDgM4QiBjcDACACIAI2AiAgACACQRhqEIACDQMgBEEDdEEIayEEIANBCGohAwNAIAIgAzYCFCABQeOEwwBBAhDkBg0EIAJBAjYCHCACQayEwwA2AhggAkIBNwIkIAIgBjcDACACIAI2AiAgASgCFCABKAIYIAJBGGoQgAINBCADQQhqIQNBACEAIARBCGsiBA0ACwwECyACQQM2AhwgAkHEhMMANgIYIAJCAjcCJCACIANBCGqtQoCAgIDwM4Q3AwggAiADrUKAgICA8DOENwMAIAIgAjYCICABKAIUIAEoAhggAkEYahCAAiEADAMLIAJBAjYCHCACQayEwwA2AhggAkIBNwIkIAIgA61CgICAgPAzhDcDACACIAI2AiAgASgCFCABKAIYIAJBGGoQgAIhAAwCCyMAQRBrIgAkACAAQZyEwwA2AgwgAEEONgIIIABBsYPDADYCBCMAQRBrIgEkACABIABBBGoiACkCADcCCCABQQhqQeyAwwAgACgCCEEBQQAQ3wMAC0EBIQALIAJBMGokACAAC+oCAQV/AkBBzf97QRAgACAAQRBNGyIAayABTQ0AIABBECABQQtqQXhxIAFBC0kbIgRqQQxqEJ0BIgJFDQAgAkEIayEBAkAgAEEBayIDIAJxRQRAIAEhAAwBCyACQQRrIgUoAgAiBkF4cSACIANqQQAgAGtxQQhrIgIgAEEAIAIgAWtBEE0baiIAIAFrIgJrIQMgBkEDcQRAIAAgAyAAKAIEQQFxckECcjYCBCAAIANqIgMgAygCBEEBcjYCBCAFIAIgBSgCAEEBcXJBAnI2AgAgASACaiIDIAMoAgRBAXI2AgQgASACELUCDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQtQILIABBCGohAwsgAwvjHgIgfwp+IwBBgAhrIgUkACAFQYAEaiEMIwBB4ANrIgMkACADQUBrQQBBoAMQ+QMaIAMgASgADCICQQF2IAJzQdWq1aoFcSINIAJzIgQgASgACCIGQQF2IAZzQdWq1aoFcSIOIAZzIg9BAnZzQbPmzJkDcSIQIARzIgkgASgABCIEQQF2IARzQdWq1aoFcSIRIARzIgogASgAACILQQF2IAtzQdWq1aoFcSISIAtzIhNBAnZzQbPmzJkDcSIUIApzIhVBBHZzQY+evPgAcSIXIAlzNgIcIAMgASgAHCIJQQF2IAlzQdWq1aoFcSIYIAlzIgggASgAGCIKQQF2IApzQdWq1aoFcSIZIApzIhpBAnZzQbPmzJkDcSIbIAhzIhwgASgAFCIIQQF2IAhzQdWq1aoFcSIdIAhzIhYgASgAECIBQQF2IAFzQdWq1aoFcSIeIAFzIh9BAnZzQbPmzJkDcSIgIBZzIhZBBHZzQY+evPgAcSIhIBxzNgI8IAMgAiANQQF0cyICIAYgDkEBdHMiBkECdnNBs+bMmQNxIg0gAnMiAiAEIBFBAXRzIgQgCyASQQF0cyILQQJ2c0Gz5syZA3EiDiAEcyIEQQR2c0GPnrz4AHEiESACczYCGCADIBBBAnQgD3MiAiAUQQJ0IBNzIg9BBHZzQY+evPgAcSIQIAJzNgIUIAMgF0EEdCAVczYCDCADIAkgGEEBdHMiAiAKIBlBAXRzIglBAnZzQbPmzJkDcSIKIAJzIgIgCCAdQQF0cyIIIAEgHkEBdHMiAUECdnNBs+bMmQNxIhIgCHMiCEEEdnNBj568+ABxIhMgAnM2AjggAyAbQQJ0IBpzIgIgIEECdCAfcyIUQQR2c0GPnrz4AHEiFSACczYCNCADICFBBHQgFnM2AiwgAyANQQJ0IAZzIgIgDkECdCALcyIGQQR2c0GPnrz4AHEiCyACczYCECADIBFBBHQgBHM2AgggAyAQQQR0IA9zNgIEIAMgCkECdCAJcyICIBJBAnQgAXMiAUEEdnNBj568+ABxIgQgAnM2AjAgAyATQQR0IAhzNgIoIAMgFUEEdCAUczYCJCADIAtBBHQgBnM2AgAgAyAEQQR0IAFzNgIgQcAAIQJBCCEGA0AgAyAGELcCIAMgB2oiAUFAayIEEPUBIAQgBCgCAEF/czYCACABQcQAaiIEIAQoAgBBf3M2AgAgAUHUAGoiBCAEKAIAQX9zNgIAIAFB2ABqIgQgBCgCAEF/czYCACACIANqIgQgBCgCAEGAgANzNgIAIAMgBkEIaiIGQQ4Q1QEgB0GAA0YEQEEAIQcDQCADIAdqIgFBQGsiAiACKAIAIgJBBHYgAnNBgJ6A+ABxQRFsIAJzNgIAIAFBIGoiAiACKAIAIgJBBHYgAnNBgJi8GHFBEWwgAnMiAkECdiACc0GA5oCYA3FBBWwgAnM2AgAgAUEkaiICIAIoAgAiAkEEdiACc0GAmLwYcUERbCACcyICQQJ2IAJzQYDmgJgDcUEFbCACczYCACABQShqIgIgAigCACICQQR2IAJzQYCYvBhxQRFsIAJzIgJBAnYgAnNBgOaAmANxQQVsIAJzNgIAIAFBLGoiAiACKAIAIgJBBHYgAnNBgJi8GHFBEWwgAnMiAkECdiACc0GA5oCYA3FBBWwgAnM2AgAgAUEwaiICIAIoAgAiAkEEdiACc0GAmLwYcUERbCACcyICQQJ2IAJzQYDmgJgDcUEFbCACczYCACABQTRqIgIgAigCACICQQR2IAJzQYCYvBhxQRFsIAJzIgJBAnYgAnNBgOaAmANxQQVsIAJzNgIAIAFBOGoiAiACKAIAIgJBBHYgAnNBgJi8GHFBEWwgAnMiAkECdiACc0GA5oCYA3FBBWwgAnM2AgAgAUE8aiICIAIoAgAiAkEEdiACc0GAmLwYcUERbCACcyICQQJ2IAJzQYDmgJgDcUEFbCACczYCACABQcQAaiICIAIoAgAiAkEEdiACc0GAnoD4AHFBEWwgAnM2AgAgAUHIAGoiAiACKAIAIgJBBHYgAnNBgJ6A+ABxQRFsIAJzNgIAIAFBzABqIgIgAigCACICQQR2IAJzQYCegPgAcUERbCACczYCACABQdAAaiICIAIoAgAiAkEEdiACc0GAnoD4AHFBEWwgAnM2AgAgAUHUAGoiAiACKAIAIgJBBHYgAnNBgJ6A+ABxQRFsIAJzNgIAIAFB2ABqIgIgAigCACICQQR2IAJzQYCegPgAcUERbCACczYCACABQdwAaiICIAIoAgAiAkEEdiACc0GAnoD4AHFBEWwgAnM2AgAgAUHgAGoiAiACKAIAIgJBBHYgAnNBgIa84ABxQRFsIAJzIgJBAnYgAnNBgOaAmANxQQVsIAJzNgIAIAFB5ABqIgIgAigCACICQQR2IAJzQYCGvOAAcUERbCACcyICQQJ2IAJzQYDmgJgDcUEFbCACczYCACABQegAaiICIAIoAgAiAkEEdiACc0GAhrzgAHFBEWwgAnMiAkECdiACc0GA5oCYA3FBBWwgAnM2AgAgAUHsAGoiAiACKAIAIgJBBHYgAnNBgIa84ABxQRFsIAJzIgJBAnYgAnNBgOaAmANxQQVsIAJzNgIAIAFB8ABqIgIgAigCACICQQR2IAJzQYCGvOAAcUERbCACcyICQQJ2IAJzQYDmgJgDcUEFbCACczYCACABQfQAaiICIAIoAgAiAkEEdiACc0GAhrzgAHFBEWwgAnMiAkECdiACc0GA5oCYA3FBBWwgAnM2AgAgAUH4AGoiAiACKAIAIgJBBHYgAnNBgIa84ABxQRFsIAJzIgJBAnYgAnNBgOaAmANxQQVsIAJzNgIAIAFB/ABqIgEgASgCACIBQQR2IAFzQYCGvOAAcUERbCABcyIBQQJ2IAFzQYDmgJgDcUEFbCABczYCACAHQYABaiIHQYADRw0ACyADIAMoAiBBf3M2AiAgAyADKAIkQX9zNgIkIAMgAygCNEF/czYCNCADIAMoAqgDIgFBBHYgAXNBgJi8GHFBEWwgAXMiAUECdiABc0GA5oCYA3FBBWwgAXM2AqgDIAMgAygCrAMiAUEEdiABc0GAmLwYcUERbCABcyIBQQJ2IAFzQYDmgJgDcUEFbCABczYCrAMgAyADKAKwAyIBQQR2IAFzQYCYvBhxQRFsIAFzIgFBAnYgAXNBgOaAmANxQQVsIAFzNgKwAyADIAMoArwDIgFBBHYgAXNBgJi8GHFBEWwgAXMiAUECdiABc0GA5oCYA3FBBWwgAXM2ArwDIAMoAqADIQEgAygCpAMhByADKAK0AyECIAMoArgDIQYgAyADKAI4QX9zNgI4IAMgAygCQEF/czYCQCADIAMoAkRBf3M2AkQgAyADKAJUQX9zNgJUIAMgAygCWEF/czYCWCADIAMoAmBBf3M2AmAgAyADKAJkQX9zNgJkIAMgAygCdEF/czYCdCADIAMoAnhBf3M2AnggAyADKAKAAUF/czYCgAEgAyADKAKEAUF/czYChAEgAyADKAKUAUF/czYClAEgAyADKAKYAUF/czYCmAEgAyADKAKgAUF/czYCoAEgAyADKAKkAUF/czYCpAEgAyADKAK0AUF/czYCtAEgAyADKAK4AUF/czYCuAEgAyADKALAAUF/czYCwAEgAyADKALEAUF/czYCxAEgAyADKALUAUF/czYC1AEgAyADKALYAUF/czYC2AEgAyADKALgAUF/czYC4AEgAyADKALkAUF/czYC5AEgAyADKAL0AUF/czYC9AEgAyADKAL4AUF/czYC+AEgAyADKAKAAkF/czYCgAIgAyADKAKEAkF/czYChAIgAyADKAKUAkF/czYClAIgAyADKAKYAkF/czYCmAIgAyADKAKgAkF/czYCoAIgAyADKAKkAkF/czYCpAIgAyADKAK0AkF/czYCtAIgAyADKAK4AkF/czYCuAIgAyADKALAAkF/czYCwAIgAyADKALEAkF/czYCxAIgAyADKALUAkF/czYC1AIgAyADKALYAkF/czYC2AIgAyADKALgAkF/czYC4AIgAyADKALkAkF/czYC5AIgAyADKAL0AkF/czYC9AIgAyADKAL4AkF/czYC+AIgAyADKAKAA0F/czYCgAMgAyADKAKEA0F/czYChAMgAyADKAKUA0F/czYClAMgAygCmAMhBCADIAYgBiAGQQR2c0GAmLwYcUERbHMiBkECdiAGc0GA5oCYA3FBBWwgBnNBf3M2ArgDIAMgAiACIAJBBHZzQYCYvBhxQRFscyICQQJ2IAJzQYDmgJgDcUEFbCACc0F/czYCtAMgAyAHIAcgB0EEdnNBgJi8GHFBEWxzIgdBAnYgB3NBgOaAmANxQQVsIAdzQX9zNgKkAyADIAEgASABQQR2c0GAmLwYcUERbHMiAUECdiABc0GA5oCYA3FBBWwgAXNBf3M2AqADIAMgBEF/czYCmAMgAyADKALAA0F/czYCwAMgAyADKALEA0F/czYCxAMgAyADKALUA0F/czYC1AMgAyADKALYA0F/czYC2AMgDCADQeADEPoCGiADQeADaiQABSADIAYQtwIgAUHgAGoiBBD1ASAEIAQoAgBBf3M2AgAgAUHkAGoiBCAEKAIAQX9zNgIAIAFB9ABqIgQgBCgCAEF/czYCACABQfgAaiIBIAEoAgBBf3M2AgAgAyAGQQhqIgZBBhDVASACQcQAaiECIAdBQGshBwwBCwsgBUH4B2pCADcDACAFQfAHakIANwMAIAVB6AdqQgA3AwAgBUIANwPgByAFIAwgBUHgB2oiAxCnASAFMQAHISQgBTEABiElIAUxAAUhJiAFMQAEIScgBTEAAyEoIAUxAAEhKSAFMQACISogBSAFMQAAIiJCB4giIyAFMQAOQgmGIAUxAA8gBTEACEI4hiIrIAUxAAlCMIaEIAUxAApCKIaEIAUxAAtCIIaEIAUx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KAIUIgQEQCABKAIYIARBARD6BgsgACADNgIAIAAgAjYCBCAFQRBqJAALiAEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUHoAGoQwAEgAigCDCEDIAIoAgghBCABIAEoAgBBAWs2AgAgACAENgIIIAAgA0EAIARBAXEiARs2AgQgAEEAIAMgARs2AgAgAkEQaiQADwsQowcACxCkBwALhwEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUEIahDrASACKAIMIQMgAigCCCEEIAEgASgCAEEBazYCACAAIAQ2AgggACADQQAgBEEBcSIBGzYCBCAAQQAgAyABGzYCACACQRBqJAAPCxCjBwALEKQHAAvyIwIofwt+IwBBEGsiHCQAAkAgAQRAIAEoAgAiAkF/Rg0BIAEgAkEBajYCACAcQQhqISIgAUEIaiESIwBBwANrIgMkACADQZyewQBBGRACIgI2AtgCEPgBBEAgA0HYAmoQuAcLIAJBhAFPBEAgAhAACwJ+QaDSwwAoAgBBAUYEQEGw0sMAKQMAIStBqNLDACkDAAwBC0ICIStBsNLDAEICNwMAQaDSwwBCATcDAEIBCyEqIANBCGpByJ7BACkDADcDACADICo3AxBBqNLDACAqQgF8NwMAIAMgKzcDGCADQcCewQApAwA3AwAgEigCDCIbBEAgEkEgaiEXIBJBxABqISUgA0HUAmqtQoCAgIAQhCEwIANB+AJqISYgA0HQAWohJyADQdAAaiEVIANB9ABqISggEigCQCEpIBIoAgAiHUEIaiEOIB0pAwBCf4VCgIGChIiQoMCAf4MhKyASKQM4ITEgEikDMCEyIBIpAxghMyASKQMQITQDQCArUARAA0AgHUGAB2shHSAOKQMAIA5BCGohDkKAgYKEiJCgwIB/gyIrQoCBgoSIkKDAgH9RDQALICtCgIGChIiQoMCAf4UhKwsgAyAdICt6p0EDdkGQf2xqQfAAazYC1AIgA0EBNgLcAiADQYyfwQA2AtgCIANCATcC5AIgAyAwNwPgASADIANB4AFqNgLgAiADQSRqIANB2AJqEOICIAMoAiQhBCADIAMoAigiAiADKAIsEAI2AtgCIAQEQCACIARBARD6BgsQ+AEEQCAD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hAFPBEAgARAACyAAKAIUIgFBhAFPBEAgARAACyAAKAIQIgBBgwFNDQELIAAQAAsLeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEPQDIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARCLAiABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAt4AQJ/IAAoAgAiAigCACEBIAJBADYCAAJAIAEEQCABLQAADQEQywMgAUEBOgAAAkAgACgCBCIAKAIAIgFBAUsgAUVyDQAgAEEEaigCACIBQYQBSQ0AIAEQAAsgAEEANgIADwtBuLHAAEEVEKIHAAtByK3AABCVBgALeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEO4CIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARDgAyABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAtsAQF/IwBBMGsiAyQAIAMgAjYCBCADIAE2AgAgA0ECNgIMIANBjKPBADYCCCADQgI3AhQgAyADrUKAgICA0CKENwMoIAMgAK1CgICAgOAihDcDICADIANBIGo2AhAgA0EIahDOAyADQTBqJAALbAEBfyMAQTBrIgMkACADIAI2AgQgAyABNgIAIANBAjYCDCADQfjfwQA2AgggA0ICNwIUIAMgA61CgICAgKAohDcDKCADIACtQoCAgIDgIoQ3AyAgAyADQSBqNgIQIANBCGoQzwMgA0EwaiQAC2UBAn8jAEEQayICJAAgACgCCCEDIAAoAgQhACACQQRqIAEQqwYgAwRAA0AgAiAANgIMIAJBBGogAkEMakGQsMEAEJoDIABBAWohACADQQFrIgMNAAsLIAJBBGoQngYgAkEQaiQAC28BAX8jAEFAaiICJAAgAkEAOgA4IAIgATYCDCACIAA2AgggAiACQQhqNgI8IAJBPGpB6ILAABDEByACLQA4QQNGBEAgAigCHCIBIAEoAgBBAWs2AgAgAigCFCIBIAEoAgBBAWs2AgALIAJBQGskAAuLAQIBfAJ+IAEQhQcEfiABKAIAEEgiAkQAAAAAAADgw2YhAUL///////////8AAn4gAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwtCgICAgICAgICAfyABGyACRP///////99DZBtCACACIAJhGyEDQgEFQgALIQQgACADNwMIIAAgBDcDAAtlAQN/IAAoAgwiAiAAKAIEIgFrQQxuIQMgASACRwRAA0AgASgCACICBEAgAUEEaigCACACQQEQ+gYLIAFBDGohASADQQFrIgMNAAsLIAAoAggiAQRAIAAoAgAgAUEMbEEEEPoGCwtkAQN/IwBBEGsiAiQAIAIgACgCADYCDCACQQxqIAEQugIgAigCDCIABEAgAEEEaigCACEBIAAoAgAiBEGEAU8EQCAEEAALIAFBhAFPBEAgARAACyAAQQhBBBD6BgsgAkEQaiQAC2kBBH8CQCAABEAgACgCAA0BIAAoAhQhASAAKAIIIQQgACgCBCECIAAoAhAhAyAAQRhBBBD6BiADQYQBTwRAIAMQAAsgAUGEAU8EQCABEAALIAIEQCAEIAJBARD6BgsPCxCjBwALEKQHAAt4AQF/IwBBsAFrIgMkACADQQA6AKQBIAMgAjYCoAEgAyABNgKcASADIAA2ApgBIAMgAzYCrAEgA0GsAWpB+IDAABDEBwJAIAMtAKQBQQNHDQAgA0EIahCMAyADKAIEIgFFDQAgAygCACABQQEQ+gYLIANBsAFqJAALaQEEfwJAIAAoAgAiAUGAgICAeEYNACAAKAIEIQIgACgCCCIDBEAgAiEAA0AgACgCACIEBEAgAEEEaigCACAEQQEQ+gYLIABBDGohACADQQFrIgMNAAsLIAFFDQAgAiABQQxsQQQQ+gYLC2oBAX8jAEEQayIGJAAgAUUEQEH/+8AAQSMQogcACyAGQQhqIAEgAyAEIAUgAigCFBEHACAGKAIMIQEgACAGKAIIIgI2AgggAEEAIAEgAkEBcSICGzYCACAAIAFBACACGzYCBCAGQRBqJAALZAECfyMAQRBrIgIkACACIAAoAgA2AgwgAkEMaiABEJACIAIoAgwiAARAIABBBGooAgAhASAAKAIAIgNBhAFPBEAgAxAACyABQYQBTwRAIAEQAAsgAEEIQQQQ+gYLIAJBEGokAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0Gss8MANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQYytwwA2AgggA0ICNwIUIANCgICAgPAiIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhC0BQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIMIANBzLPDADYCCCADQgI3AhQgA0KAgICA8CIiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACELQFAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0GAtMMANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD5ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD3ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2gBAX8jAEEwayIDJAAgAyACNgIMIAMgATYCCCADQQE2AhQgA0GkjsEANgIQIANCATcCHCADIANBCGqtQoCAgIDAAIQ3AyggAyADQShqNgIYIAAgA0EQahDiAiAAQQA6AAwg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IAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAAPCyMAQYABayIEJAAgAC0AACEAA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAALOAAjAEEQayIBJAAgAUEIaiACIAMgBBDrAiABKAIMIQIgACABKAIINgIAIAAgAjYCBCABQRBqJAALPAEBfwJ/IAEtAAFFBEAQYyECQQAMAQsQayECQQELIQMgACABNgIQIABBADYCCCAAIAI2AgQgACADNgIACzkBAX8gACgCACEAIAEoAhwiAkEQcUUEQCACQSBxRQRAIAAgARCHBw8LIAAgARCaBA8LIAAgARCZBAs6AQF/IwBBEGsiAiQAIAIgASgCABCSASACKAIAIQEgACACKQMINwMIIAAgAUEAR603AwAgAkEQaiQAC450AyN/Gn4BfCABKAIcQQFxIQIgACsDACE/AkAgASgCCEEBRgRAAn8gASEIIAEoAgwhE0EAIQAjAEHwCGsiCSQAID+9IScCf0ECID8gP2INABogJ0L/////////B4MiKUKAgICAgICACIQgJ0IBhkL+////////D4MgJ0I0iKdB/w9xIgEbIiVCAYMhKCAnQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJUIBhiAlQoCAgICAgIAIUSIAGyElQgJCASAAGyEmQct3Qcx3IAAbIAFqIQAgKFAMAQsgAUGzCGshAEIBISYgKFALIQEgCSAAOwHoCCAJICY3A+AIIAlCATcD2AggCSAlNwPQCCAJIAE6AOoIAkACfwJAAkACQAJAIAFBAmsiBARAQQEhAUHbqsMAQdyqwwAgJ0IAUyIFG0HbqsMAQQEgBRsgAhshGSAnQj+IpyACciEcQQMgBCAEQQNP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AEGAAWsiAyQAID+9ISUCf0ECID8gP2INABogJUL/////////B4MiKUKAgICAgICACIQgJUIBhkL+////////D4MgJUI0iKdB/w9xIgAbIidCAYMhKCAlQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJ0IBhiAnQoCAgICAgIAIUSIBGyEnQgJCASABGyEmQct3Qcx3IAEbIABqIQAgKFAMAQsgAEGzCGshAEIBISYgKFALIQEgAyAAOwF4IAMgJjcDcCADQgE3A2ggAyAnNwNgIAMgAToAegJ/AkACQAJAIAFBAmsiAQRAQQEhAEHbqsMAQdyqwwAgJUIAUyIEG0HbqsMAQQEgBBsgAhshGEEBICVCP4inIAIbIRlBAyABIAFBA08bQQJrDgIDAgELIANBAzYCKCADQd2qwwA2AiQgA0ECOwEgQQEhGEEBIQAgA0EgagwDCyADQQM2AiggA0HgqsMANgIkIANBAjsBICADQSBqDAILIANBIGohBSADQQ9qIg4hCCMAQTBrIgQkAAJAAkACfwJAAkACQAJAAkACQAJAAkAgA0HgAGoiDCIAKQMAIiVQRQRAIAApAwgiJ1ANASAAKQMQIiZQDQIgJSAmfCImICVUDQMgJSAnVA0EICZCgICAgICAgIAgWg0FIAQgAC8BGCIAOwEIIAQgJSAnfSInNwMAIAAgAEEgayAAICZCgICAgBBUIgEbIgJBEGsgAiAmQiCGICYgARsiJkKAgICAgIDAAFQiARsiAkEIayACICZCEIYgJiABGyImQoCAgICAgICAAVQiARsiAkEEayACICZCCIYgJiABGyImQoCAgICAgICAEFQiARsiAkECayACICZCBIYgJiABGyImQoCAgICAgICAwABUIgEbICZCAoYgJiABGyIsQgBZIgJrIgFrwSIKQQBIDQYgBCAnIAqtIiaGIiggJogiKTcDECAnIClSDQogBCAAOwEIIAQgJTcDACAEICUgJkI/gyInhiImICeIIic3AxAgJSAnUg0KQaB/IAFrwUHQAGxBsKcFakHOEG0iAEHRAE8NByAAQQR0IgBBsJvDAGopAwAiJ0L/////D4MiJSAmQiCIIjN+IipCIIgiOyAnQiCIIikgM34iPHwgKSAm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DBAAEwAAAJUAAAA/AAAARGF0YWJhc2Ugc3RhcnRlZCBzdWNjZXNzZnVsbHkuAAA8DBAAEwAAAJIAAAABAAAAQ2xvc2luZyB0aGUgZGF0YWJhc2UuLi4APAwQABMAAACiAAAAPgAAAERhdGFiYXNlIGNsb3NlZCBzdWNjZXNzZnVsbHkuQ3JlYXRpbmcgZGF0YWJhc2U6IAUNEAATAAAAVXNpbmcgcHJvdmlkZWQgc3RvcmFnZS5DcmVhdGluZyBJbk1lbW9yeSBzdG9yYWdlLgAAADwMEAATAAAA3AAAACQAAAA8DBAAEwAAAOYAAAAfAAAAUGx1Z2lucyBhcHBsaWVkLkFkZGluZyBkZWZhdWx0cyBwbHVnaW4uQWRkaW5nIG1pZ3JhdGlvbiBwbHVnaW4uQWRkaW5nIGludGVncml0eSBwbHVnaW4uQWRkaW5nIGVuY3J5cHRpb24gcGx1Z2luLkNyZWF0aW5nIHN0b3JhZ2Ugd2l0aCBzY2hlbWFzIGFuZCBtaWdyYXRpb25zLkRhdGFiYXNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LkludmFsaWQgY29sbGVjdGlvbiBuYW1lUHJvY2Vzc2luZyBzY2hlbWEgZm9yIGNvbGxlY3Rpb246IEYOEAAiAAAATWlncmF0aW9uIHBhdGggdW5kZWZpbmVkIGZvciBjb2xsZWN0aW9uOiAsIHZlcnNpb246IHAOEAApAAAAmQ4QAAsAAABSZXF1aXJlZCBTY2hlbWEgIG1pZ3JhdGlvbiBwYXRoICB0byBub3QgYmUgdW5kZWZpbmVktA4QABAAAADEDhAAEAAAANQOEAAUAAAAdQAAAAgAAAAEAAAAdgAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAEA8QAGcAAAAWAgAAHgAAABAPEABnAAAA+AEAACcAAAAQDxAAZwAAAO8BAAAoAAAAdQAAAAgAAAAEAAAAdwAAAHUAAAAIAAAABAAAAHgAAAB1AAAACAAAAAQAAAB5AAAAdQAAAAgAAAAEAAAAegAAAHUAAAAIAAAABAAAAHsAAAB1AAAACAAAAAQAAAB8AAAAdQAAAAgAAAAEAAAAfQAAAHUAAAAIAAAABAAAAH4AAAB1AAAACAAAAAQAAAB/AAAAdQAAAAgAAAAEAAAAgAAAAHUAAAAIAAAABAAAAIEAAAB1AAAACAAAAAQAAACCAAAAdQAAAAgAAAAEAAAAgwAAAHUAAAAIAAAABAAAAIQAAAB1AAAACAAAAAQAAACFAAAAdQAAAAgAAAAEAAAAhgAAAHUAAAAIAAAABAAAAIcAAAB1AAAACAAAAAQAAACIAAAAdQAAAAgAAAAEAAAAiQAAAHUAAAAIAAAABAAAAIoAAAB1AAAACAAAAAQAAACLAAAAdQAAAAgAAAAEAAAAjAAAAHUAAAAIAAAABAAAAI0AAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzABgREABPAAAAyAUAABQAAAAYERAATwAAAMgFAAAhAAAAGBEQAE8AAAC8BQAAIQAAABgREABPAAAATAQAACQAAABpbnZhbGlkIHBvbGwgc3RhdGVgdW53cmFwX3Rocm93YCBmYWlsZWQAQdijwAALsQUBAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAAJhIQAE8AAAAEAQAAGgAAAAAAAAAEAAAABAAAAI8AAAAAAAAABAAAAAQAAACQAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJIAAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAlAAAAAAAAAAEAAAABAAAAJUAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwD4EhAAXwAAABYCAAAvAAAA+BIQAF8AAAChAAAAJAAAAE5vbmVTb21lAAAAAAQAAAAEAAAAlgAAAEVycm9yL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwLnJzAJUTEABaAAAA+gAAAD8AAACVExAAWgAAAB8BAAAuAAAAY29kZZcAAAAEAAAABAAAAAMAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlc3JjL2Vycm9yLnJzAE8UEAAMAAAAWwAAAGUAAACYAAAABAAAAAQAAACZAAAATxQQAAwAAABbAAAAWwBBlKnAAAu/AwEAAACcAAAASW52YWxpZCBjb2xsZWN0aW9uICwgbm90IGZvdW5kAACcFBAAEwAAAK8UEAALAAAASG9vayBpcyBub3QgYSBmdW5jdGlvbkhvb2sgbXVzdCBiZSBhIGZ1bmN0aW9uRXJyb3IgZXhlY3V0aW5nIHBsdWdpbiBob29rOiAAAPkUEAAdAAAASW52YWxpZCBTY2hlbWEgY2Fubm90IGZpbmQgcHJpbWFyeUtleSBmaWVsZDEyMzQ1VW5leHBlY3RlZCBwcmltYXJ5IGtleSBzaG91bGQgYmUgYSBzdHJpbmdVbmV4cGVjdGVkIHByaW1hcnkga2V5IHNob3VsZCBiZSBudW1iZXJGaWVsZCAgaXMgcmVxdWlyZWQAAKAVEAAGAAAAphUQAAwAAAAgc2hvdWxkIG1hdGNoIHR5cGUgAKAVEAAGAAAAxBUQABMAAABTdHJpbmdOdW1iZXJCb29sZWFuQXJyYXlPYmplY3RfX05vbmV4aGF1c3RpdmUAAAAGAAAABgAAAAcAAAAFAAAABgAAAA8AAADoFRAA7hUQAPQVEAD7FRAAABYQAAYWEAD//////////0gWEABB4KzAAAu7BS9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAYBYQAGcAAADOAQAAHAAAAAAAAAAMAAAABAAAAJ4AAACfAAAAAAAAAAwAAAAEAAAAoAAAAKEAAAAAAAAADAAAAAQAAACiAAAAowAA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OiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgIm5vbmV4aXN0ZW50IjogInZhbHVlIgogICAgfQogICAgYXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAAAALBkQABAAAAA4AQAABQAAACwZEAAQAAAAOgEAACsAAABJbnZhbGlkIHByb3BlcnR5OiBub25leGlzdGVudAAAALQeEAAdAAAALBkQABAAAAA5AQAABQAAACwZEAAQAAAANgEAADMAAAAsGRAAEAAAADQBAAAyAAAALBkQABAAAAAyAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF90eXBlCiAgICB7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIHsKICAgICAgICAiYWdlIjogInRoaXJ0eSIKICAgIH0KICAgIAAsGRAAEAAAAFUBAAAFAAAALBkQABAAAABXAQAAKwAAANsaEAARAAAALBkQABAAAABWAQAABQAAACwZEAAQAAAAUwEAADMAAAAsGRAAEAAAAFIBAAAyAAAALBkQABAAAABQAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfbG9naWNhbF9vcGVyYXRvcnMKICAgIHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJuYW1lIjogIkFsaWNlIiB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkZ3RlIjogMjUgfSB9CiAgICAgICAgXQogICAgfQogICAgAAAALBkQABAAAAB2AQAABQAAACwZEAAQAAAAdAEAADMAAAAsGRAAEAAAAHMBAAAyAAAALBkQABAAAABxAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF9vcGVyYXRvcgogICAgewogICAgICAgICJhZ2UiOiB7ICIkdW5rbm93biI6IDMwIH0KICAgIH0KICAgIAAALBkQABAAAACPAQAABQAAACwZEAAQAAAAkQEAACsAAABJbnZhbGlkIG9wZXJhdG9yOiAkdW5rbm93bgAAyCIQABoAAAAsGRAAEAAAAJABAAAFAAAALBkQABAAAACNAQAAMwAAACwZEAAQAAAAjAEAADIAAAAsGRAAEAAAAIoBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRndCI6ICJ0aGlydHkiIH0KICAgIH0KICAgIAAALBkQABAAAACsAQAABQAAACwZEAAQAAAArgEAACsAAAAsGRAAEAAAAK0BAAAFAAAALBkQABAAAACqAQAAMwAAACwZEAAQAAAAqQEAADIAAAAsGRAAEAAAAKcBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcgogICAgewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgInN0YXR1cyI6IHsgIiRpbiI6IFsiYWN0aXZlIiwgInBlbmRpbmciXSB9CiAgICB9CiAgICAsGRAAEAAAAMkBAAAFAAAALBkQABAAAADHAQAAMwAAACwZEAAQAAAAxgEAADIAAAAsGRAAEAAAAMQBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRpbiI6IFsidGhpcnR5IiwgImZvcnR5Il0gfQogICAgfQogICAgLBkQABAAAADiAQAABQAAACwZEAAQAAAA5AEAACsAAAAsGRAAEAAAAOMBAAAFAAAALBkQABAAAADgAQAAMwAAACwZEAAQAAAA3wEAADIAAAAsGRAAEAAAAN0BAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9zaW1wbGVfYXR0cmlidXRlc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiaWQiOiAiMTIzIiwKICAgICAgICAibmFtZSI6ICJBbGljZSIKICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgImlkIjogIjEyMyIgfSwKICAgICAgICAgICAgeyAibmFtZSI6ICJBbGljZSIgfQogICAgICAgIF0KICAgIH0sGRAAEAAAAAYCAAAFAAAALBkQABAAAAAIAgAAKgAAACwZEAAQAAAABwIAACwAAAAsGRAAEAAAAAQCAAA0AAAALBkQABAAAAD9AQAALgAAACwZEAAQAAAA+gEAAC4AAAAsGRAAEAAAAPkBAAAvAAAALBkQABAAAAD4AQAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH17CiAgICAgICAgImlkIjogIjEyMyIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkbHQiOiAyMCB9IH0KICAgICAgICBdCiAgICB9ewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJpZCI6ICIxMjMiIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDIwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQAsGRAAEAAAADECAAAFAAAALBkQABAAAAAzAgAAKgAAACwZEAAQAAAAMgIAACwAAAAsGRAAEAAAAC8CAAA0AAAALBkQABAAAAAjAgAALgAAACwZEAAQAAAAIAIAAC4AAAAsGRAAEAAAAB8CAAAvAAAALBkQABAAAAAeAgAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fbmVzdGVkX2xvZ2ljYWxfb3BlcmF0b3JzewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJyb2xlIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkYW5kIjogWwogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0ZSI6IDMwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7ICJyb2xlIjogImFkbWluIiB9CiAgICAgICAgXQogICAgfQAAACwZEAAQAAAAYQIAAAUAAAAsGRAAEAAAAGMCAAAqAAAALBkQABAAAABiAgAALAAAACwZEAAQAAAAXwIAADQAAAAsGRAAEAAAAFMCAAAuAAAALBkQABAAAABQAgAALgAAACwZEAAQAAAATwIAAC8AAAAsGRAAEAAAAE4CAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3J7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJzY29yZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMTggfSB9LAogICAgICAgICAgICB7ICJzY29yZSI6IHsgIiRsdGUiOiAxMDAgfSB9CiAgICAgICAgXQogICAgfSwZEAAQAAAAhgIAAAUAAAAsGRAAEAAAAIgCAAAqAAAALBkQABAAAACHAgAALAAAACwZEAAQAAAAhAIAADQAAAAsGRAAEAAAAH0CAAAuAAAALBkQABAAAAB6AgAALgAAACwZEAAQAAAAeQIAAC8AAAAsGRAAEAAAAHgCAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9jb21wbGV4X21peGVkewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgImFnZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9LAogICAgICAgICAgICAiY2l0eSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAic3RhdHVzIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICJuYW1lIjogIkJvYiIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiY2l0eSI6ICJOZXcgWW9yayIgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGx0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgIm5hbWUiOiAiQm9iIiB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiJG9yIjogWwogICAgICAgICAgICAgICAgICAgIHsgImNpdHkiOiAiTmV3IFlvcmsiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDMwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH0ALBkQABAAAAC9AgAABQAAACwZEAAQAAAAvwIAACoAAAAsGRAAEAAAAL4CAAAsAAAALBkQABAAAAC7AgAANAAAACwZEAAQAAAAqgIAAC4AAAAsGRAAEAAAAKcCAAAuAAAALBkQABAAAACmAgAALwAAACwZEAAQAAAApQIAADAAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X3F1ZXJ5ewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9e30sGRAAEAAAANECAAAFAAAALBkQABAAAADPAgAAMwAAACwZEAAQAAAAzgIAAEMAAAAsGRAAEAAAAM4CAAA5AAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5bm90IGFuIG9iamVjdCwZEAAQAAAA4QIAAAUAAAAsGRAAEAAAAOMCAAArAAAA+BgQABcAAAAsGRAAEAAAAOICAAAFAAAALBkQABAAAADeAgAAQwAAACwZEAAQAAAA3gIAADkAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAg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N2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnMAAAC9RBAAXAAAAFcAAAAKAAAAvUQQAFwAAABQAAAAMwAAAFZlYyBpcyBzaXplZCBjb25zZXJ2YXRpdmVseQA8RRAAGwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAYEUQACoAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9tb2QucnOURRAAYAAAAAEBAAAZAAAAaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIGJ1ZmZlciBzaXplAAAAlEUQAGAAAAB5AAAAEgAAAA0BAAAUAAAABAAAAA4BAABJbnZhbGlkIFVURjiURRAAYAAAAH8AAAAkAAAATWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZvcmUgbmV4dF9rZXkvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLTEuMC4yMTYvc3JjL2RlL3ZhbHVlLnJzAACcRhAAXgAAAGYFAAAbAAAAU2VyaWFsaXphdGlvbiBFcnJvcjogAAAADEcQABUAAABWYWxpZGF0aW9uIEVycm9yOiAAACxHEAASAAAAU2VyaWFsaXphdGlvbiAAAEhHEAAOAAAAY29kZW1lc3NhZ2UADwEAAAQAAAAEAAAAAwAAAEludmFsaWQgSlMgRXJyb3Igbm8gbWVzc2FnZSBpcyBhdmFpbGFibGVzcmMvZXJyb3IucnOkRxAADAAAADUAAABFAAAAc3RyaW5nbnVtYmVyYm9vbGVhbmFycmF5b2JqZWN0V3Jvbmcga2V5YW4gUHJvcGVydHlUeXBlIChTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgT2JqZWN0IG9yIEFycmF5KQBBrJDBAAuXDgEAAADWAAAAEAEAABQAAAAEAAAAEQEAABIBAAASAQAAQ3JlYXRpbmcgZG9jdW1lbnQgd2l0aCBkZWZhdWx0c0RvY3VtZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5RmFpbGVkIHRvIGNyZWF0ZSBkb2N1bWVudEFkZGluZyBkZWZhdWx0cyB0byBkb2N1bWVudERlZmF1bHRzIGFkZGVkIHN1Y2Nlc3NmdWxseVNldHRpbmcgZGVmYXVsdCBmb3Iga2V5OiDXSBAAGQAAAGRvY0NyZWF0ZUhvb2tkb2NSZWNvdmVySG9va0Vycm9yc0Vycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yABlJEAAFAAAAHkkQABIAAAAwSRAADwAAAHZhcmlhbnQgaWRlbnRpZmllcmVudW0gRXJyb3JzYXR0ZW1wdGVkIHRvIGNvbnZlcnQgaW52YWxpZCBQcm9wZXJ0eVR5cGUgaW50byBKU1ZhbHVlc3JjL3NjaGVtYS9wcm9wZXJ0eV90eXBlLnJzAACrSRAAGwAAAAcAAAABAAAAU3RyaW5nTnVtYmVyQm9vbGVhbkFycmF5T2JqZWN0X19Ob25leGhhdXN0aXZlU2NoZW1hdmVyc2lvbnByaW1hcnlLZXl0eXBlcHJvcGVydGllc2luZGV4ZXNyZXF1aXJlZGVuY3J5cHRlZHN0cnVjdCBTY2hlbWFGaWVsZCAnJyBpcyByZXF1aXJlZABPShAABwAAAFZKEAANAAAAJyBzaG91bGQgYmUgb2YgdHlwZSAnJwAAT0oQAAcAAAB0ShAAFQAAAIlKEAABAAAARmFpbGVkIHRvIGdldCBwcm9wZXJ0eSAnJzogAKRKEAAYAAAAvEoQAAMAAADYRxAABgAAAFNjaGVtYSB0eXBlIGlzIGludmFsaWQgKCIiKQDYShAAGQAAAPFKEAACAAAAC0oQAAcAAAASShAACgAAABxKEAAEAAAAIEoQAAoAAAAqShAABwAAADFKEAAIAAAAOUoQAAkAAABtYXhMZW5ndGhyaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfY3JlYXRpb257CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0sCiAgICAgICAgICAgICJuYW1lIjogeyJ0eXBlIjogInN0cmluZyJ9LAogICAgICAgICAgICAiYWdlIjogeyJ0eXBlIjogIm51bWJlciJ9CiAgICAgICAgfQogICAgfQAAAAEAAABpZAAAXEwQAAIAAABzcmMvc2NoZW1hL21vZC5ycwAAAGhMEAARAAAAVwEAAAUAAABoTBAAEQAAAFgBAAAFAAAAaEwQABEAAABWAQAABQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAaEwQABEAAABVAQAALwAAAGhMEAARAAAAVAEAADAAAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfdmFsaWRhdGlvbnsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsidHlwZSI6ICJzdHJpbmcifQogICAgICAgIH0KICAgIH1hc3NlcnRpb24gZmFpbGVkOiBzY2hlbWEuaXNfdmFsaWQoKS5pc19vaygpAABoTBAAEQAAAGcBAAAFAAAAaEwQABEAAABmAQAALwAAAGhMEAARAAAAZQEAAC8AAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9pbnZhbGlkX3NjaGVtYXsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogImludmFsaWQiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0KICAgICAgICB9CiAgICB9YXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAABoTBAAEQAAAHgBAAAFAAAAaEwQABEAAAB1AQAALwAAAFJldHJpZXZpbmcgY29sbGVjdGlvbnMuLi4AAAD//////////zhPEABB0J7BAAvVAkNvbGxlY3Rpb25zIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuUHJvY2Vzc2luZyBjb2xsZWN0aW9uOiAAAHNPEAAXAAAABgAAAAYAAAAHAAAABQAAAAYAAAAPAAAA2EkQAN5JEADkSRAA60kQAPBJEAD2SRAABgAAAAYAAAAHAAAABQAAAAYAAAAGAAAAwEcQAMZHEADMRxAA00cQANhHEADYRxAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIucnMA9E8QAF8AAACuAAAAFAAAADAxMjM0NTY3ODlhYmNkZWYAAAAACAAAAAQAAAAZAQAAGgEAABsBAAAcAQAAHQEAAAwAAAAEAAAAHgEAAB8BAABkAEGwocEAC/MgAQAAACABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAADvUBAASwAAAAYKAAAOAAAARXJyb3JpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAABRURAADgAAAF9REAALAAAAaW52YWxpZCB2YWx1ZTogAHxREAAPAAAAX1EQAAsAAABtaXNzaW5nIGZpZWxkIGBgnFEQAA8AAACrURAAAQAAAGludmFsaWQgbGVuZ3RoIAC8URAADwAAAF9REAALAAAAZHVwbGljYXRlIGZpZWxkIGAAAADcURAAEQAAAKtREAABAAAAdW5rbm93biB2YXJpYW50IGBgLCB0aGVyZSBhcmUgbm8gdmFyaWFudHMAAAAAUhAAEQAAABFSEAAYAAAAYCwgZXhwZWN0ZWQgAFIQABEAAAA8UhAADAAAACEBAAAEAAAABAAAAAMAAABFcnJvciBnZXR0aW5nIHByb3BlcnR5c3JjL3V0aWxzLnJzAAB+UhAADAAAAAoAAABMAAAAUGFzc3dvcmQgY2Fubm90IGJlIGVtcHR5RW5jcnlwdGlvbgAAIgEAACAAAAAEAAAAIwEAACQBAAAkAQAAIgEAACAAAAAEAAAAJQEAACYBAAAmAQAAU2NoZW1hIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZENvbnRlbnQgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkRmFpbGVkIHRvIHN0cmluZ2lmeSBlbmNyeXB0ZWQgZGF0YUZhaWxlZCB0byBjb252ZXJ0IHNlcmlhbGl6ZWQgZGF0YSB0byBzdHJpbmdGYWlsZWQgdG8gY3JlYXRlIGNpcGhlckVuY3J5cHRpb24gZmFpbGVkAQABQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////////////////////////////////////////////////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9fX2VuY3J5cHRlZGVuY3J5cHRlZCBmaWVsZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbW9kZWxwcmltYXJ5IGtleSBtdXN0IG5vdCBiZSBlbmNyeXB0ZWRDb250ZW50IG11c3QgYmUgYW4gb2JqZWN0SW52YWxpZCBlbmNyeXB0ZWQgZGF0YTogZXhwZWN0ZWQgc3RyaW5nRW5jcnlwdGVkIGRhdGEgaXMgZW1wdHlJbnZhbGlkIGJhc2U2NCBkYXRhRGVjcnlwdGlvbiBmYWlsZWRJbnZhbGlkIFVURi04IGRhdGFGYWlsZWQgdG8gcGFyc2UgZGVjcnlwdGVkIGRhdGFJbnZhbGlkIGVuY3J5cHRlZCBkYXRhIGxlbmd0aEZhaWxlZCB0byByZWFkIGVuY3J5cHRlZCBkYXRhREVCVUdyaWRiOiovVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAAA0VhAAagAAAJUAAAAOAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMzQvc3JjL3Nlci5ycwAAsFYQAF4AAAAwCAAAMwAAALBWEABeAAAAIwgAAEAAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlsFYQAF4AAAANBgAAEgAAAGZhbHNlXCJcXFxiXGZcblxyXHRdbWlkID4gbGVuAAAAfFcQAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5ycwCQVxAAXwAAAK4AAAAUAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJYAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwAgWBAAXwAAAEwAAAAfAAAAIFgQAF8AAABGAAAAFwAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwAAy1gQAF8AAAAWAgAALwAAAHNyYy9wbHVnaW4vaW50ZWdyaXR5L21vZC5ycwA8WRAAGwAAAA8AAABIAAAASW50ZWdyaXR5AAAAKAEAABQAAAAEAAAAKQEAACoBAAAqAQAAKAEAABQAAAAEAAAAKwEAACwBAAAsAQAAX19pbnRlZ3JpdHkAPFkQABsAAABDAAAATgAAAEVycm9yIGNvbnZlcnRpbmcgdG8gc2VyZGVfanNvbjo6VmFsdWU6IADAWRAAJwAAAEVycm9yIHNlcmlhbGl6aW5nIHNvcnRlZCBKU09OOiAA8FkQAB8AAAA8WRAAGwAAAFwAAAAzAAAALQEAAAQAAAAEAAAAAwAAADxZEAAbAAAAXQAAADQAAAA8WRAAGwAAAFsAAAA0AAAARXJyb3IgcmV0cmlldmluZyBpbnRlZ3JpdHkgdmFsdWU8WRAAGwAAAHAAAABOAAAASW50ZWdyaXR5IGNoZWNrIGZhaWxlZDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5AAAAAAAABAAAAAQAAAAuAQAAAAAAAAQAAAAEAAAALwEAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAAAAAAAQAAAAEAAAAlAAAAEVycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yAAAAAAAAAQAAAAEAAAAwAQAAAAAAAAQAAAAEAAAAkQAAAFJJREJFcnJvcmNvZGVtZXNzYWdlUHJvcGVydHl0eXBlaXRlbXNtYXhJdGVtc21pbkl0ZW1zcHJvcGVydGllc21heExlbmd0aG1pbkxlbmd0aGRlZmF1bHQcXBAABAAAACBcEAAFAAAAJVwQAAgAAAAtXBAACAAAADVcEAAKAAAAP1wQAAkAAABIXBAACQAAAFFcEAAHAAAAc3RydWN0IFByb3BlcnR5TWluIGhpZ2hlciB0aGFuIG1heE1pbiBwcm9wZXJ0eSBub3QgdmFsaWRJdGVtcyBpcyBlbXB0eUludmFsaWQgcHJvcGVydHkgaXRlbXNJdGVtcyBwcm9wZXJ0eSBub3QgdmFsaWQxAQAAEAAAAAQAAAAyAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXNyYy9zY2hlbWEvcHJvcGVydHkucnMAAABHXRAAFgAAAJIAAAA5AAAAUHJvcGVydGllcyBlbXB0eVByb3BlcnR5IHR5cGUgaW52YWxpZHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV9jcmVhdGlvbnsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiA1MCwKICAgICAgICAibWluTGVuZ3RoIjogMQogICAgfQAAAEddEAAWAAAAHgIAAAUAAABHXRAAFgAAAB8CAAAFAAAAMwEAAAQAAAAEAAAAAwAAAEddEAAWAAAAHwIAACYAAABHXRAAFgAAAB4CAAAmAAAAR10QABYAAAAdAgAABQAAADQBAAAEAAAABAAAADUBAABHXRAAFgAAABsCAABPAAAAR10QABYAAAAaAgAAMwAAAHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV92YWxpZGF0aW9uYXNzZXJ0aW9uIGZhaWxlZDogcHJvcGVydHkuaXNfdmFsaWQoKS5pc19vaygpAABHXRAAFgAAACwCAAAFAAAAR10QABYAAAAqAgAATwAAAEddEAAWAAAAKQIAADMAAAByaWRiX3dhc206OnNjaGVtYTo6cHJvcGVydHk6OnRlc3RfaW52YWxpZF9wcm9wZXJ0eXsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiAxMCwKICAgICAgICAibWluTGVuZ3RoIjogMjAKICAgIH1hc3NlcnRpb24gZmFpbGVkOiBwcm9wZXJ0eS5pc192YWxpZCgpLmlzX2VycigpAABHXRAAFgAAADkCAAAFAAAAR10QABYAAAA3AgAATwAAAEddEAAWAAAANgIAADMAAABGYWlsZWQgdG8gc2V0IG91dGVyIG9iamVjdCBwcm9wZXJ0eUZhaWxlZCB0byBzZXQgaW5uZXIgb2JqZWN0IHByb3BlcnR5AAAFAAAAEgAAAA8AAAC4WxAAvVsQAM9bEABBcmMgY291bnRlciBvdmVyZmxvd4RgEAAUAAAAL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAAKBgEABJAAAAfwYAAA0AAAABAAAAAAAAAKBgEABJAAAAhQsAAA0AAAAAAAAA//////////8YYRAAQbDCwQAL2R1NaWdyYXRpb24AAAA3AQAAFAAAAAQAAAA4AQAAOQEAADkBAAA3AQAAFAAAAAQAAAA6AQAAOwEAADsBAABfX3ZlcnNpb25fX3ZlcnNpb24gc2hvdWxkIGJlIGEgbnVtYmVyTWlncmF0aW9uIE9iamVjdCBpcyB1bmRlZmluZWRNaWdyYXRpbmcgZnVuY3Rpb24gIHRvIHNjaGVtYSB2ZXJzaW9uIG5vdCBmb3VuZAAAAK5hEAATAAAAwWEQABwAAABFcnJvciBnZXR0aW5nIHRoZSBkb2N1bWVudCB2ZXJzaW9uLCBlcnIg8GEQACgAAABFcnJvciByZWNvdmVyaW5nIG1pZ3JhdGlvbiBmdW5jdGlvbiBmb3IgdmVyc2lvbiAgYhAAMAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbGF6eV9zdGF0aWMtMS40LjAvc3JjL2lubGluZV9sYXp5LnJzAAAAWGIQAGUAAAAeAAAAEAAAACRvciRvciBtdXN0IGJlIGFuIGFycmF5JGFuZCBtdXN0IGJlIGFuIGFycmF5RmFpbGVkIHRvIGdldCB0aGUgcXVlcnkgdmFsdWUsIGVyciAA/GIQACMAAABGYWlsZWQgdG8gZ2V0IHRoZSBkb2N1bWVudCBrZXksIGVyciAoYxAAJAAAACRndCRsdCRpblVuc3VwcG9ydGVkIG9wZXJhdG9yOiAAXWMQABYAAAAkaW4gdmFsdWUgbXVzdCBiZSBhbiBhcnJheURvY3VtZW50IHZhbHVlIGlzIG5vdCBhIG51bWJlckNvbmRpdGlvbiB2YWx1ZSBpcyBub3QgYSBudW1iZXIvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9nZW5lcmFsX3B1cnBvc2UvZGVjb2RlLnJzAADTYxAAcwAAAI0AAAAZAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZV9zdWZmaXgucnMAAFhkEAB6AAAAVAAAAAkAAABYZBAAegAAAB8AAAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnP0ZBAAXAAAAIoAAAAJAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZS5ycwBgZRAAcwAAADgAAAAmAAAAYGUQAHMAAABeAAAALgAAAGBlEABzAAAAYQAAAA0AAABgZRAAcwAAAGUAAAA4AAAAYGUQAHMAAAA9AAAAJwAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjIuMS9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9tb2QucnMkZhAAcAAAAJYAAAANAAAAJGYQAHAAAACYAAAAQAAAACRmEABwAAAAlwAAAA0AAAAkZhAAcAAAAJoAAAANAAAAJGYQAHAAAACeAAAADQAAACRmEABwAAAAnwAAAA0AAAAkZhAAcAAAAIcAAAAlAAAAJGYQAHAAAACIAAAAKwAAACRmEABwAAAAQAAAABsAAAAkZhAAcAAAAEIAAAAgAAAAAAAAAAEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYva2VjY2FrLTAuMS41L3NyYy9saWIucnNBIHJvdW5kX2NvdW50IGdyZWF0ZXIgdGhhbiBLRUNDQUtfRl9ST1VORF9DT1VOVCBpcyBub3Qgc3VwcG9ydGVkIQAAAPhnEABYAAAA7gAAAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguNC9zcmMvc29mdC9maXhzbGljZTMyLnJzAAAApGgQAGEAAACJBAAAEgAAAKRoEABhAAAAiQQAAD0AAACkaBAAYQAAABQFAAAiAAAApGgQAGEAAAAUBQAACQAAAEVycm9yOiAASGkQAAcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhbmRfY29yZS0wLjYuNC9zcmMvb3MucnMAAFhpEABaAAAAPwAAAA0AAABnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZXVuZXhwZWN0ZWQgc2l0dWF0aW9uU2VjUmFuZG9tQ29weUJ5dGVzOiBpT1MgU2VjdXJpdHkgZnJhbWV3b3JrIGZhaWx1cmVSdGxHZW5SYW5kb206IFdpbmRvd3Mgc3lzdGVtIGZ1bmN0aW9uIGZhaWx1cmVSRFJBTkQ6IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogQ1BVIGlzc3VlIGxpa2VseVJEUkFORDogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZFdlYiBDcnlwdG8gQVBJIGlzIHVuYXZhaWxhYmxlQ2FsbGluZyBXZWIgQVBJIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgZmFpbGVkcmFuZFNlY3VyZTogVnhXb3JrcyBSTkcgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZE5vZGUuanMgY3J5cHRvIENvbW1vbkpTIG1vZHVsZSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgTm9kZS5qcyBBUEkgY3J5cHRvLnJhbmRvbUZpbGxTeW5jIGZhaWxlZE5vZGUuanMgRVMgbW9kdWxlcyBhcmUgbm90IGRpcmVjdGx5IHN1cHBvcnRlZCwgc2VlIGh0dHBzOi8vZG9jcy5ycy9nZXRyYW5kb20jbm9kZWpzLWVzLW1vZHVsZS1zdXBwb3J0VW5rbm93biBFcnJvcjogEWwQAA8AAABPUyBFcnJvcjogAAAobBAACgAAAGNyeXB0bwAAxGkQAOtpEAARahAAJWoQAFdqEACEahAAs2oQANRqEADxahAAxGkQAMRpEAAeaxAAT2sQAHxrEACsaxAAJwAAACYAAAAUAAAAMgAAAC0AAAAvAAAAIQAAAB0AAAAtAAAAJwAAACcAAAAxAAAALQAAADAAAABlAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvcGFya2luZ19sb3QucnMAvGwQAGsAAABrAQAAFwAAALxsEABrAAAAhgEAABcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcmtpbmdfbG90X2NvcmUtMC45LjEwL3NyYy9wYXJraW5nX2xvdC5ycwBIbRAAawAAAEoBAAAMAAAAUGFya2luZyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AAMRtEAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAAD0bRAAcgAAABoAAAAJAAAA9G0QAHIAAAAeAAAACQAAAPRtEAByAAAAIgAAAAkAAAD0bRAAcgAAACYAAAAJAAAA9G0QAHIAAAAqAAAACQAAAAAAAAAIAAAABAAAAD0BAAByZWFkb25seXJlYWR3cml0ZXJlYWR3cml0ZWZsdXNoY2xlYW51cHZlcnNpb25jaGFuZ2VhdHRlbXB0ZWQgdG8gY29udmVydCBpbnZhbGlkIElkYlRyYW5zYWN0aW9uTW9kZSBpbnRvIEpTVmFsdWUvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dlYi1zeXMtMC4zLjY5L3NyYy9mZWF0dXJlcy9nZW5fSWRiVHJhbnNhY3Rpb25Nb2RlLnJzAAAAN28QAHYAAAAEAAAAAQAAAAAAAAAIAAAABAAAAD4BAAA/AQAAQAEAAEEBAABpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAAAA3G8QAA4AAADqbxAACwAAAAEAQZjgwQALwwEBAAAARQEAACBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyAQAAAAAAAAAgcBAALAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi4zL3NyYy9saWIucnNccBAAZAAAADUAAAAOAAAA///////////QcBAAQejhwQAL1gcvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAOhwEABPAAAAyAUAABQAAADocBAATwAAAMgFAAAhAAAA6HAQAE8AAAC8BQAAIQAAAOhwEABPAAAATAQAACQAAABva0ZBSUxpZ25vcmVkaWdub3JlZCwgAACFcRAACQAAAAAAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzAJxxEABnAAAAUQIAACoAAACccRAAZwAAAE4CAAAJAAAAnHEQAGcAAAArAgAAJwAAAJxxEABnAAAALwIAACAAAACccRAAZwAAACYCAAAuAAAAnHEQAGcAAAAlAgAAKgAAAJxxEABnAAAAYQIAAB4AAACccRAAZwAAAF0CAAAlAAAAAQAAgAAAAAAAAAAAnHEQAGcAAABtAgAAFgAAAJxxEABnAAAAdQIAADUAAAAKZmFpbHVyZXM6CmZhaWx1cmVzOgpGQUlMRUR0ZXN0IHJlc3VsdDogLiAgcGFzc2VkOyAgZmFpbGVkOyAgaWdub3JlZDsgIGZpbHRlcmVkIG91dArLchAADQAAANhyEAACAAAA2nIQAAkAAADjchAACQAAAOxyEAAKAAAA9nIQAA4AAAAgICAgNHMQAAQAAACccRAAZwAAAHwCAAAmAAAAIG91dHB1dDoKbm90ZTogIGRpZCBub3QgcGFuaWMgYXMgZXhwZWN0ZWQKCgBZcxAABgAAAF9zEAAcAAAAbm90ZTogcGFuaWMgZGlkIG5vdCBjb250YWluIGV4cGVjdGVkIHN0cmluZwogICAgICBwYW5pYyBtZXNzYWdlOiBgIiJgLAoAuHMQABcAAADPcxAABAAAAJxxEABnAAAAsAIAACcAAACccRAAZwAAALACAAAwAAAAIGV4cGVjdGVkIHN1YnN0cmluZzogYCIiYAoKAAR0EAAXAAAAG3QQAAQAAABkZWJ1Z2xvZ2luZm93YXJuZXJyb3JKUyBleGNlcHRpb24gdGhhdCB3YXMgdGhyb3duOgotLS0tICBvdXRwdXQgLS0tLQoAAABjdBAABQAAAGh0EAANAAAAnHEQAGcAAACiAgAAIgAAAJxxEABnAAAABgEAABIAAABKAQAABAAAAAQAAABLAQAATAEAAE0BAEHI6cEACw4BAAAATgEAAE8BAABQAQBB4OnBAAudBgEAAABRAQAAUgEAAFMBAACccRAAZwAAADMBAAAnAAAALS1pbmNsdWRlLWlnbm9yZWQtLXNraXAtLXNraXA9bW9yZSB0aGFuIG9uZSBmaWx0ZXIgYXJndW1lbnQgY2Fubm90IGJlIHBhc3NlZJxxEABnAAAAQgEAABEAAABmbGFnICBub3Qgc3VwcG9ydGVkAFx1EAAFAAAAYXUQAA4AAACccRAAZwAAAEABAAARAAAAQXJndW1lbnQgdG8gb3B0aW9uICdza2lwJyBtaXNzaW5nAAAAnHEQAGcAAAA5AQAAGgAAAJxxEABnAAAAOwEAABoAAACccRAAZwAAAC4BAAAoAAAAnHEQAGcAAAAtAQAALAAAAHRlc3R0ZXN0c3J1bm5pbmcgIAAA/XUQAAgAAAAFdhAAAQAAAGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY3JlYXRpbmcgYSB0ZXN0OiAYdhAAKAAAAJxxEABnAAAAYgEAABUAAABUAQAAWHYQAC9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAYHYQAE8AAADIBQAAFAAAAGB2EABPAAAAyAUAACEAAABgdhAATwAAALwFAAAhAAAAVwEAAAwAAAAEAAAAWAEAAFkBAABaAQAAYHYQAE8AAABMBAAAJAAAAHRlc3QgIC4uLiAAAAh3EAAFAAAADXcQAAUAAAA6IAAAAQAAAAAAAAAkdxAAAgAAAAoAAAABAAAAAAAAADh3EAABAAAAYHVud3JhcF90aHJvd2AgZmFpbGVkAAAAAAAAAAQAAAAEAAAAWwEAAFwBAABdAQAAJAAAAAQAAABeAQAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwCIdxAAZwAAAN0AAAAVAEGI8MEAC4IGAQAAAI4AAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAAAFZ4EABPAAAABAEAABoAAAB0ZXN0ICAuLi4gAAC4eBAABQAAAL14EAAFAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tdGVzdC0wLjMuNDIvc3JjL3J0L21vZC5ycwDUeBAAZwAAAG4BAAAbAAAAY2Fubm90IGFjY2VzcyBhIHNjb3BlZCB0aHJlYWQgbG9jYWwgdmFyaWFibGUgd2l0aG91dCBjYWxsaW5nIGBzZXRgIGZpcnN0L1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zY29wZWQtdGxzLTEuMC4xL3NyYy9saWIucnOUeRAAXAAAAKgAAAAJAAAAAAAAAAQAAAAEAAAAXwEAAEVycm9yAAAAAAAAAAQAAAAEAAAAYAEAAGEBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzACx6EABnAAAApgEAAB4AAAAAAAAABAAAAAQAAABgAQAAYQEAAAAAAAAEAAAABAAAAGABAABhAQAAAAAAAAQAAAAEAAAAYAEAAGEBAAAAAAAABAAAAAQAAABgAQAAYQEAAGIBAAAMAAAABAAAAGMBAABkAQAAWgEAQZT2wQALoQQBAAAAZQEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAFN7EABLAAAABgoAAA4AAAAsehAAZwAAAAkBAAAtAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTyexAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5JHwQADgAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzZHwQAEwAAACeAAAAMgAAAAAAAAAIAAAABAAAAGYBAABnAQAAaAEAAGkBAAAAAAAACAAAAAQAAABqAQAARGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZQBBwPrBAAuSAgEAAABrAQAAbAEAAGwBAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAFB9EABPAAAAyAUAABQAAABQfRAATwAAAMgFAAAhAAAAUH0QAE8AAAC8BQAAIQAAAFB9EABPAAAATAQAACQAAABvdXRwdXR0ZXN0ICAuLi4g5n0QAAUAAADrfRAABQAAADogAAABAAAAAAAAAAB+EAACAAAACgAAAAEAAAAAAAAAFH4QAAEAAABFcnJvcgAAAG4BAAAMAAAABAAAAG8BAABwAQAAcQEAAAoKU3RhY2s6CgoAQdz8wQALmQEBAAAAcgEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAJt+EABLAAAABgoAAA4AQYD+wQALtQ0BAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAATn8QAE8AAAAEAQAAGgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAAB3AQAABAAAAAQAAAB4AQAAeQEAAHoBAAAEAAAABAAAAHsBAAB8AQAAegEAAAQAAAAEAAAAfQEAAH4BAABGbk9uY2UgY2FsbGVkIG1vcmUgdGhhbiBvbmNlL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL3F1ZXVlLnJzAAAAPIAQAGkAAAAoAAAAKQAAADyAEABpAAAAJQAAAC4AAAA8gBAAaQAAAD4AAAAaAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwDYgBAAZwAAAKgAAAAPAAAA2IAQAGcAAACIAAAAJwAAANiAEABnAAAAsgAAACQAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC40Mi9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAAB/AQAAgAEAAIEBAACCAQAAcIEQAHUAAABmAAAAJQAAAHJldHVybiB0aGlzYHVud3JhcF90aHJvd2AgZmFpbGVkY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRKc1ZhbHVlKCkAWoIQAAgAAABighAAAQAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3RFcnJvci9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5yc0VPRiB3aGlsZSBwYXJzaW5nIGEgbGlzdEVPRiB3aGlsZSBwYXJzaW5nIGFuIG9iamVjdEVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nRU9GIHdoaWxlIHBhcnNpbmcgYSB2YWx1ZWV4cGVjdGVkIGA6YGV4cGVjdGVkIGAsYCBvciBgXWBleHBlY3RlZCBgLGAgb3IgYH1gZXhwZWN0ZWQgaWRlbnRleHBlY3RlZCB2YWx1ZWV4cGVjdGVkIGAiYGludmFsaWQgZXNjYXBlaW52YWxpZCBudW1iZXJudW1iZXIgb3V0IG9mIHJhbmdlaW52YWxpZCB1bmljb2RlIGNvZGUgcG9pbnRjb250cm9sIGNoYXJhY3RlciAoXHUwMDAwLVx1MDAxRikgZm91bmQgd2hpbGUgcGFyc2luZyBhIHN0cmluZ2tleSBtdXN0IGJlIGEgc3RyaW5naW52YWxpZCB2YWx1ZTogZXhwZWN0ZWQga2V5IHRvIGJlIGEgbnVtYmVyIGluIHF1b3Rlc2Zsb2F0IGtleSBtdXN0IGJlIGZpbml0ZSAoZ290IE5hTiBvciArLy1pbmYpbG9uZSBsZWFkaW5nIHN1cnJvZ2F0ZSBpbiBoZXggZXNjYXBldHJhaWxpbmcgY29tbWF0cmFpbGluZyBjaGFyYWN0ZXJzdW5leHBlY3RlZCBlbmQgb2YgaGV4IGVzY2FwZXJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZAAAkQEAAAwAAAAEAAAAkgEAAJMBAACUAQAARXJyb3IoLCBsaW5lOiAsIGNvbHVtbjogKQAAAHyFEAAGAAAAgoUQAAgAAACKhRAACgAAAJSFEAABAEHAi8IAC5sLAQAAAJUBAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AOOCEABLAAAABgoAAA4AAACWAQAADAAAAAQAAACXAQAAmAEAAJQBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjEzNC9zcmMvcmVhZC5ycwAohhAAXwAAAKABAABFAAAAKIYQAF8AAAClAQAAPQAAACiGEABfAAAArQEAABoAAAAohhAAXwAAAPoBAAATAAAAKIYQAF8AAAD/AQAAMwAAACiGEABfAAAAAwIAAD4AAAAohhAAXwAAAAkCAAA6AAAAKIYQAF8AAABoAgAAGQAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAQACAAMABAAFAAYABwAIAAkA//////////////////8KAAsADAANAA4ADwD/////////////////////////////////////////////////////////////////////CgALAAwADQAOAA8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAQACAAMABAAFAAYABwAIAAkAD//////////////////6AAsADAANAA4ADwAP////////////////////////////////////////////////////////////////////+gALAAwADQAOAA8AD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9hbnkgdmFsaWQgSlNPTiB2YWx1ZWEgc3RyaW5nIGtleTAxMjM0NTY3ODlhYmNkZWZ1dXV1dXV1dWJ0bnVmcnV1dXV1dXV1dXV1dXV1dXV1dQAAIgBBlJfCAAsB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bHVlT3B0aW9uIHZhbHVlbmV3dHlwZSBzdHJ1Y3RzZXF1ZW5jZW1hcGVudW11bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnRleHBsaWNpdCBwYW5pYy9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtMS4wLjIxNi9zcmMvZGUvbW9kLnJzAL/BEABcAAAA6wgAABIAAADPwBAAAQAAAM/AEAABAAAAYCBvciBgAADPwBAAAQAAADzCEAAGAAAAz8AQAAEAAABvbmUgb2YgLCAAAAABAAAAAAAAAC4waTMyAAAAqwEAAAwAAAAEAAAArAEAAK0BAACuAQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAJDCEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAACQwhAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3IAAQAAAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZp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OiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAWNYQACAAAAB41hAAEgAAAAAAAAAEAAAABAAAAMYBAAA9PSE9bWF0Y2hlc2Fzc2VydGlvbiBgbGVmdCAgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IAogcmlnaHQ6IAC31hAAEAAAAMfWEAAXAAAA3tYQAAkAAAAgcmlnaHRgIGZhaWxlZDogCiAgbGVmdDogAAAAt9YQABAAAAAA1xAAEAAAABDXEAAJAAAA3tYQAAkAAAA6IAAAAQAAAAAAAAA81xAAAgAAAAAAAAAMAAAABAAAAMcBAADIAQAAyQEAACAgICAgeyAsICB7CiwKfSB9KCgKLApdY29yZS9zcmMvZm10L251bS5ycwAAf9cQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY29yZS9zcmMvZm10L21vZC5yc2ZhbHNldHJ1ZQAArtgQABMAAACWCQAAJgAAAK7YEAATAAAAnwkAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVy7NgQAEwAAABjb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAQNkQACcAAABbAwAABQAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCB42RAAEgAAAIrZEAAiAAAAcmFuZ2UgZW5kIGluZGV4ILzZEAAQAAAAitkQACIAAABzbGljZSBpbmRleCBzdGFydHMg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", "base64"); + +// src/index.ts +init_ridb_wasm(); +var internal; +var StorageType = /* @__PURE__ */ ((StorageType2) => { + StorageType2["InMemory"] = "InMemory"; + StorageType2["IndexDB"] = "IndexDB"; + return StorageType2; +})(StorageType || {}); +var RIDB = class _RIDB { + /** + * Creates an instance of RIDB. + * @param options + */ + constructor(options) { + __publicField(this, "schemas"); + __publicField(this, "migrations"); + __publicField(this, "plugins", []); + __publicField(this, "_db"); + __publicField(this, "dbName"); + const { + dbName, + schemas, + migrations = {}, + plugins = [] + } = options; + this.schemas = schemas; + this.plugins = plugins; + this.migrations = migrations; + this.dbName = dbName; + } + getStorageType(storageType) { + return storageType === "InMemory" /* InMemory */ ? internal.InMemory : internal.IndexDB; + } + /** + * Gets the database instance. Throws an error if the database has not been started. + * @throws Will throw an error if the database is not started. + * @private + */ + get db() { + if (!this._db) { + throw new Error("Start the database first"); + } + return this._db; + } + get started() { + var _a, _b; + return (_b = (_a = this._db) == null ? void 0 : _a.started) != null ? _b : false; + } + /** + * Gets the collections from the database. + * @returns The collections object. + */ + get collections() { + return this.db.collections; + } + /** + * Loads the RIDB Rust module. + * @returns {Promise} A promise that resolves to the RIDB Rust module. + * @private + */ + static load() { + return __async(this, null, function* () { + internal != null ? internal : internal = yield Promise.resolve().then(() => (init_ridb_wasm(), ridb_wasm_exports)).then((module2) => __async(this, null, function* () { + const wasmInstance = module2.initSync(ridb_wasm_bg_default); + yield module2.default(wasmInstance); + return module2; + })); + return internal; + }); + } + /** + * Starts the database. + * @returns {Promise>} A promise that resolves to the database instance. + * @param options + */ + start(options) { + return __async(this, null, function* () { + var _a; + if (!this._db) { + const { storageType, password } = options != null ? options : {}; + const { Database: Database2 } = yield _RIDB.load(); + const StorageClass = typeof storageType === "string" ? this.getStorageType(storageType) : storageType != null ? storageType : void 0; + if (StorageClass && !StorageClass.create) { + throw new Error("Your storage does not have an async create function, please check documentation"); + } + const storage = StorageClass ? yield StorageClass.create(this.dbName, this.schemas, options) : void 0; + (_a = this._db) != null ? _a : this._db = yield Database2.create( + this.dbName, + this.schemas, + this.migrations, + this.plugins, + { + apply: (plugins = []) => plugins.map((Plugin) => new Plugin()) + }, + password, + storage + ); + } else { + yield this.db.start(); + } + return this.db; + }); + } + close() { + return __async(this, null, function* () { + yield this.db.close(); + this._db = void 0; + debugger; + }); + } +}; +var SchemaFieldType = { + string: "string", + number: "number", + boolean: "boolean", + array: "array", + object: "object" +}; diff --git a/packages/ridb/build/cjs/index.d.ts b/packages/ridb/build/cjs/index.d.ts new file mode 100644 index 0000000..f2a8b65 --- /dev/null +++ b/packages/ridb/build/cjs/index.d.ts @@ -0,0 +1,586 @@ +// Generated by dts-bundle-generator v9.5.1 + +/** +* Represents the type of operation to be performed on the collection. +*/ +export enum OpType { + /** + * Create operation. + */ + CREATE = 0, + /** + * Update operation. + */ + UPDATE = 1, + /** + * Delete operation. + */ + DELETE = 2, + /** + * Query Operation. + */ + QUERY = 3, + /** + * Count Operation. + */ + COUNT = 4 +} +export type Operators = { + $gte?: number; + $gt?: number; + $lt?: number; + $lte?: number; +}; +export type InOperator = { + $in?: T[]; +}; +export type OperatorOrType = T extends number ? T | Operators | InOperator : T | InOperator; +export type LogicalOperators = { + $and?: Partial>[]; + $or?: Partial>[]; +}; +export type QueryType = Partial<{ + [K in keyof T["properties"]]: OperatorOrType>; +}> & LogicalOperators | LogicalOperators[]; +export class Query { + constructor(query: QueryType, schema: Schema); + readonly query: QueryType; +} +//test +export type BaseStorageOptions = { + [name: string]: string | boolean | number; +}; +export class BaseStorage extends StorageInternal { + static create(dbName: string, schemas: SchemasCreate, options?: BaseStorageOptions): Promise>; + constructor(dbName: string, schemas: Schemas, options?: BaseStorageOptions); + readonly dbName: string; + readonly schemas: Record>; + readonly options: BaseStorageOptions; + readonly core: CoreStorage; + start(): Promise; + close(): Promise; + count(colectionName: keyof Schemas, query: QueryType): Promise; + findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; + find(collectionName: keyof Schemas, query: QueryType): Promise[]>; + write(op: Operation): Promise>; + getOption(name: string): string | boolean | number | undefined; + getSchema(name: string): Schema; +} +/** + * Represents the type definition for a schema. + */ +export type SchemaType = { + /** + * The version of the schema. + */ + readonly version: number; + /** + * The primary key of the schema. + */ + readonly primaryKey: string; + /** + * The type of the schema. + */ + readonly type: string; + /** + * An optional array of required fields. + */ + readonly required?: string[]; + /** + * An optional array of indexes. + */ + readonly indexes?: string[]; + readonly encrypted?: string[]; + /** + * The properties defined in the schema. + */ + readonly properties: { + [name: string]: Property; + }; +}; +/** + * Represents a schema, including its definition and related methods. + * + * @template T - The schema type. + */ +export class Schema { + /** + * The schema definition. + */ + schema: Schema; + /** + * Creates a new `Schema` instance from the provided definition. + * + * @template TS - The schema type. + * @param {TS} defi, Debugnition - The schema definition. + * @returns {Schema} The created `Schema` instance. + */ + static create(definition: TS): Schema; + /** + * The version of the schema. + */ + readonly version: number; + /** + * The primary key of the schema. + */ + readonly primaryKey: string; + /** + * The type of the schema. + */ + readonly type: string; + /** + * An optional array of indexes. + */ + readonly indexes?: string[]; + readonly required?: string[]; + readonly encrypted?: string[]; + /** + * The properties defined in the schema. + */ + readonly properties: { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: T["properties"][K]; + } & { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: T["properties"][K]; + }; + /** + * Converts the schema to a JSON representation. + * + * @returns {SchemaType} The JSON representation of the schema. + */ + toJSON(): SchemaType; +} +/** + * Represents a database containing collections of documents. + * RIDB extends from this class and is used to expose collections. + * + * So if you specify: + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 0, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * } + * } + * } + * } as const + * } + * ) + * ``` + * + * The collection will be available as `db.collections.demo` and all the methods for the collection (find, count, findById, update, create, delete) will be available. + * + * @template T - A record of schema types. + */ +export class Database { + /** + * Creates a new `Database` instance with the provided schemas and storage module. + * + * @template TS - A record of schema types. + * @param {TS} schemas - The schemas to use for the collections. + * @param migrations + * @param plugins + * @param options + * @param password + * @returns {Promise>} A promise that resolves to the created `Database` instance. + */ + static create(db_name: string, schemas: TS, migrations: MigrationPathsForSchemas | MigrationPathsForSchema, plugins: Array, options: RIDBModule, password?: string, storage?: BaseStorage): Promise>; + /** + * The collections in the database. + * + * This is a read-only property where the key is the name of the collection and the value is a `Collection` instance. + */ + readonly collections: { + [name in keyof T]: Collection>; + }; + readonly started: boolean; + /** + * Starts the database. + * + * @returns {Promise} A promise that resolves when the database is started. + */ + start(): Promise; + /** + * Closes the database. + * + * @returns {Promise} A promise that resolves when the database is closed. + */ + close(): Promise; +} +/** + * Represents a function type for creating storage with the provided schema type records. + * + * @template T - The schema type record. + * @param {T} records - The schema type records. + * @returns {Promise} A promise that resolves to the created internals record. + */ +export type CreateStorage = (records: T) => Promise>; +/** + * Represents a storage module with a method for creating storage. + */ +export type RIDBModule = { + /** + * Plugin constructors array + */ + apply: (plugins: Array) => Array; +}; +/** + * Represents an operation to be performed on a collection. + * + * @template T - The schema type of the collection. + */ +export type Operation = { + /** + * The name of the collection on which the operation will be performed. + */ + collection: string; + /** + * The type of operation to be performed (e.g., CREATE, UPDATE, DELETE). + */ + opType: OpType; + /** + * The data involved in the operation, conforming to the schema type. + */ + data: Doc; + /** + * An array of indexes related to the operation. + */ + indexes: Array; +}; +export type Hook = (schema: Schema, migration: MigrationPathsForSchema, doc: Doc) => Doc; +export type BasePluginOptions = { + docCreateHook?: Hook; + docRecoverHook?: Hook; +}; +export class BasePlugin implements BasePluginOptions { + docCreateHook?: Hook; + docRecoverHook?: Hook; +} +/** + * Represents a property within a schema, including various constraints and nested properties. + */ +export class Property { + /** + * The type of the property. + */ + readonly type: string; + /** + * The version of the property, if applicable. + */ + readonly version?: number; + /** + * The primary key of the property, if applicable. + */ + readonly primaryKey?: string; + /** + * An optional array of nested properties for array-type properties. + */ + readonly items?: Property[]; + /** + * The maximum number of items for array-type properties, if applicable. + */ + readonly maxItems?: number; + /** + * The minimum number of items for array-type properties, if applicable. + */ + readonly minItems?: number; + /** + * The maximum length for string-type properties, if applicable. + */ + readonly maxLength?: number; + /** + * The minimum length for string-type properties, if applicable. + */ + readonly minLength?: number; + /** + * An optional array of required fields for object-type properties. + */ + readonly required?: boolean; + /** + * An optional default value for the property. + */ + readonly default?: any; + /** + * An optional map of nested properties for object-type properties. + */ + readonly properties?: { + [name: string]: Property; + }; +} +export type InternalsRecord = { + [name: string]: BaseStorage; +}; +/** + * ExtractType is a utility type that maps a string representing a basic data type to the actual TypeScript type. + * + * @template T - A string literal type representing the basic data type ('string', 'number', 'boolean', 'object', 'array'). + * + * @example + * type StringType = ExtractType<'string'>; // StringType is string + * type NumberType = ExtractType<'number'>; // NumberType is number + * type BooleanType = ExtractType<'boolean'>; // BooleanType is boolean + * type ObjectType = ExtractType<'object'>; // ObjectType is object + * type ArrayType = ExtractType<'array'>; // ArrayType is Array + */ +export type ExtractType = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "object" ? object : T extends "array" ? Array : never; +/** + * Doc is a utility type that transforms a schema type into a document type where each property is mapped to its extracted type. + * + * @template T - A schema type with a 'properties' field where each property's type is represented as a string. + * + * type Document = Doc; // Document is { name: string; age: number; } + */ +export type Doc = { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: ExtractType; +} & { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: ExtractType; +} & { + __version?: number; +}; +/** + * Collection is a class that represents a collection of documents in a database. + * @template T - A schema type defining the structure of the documents in the collection. + */ +export class Collection { + /** + * Finds all documents in the collection. + * + * @returns A promise that resolves to an array of documents. + */ + find(query: QueryType): Promise[]>; + /** + * count all documents in the collection. + * + * @returns A promise that resolves to an array of documents. + */ + count(query: QueryType): Promise; + /** + * Finds a single document in the collection by its ID. + * + * @param id - The ID of the document to find. + * @returns A promise that resolves to the found document. + */ + findById(id: string): Promise>; + /** + * Updates a document in the collection by its ID. + * + * @param id - The ID of the document to update. + * @param document - A partial document containing the fields to update. + * @returns A promise that resolves when the update is complete. + */ + update(document: Partial>): Promise; + /** + * Creates a new document in the collection. + * + * @param document - The document to create. + * @returns A promise that resolves to the created document. + */ + create(document: Doc): Promise>; + /** + * Deletes a document in the collection by its ID. + * + * @param id - The ID of the document to delete. + * @returns A promise that resolves when the deletion is complete. + */ + delete(id: string): Promise; +} +/** + * Represents a record of schema types, where each key is a string and the value is a `SchemaType`. + */ +export type SchemaTypeRecord = { + [name: string]: SchemaType; +}; +export abstract class StorageInternal { + constructor(name: string, schemas: Schemas); + abstract start(): Promise; + abstract close(): Promise; + abstract count(colectionName: keyof Schemas, query: QueryType): Promise; + abstract findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; + abstract find(collectionName: keyof Schemas, query: QueryType): Promise[]>; + abstract write(op: Operation): Promise>; +} +declare class CoreStorage { + /** + * @param {any} document + * @param {Query} query + * @returns {boolean} + */ + matchesQuery(document: any, query: Query): boolean; +} +export type EnumerateUpTo = Acc["length"] extends N ? Acc[number] : EnumerateUpTo; +export type EnumerateFrom1To = Exclude, 0> | (N extends 0 ? never : N); +export type IsVersionGreaterThan0 = V extends 0 ? false : true; +export type AnyVersionGreaterThan1> = true extends { + [K in keyof T]: IsVersionGreaterThan0; +}[keyof T] ? true : false; +export type MigrationFunction = (doc: Doc) => Doc; +export type MigrationPathsForSchema = T["version"] extends 0 ? {} : { + [K in EnumerateFrom1To]: MigrationFunction; +}; +export type MigrationPathsForSchemas = { + [K in keyof T]: MigrationPathsForSchema; +}; +export type MigrationsParameter = AnyVersionGreaterThan1 extends true ? { + migrations: MigrationPathsForSchemas; +} : { + migrations?: never; +}; +/** + * Represents a RIDB (Rust IndexedDB) instance. + * This is the main class exposed by the RIDB Storage sdk and is used to create a database instance. + * + * ### Usage: + * + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 0, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * } + * } + * } + * } as const + * } + * ) + * ``` + * + * ### Starting the database + * ```typescript + * await db.start({dbName: "demo"}) + * ``` + * + * ### Using with encryption plugin + * You can also optionally specify storageType with a compatible storage of your choice and an optional password to enable encryption plugin + * ```typescript + * await db.start({ + * password: "my-password" + * db + * }) + * ``` + * + * A compatible storage should be a class implementing [StorageInternal ](../docs/namespaces/RIDBTypes/classes/StorageInternal.md) and its methods. + * + * ### Using with migration plugin + * The migration plugin will automatically migrate your documents for you as you upgrade and change your schemas over the time. + * + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 1, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * required:['id', 'age'], + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * }, + * age: { + * type: SchemaFieldType.number, + * } + * } + * } + * } as const, + * migrations: { + * demo: { + * 1: function (doc) { + * return doc + * } + * } + * } + * } + * ) + * + * await db.start({dbName: "demo"}) + * ``` + * + * @class + * @template T - The type of the schema record. + */ +export type StorageClass = { + create: (name: string, schemas: T, options: any) => Promise>; +}; +export declare enum StorageType { + InMemory = "InMemory", + IndexDB = "IndexDB" +} +export type StartOptions = { + storageType?: StorageClass | StorageType; + password?: string; + [name: string]: any; +}; +export declare class RIDB { + private schemas; + private migrations; + private plugins; + private _db; + private dbName; + /** + * Creates an instance of RIDB. + * @param options + */ + constructor(options: { + dbName: string; + schemas: T; + plugins?: Array; + } & MigrationsParameter); + private getStorageType; + /** + * Gets the database instance. Throws an error if the database has not been started. + * @throws Will throw an error if the database is not started. + * @private + */ + private get db(); + get started(): boolean; + /** + * Gets the collections from the database. + * @returns The collections object. + */ + get collections(): { + [name in keyof T]: Collection>; + }; + /** + * Loads the RIDB Rust module. + * @returns {Promise} A promise that resolves to the RIDB Rust module. + * @private + */ + static load(): Promise; + /** + * Starts the database. + * @returns {Promise>} A promise that resolves to the database instance. + * @param options + */ + start(options?: StartOptions): Promise>; + close(): Promise; +} +/** + * An enumeration of schema field types. + */ +export declare const SchemaFieldType: { + string: "string"; + number: "number"; + boolean: "boolean"; + array: "array"; + object: "object"; +}; + +export {}; diff --git a/packages/ridb/build/esm/index.d.ts b/packages/ridb/build/esm/index.d.ts new file mode 100644 index 0000000..f2a8b65 --- /dev/null +++ b/packages/ridb/build/esm/index.d.ts @@ -0,0 +1,586 @@ +// Generated by dts-bundle-generator v9.5.1 + +/** +* Represents the type of operation to be performed on the collection. +*/ +export enum OpType { + /** + * Create operation. + */ + CREATE = 0, + /** + * Update operation. + */ + UPDATE = 1, + /** + * Delete operation. + */ + DELETE = 2, + /** + * Query Operation. + */ + QUERY = 3, + /** + * Count Operation. + */ + COUNT = 4 +} +export type Operators = { + $gte?: number; + $gt?: number; + $lt?: number; + $lte?: number; +}; +export type InOperator = { + $in?: T[]; +}; +export type OperatorOrType = T extends number ? T | Operators | InOperator : T | InOperator; +export type LogicalOperators = { + $and?: Partial>[]; + $or?: Partial>[]; +}; +export type QueryType = Partial<{ + [K in keyof T["properties"]]: OperatorOrType>; +}> & LogicalOperators | LogicalOperators[]; +export class Query { + constructor(query: QueryType, schema: Schema); + readonly query: QueryType; +} +//test +export type BaseStorageOptions = { + [name: string]: string | boolean | number; +}; +export class BaseStorage extends StorageInternal { + static create(dbName: string, schemas: SchemasCreate, options?: BaseStorageOptions): Promise>; + constructor(dbName: string, schemas: Schemas, options?: BaseStorageOptions); + readonly dbName: string; + readonly schemas: Record>; + readonly options: BaseStorageOptions; + readonly core: CoreStorage; + start(): Promise; + close(): Promise; + count(colectionName: keyof Schemas, query: QueryType): Promise; + findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; + find(collectionName: keyof Schemas, query: QueryType): Promise[]>; + write(op: Operation): Promise>; + getOption(name: string): string | boolean | number | undefined; + getSchema(name: string): Schema; +} +/** + * Represents the type definition for a schema. + */ +export type SchemaType = { + /** + * The version of the schema. + */ + readonly version: number; + /** + * The primary key of the schema. + */ + readonly primaryKey: string; + /** + * The type of the schema. + */ + readonly type: string; + /** + * An optional array of required fields. + */ + readonly required?: string[]; + /** + * An optional array of indexes. + */ + readonly indexes?: string[]; + readonly encrypted?: string[]; + /** + * The properties defined in the schema. + */ + readonly properties: { + [name: string]: Property; + }; +}; +/** + * Represents a schema, including its definition and related methods. + * + * @template T - The schema type. + */ +export class Schema { + /** + * The schema definition. + */ + schema: Schema; + /** + * Creates a new `Schema` instance from the provided definition. + * + * @template TS - The schema type. + * @param {TS} defi, Debugnition - The schema definition. + * @returns {Schema} The created `Schema` instance. + */ + static create(definition: TS): Schema; + /** + * The version of the schema. + */ + readonly version: number; + /** + * The primary key of the schema. + */ + readonly primaryKey: string; + /** + * The type of the schema. + */ + readonly type: string; + /** + * An optional array of indexes. + */ + readonly indexes?: string[]; + readonly required?: string[]; + readonly encrypted?: string[]; + /** + * The properties defined in the schema. + */ + readonly properties: { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: T["properties"][K]; + } & { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: T["properties"][K]; + }; + /** + * Converts the schema to a JSON representation. + * + * @returns {SchemaType} The JSON representation of the schema. + */ + toJSON(): SchemaType; +} +/** + * Represents a database containing collections of documents. + * RIDB extends from this class and is used to expose collections. + * + * So if you specify: + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 0, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * } + * } + * } + * } as const + * } + * ) + * ``` + * + * The collection will be available as `db.collections.demo` and all the methods for the collection (find, count, findById, update, create, delete) will be available. + * + * @template T - A record of schema types. + */ +export class Database { + /** + * Creates a new `Database` instance with the provided schemas and storage module. + * + * @template TS - A record of schema types. + * @param {TS} schemas - The schemas to use for the collections. + * @param migrations + * @param plugins + * @param options + * @param password + * @returns {Promise>} A promise that resolves to the created `Database` instance. + */ + static create(db_name: string, schemas: TS, migrations: MigrationPathsForSchemas | MigrationPathsForSchema, plugins: Array, options: RIDBModule, password?: string, storage?: BaseStorage): Promise>; + /** + * The collections in the database. + * + * This is a read-only property where the key is the name of the collection and the value is a `Collection` instance. + */ + readonly collections: { + [name in keyof T]: Collection>; + }; + readonly started: boolean; + /** + * Starts the database. + * + * @returns {Promise} A promise that resolves when the database is started. + */ + start(): Promise; + /** + * Closes the database. + * + * @returns {Promise} A promise that resolves when the database is closed. + */ + close(): Promise; +} +/** + * Represents a function type for creating storage with the provided schema type records. + * + * @template T - The schema type record. + * @param {T} records - The schema type records. + * @returns {Promise} A promise that resolves to the created internals record. + */ +export type CreateStorage = (records: T) => Promise>; +/** + * Represents a storage module with a method for creating storage. + */ +export type RIDBModule = { + /** + * Plugin constructors array + */ + apply: (plugins: Array) => Array; +}; +/** + * Represents an operation to be performed on a collection. + * + * @template T - The schema type of the collection. + */ +export type Operation = { + /** + * The name of the collection on which the operation will be performed. + */ + collection: string; + /** + * The type of operation to be performed (e.g., CREATE, UPDATE, DELETE). + */ + opType: OpType; + /** + * The data involved in the operation, conforming to the schema type. + */ + data: Doc; + /** + * An array of indexes related to the operation. + */ + indexes: Array; +}; +export type Hook = (schema: Schema, migration: MigrationPathsForSchema, doc: Doc) => Doc; +export type BasePluginOptions = { + docCreateHook?: Hook; + docRecoverHook?: Hook; +}; +export class BasePlugin implements BasePluginOptions { + docCreateHook?: Hook; + docRecoverHook?: Hook; +} +/** + * Represents a property within a schema, including various constraints and nested properties. + */ +export class Property { + /** + * The type of the property. + */ + readonly type: string; + /** + * The version of the property, if applicable. + */ + readonly version?: number; + /** + * The primary key of the property, if applicable. + */ + readonly primaryKey?: string; + /** + * An optional array of nested properties for array-type properties. + */ + readonly items?: Property[]; + /** + * The maximum number of items for array-type properties, if applicable. + */ + readonly maxItems?: number; + /** + * The minimum number of items for array-type properties, if applicable. + */ + readonly minItems?: number; + /** + * The maximum length for string-type properties, if applicable. + */ + readonly maxLength?: number; + /** + * The minimum length for string-type properties, if applicable. + */ + readonly minLength?: number; + /** + * An optional array of required fields for object-type properties. + */ + readonly required?: boolean; + /** + * An optional default value for the property. + */ + readonly default?: any; + /** + * An optional map of nested properties for object-type properties. + */ + readonly properties?: { + [name: string]: Property; + }; +} +export type InternalsRecord = { + [name: string]: BaseStorage; +}; +/** + * ExtractType is a utility type that maps a string representing a basic data type to the actual TypeScript type. + * + * @template T - A string literal type representing the basic data type ('string', 'number', 'boolean', 'object', 'array'). + * + * @example + * type StringType = ExtractType<'string'>; // StringType is string + * type NumberType = ExtractType<'number'>; // NumberType is number + * type BooleanType = ExtractType<'boolean'>; // BooleanType is boolean + * type ObjectType = ExtractType<'object'>; // ObjectType is object + * type ArrayType = ExtractType<'array'>; // ArrayType is Array + */ +export type ExtractType = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "object" ? object : T extends "array" ? Array : never; +/** + * Doc is a utility type that transforms a schema type into a document type where each property is mapped to its extracted type. + * + * @template T - A schema type with a 'properties' field where each property's type is represented as a string. + * + * type Document = Doc; // Document is { name: string; age: number; } + */ +export type Doc = { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: ExtractType; +} & { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: ExtractType; +} & { + __version?: number; +}; +/** + * Collection is a class that represents a collection of documents in a database. + * @template T - A schema type defining the structure of the documents in the collection. + */ +export class Collection { + /** + * Finds all documents in the collection. + * + * @returns A promise that resolves to an array of documents. + */ + find(query: QueryType): Promise[]>; + /** + * count all documents in the collection. + * + * @returns A promise that resolves to an array of documents. + */ + count(query: QueryType): Promise; + /** + * Finds a single document in the collection by its ID. + * + * @param id - The ID of the document to find. + * @returns A promise that resolves to the found document. + */ + findById(id: string): Promise>; + /** + * Updates a document in the collection by its ID. + * + * @param id - The ID of the document to update. + * @param document - A partial document containing the fields to update. + * @returns A promise that resolves when the update is complete. + */ + update(document: Partial>): Promise; + /** + * Creates a new document in the collection. + * + * @param document - The document to create. + * @returns A promise that resolves to the created document. + */ + create(document: Doc): Promise>; + /** + * Deletes a document in the collection by its ID. + * + * @param id - The ID of the document to delete. + * @returns A promise that resolves when the deletion is complete. + */ + delete(id: string): Promise; +} +/** + * Represents a record of schema types, where each key is a string and the value is a `SchemaType`. + */ +export type SchemaTypeRecord = { + [name: string]: SchemaType; +}; +export abstract class StorageInternal { + constructor(name: string, schemas: Schemas); + abstract start(): Promise; + abstract close(): Promise; + abstract count(colectionName: keyof Schemas, query: QueryType): Promise; + abstract findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; + abstract find(collectionName: keyof Schemas, query: QueryType): Promise[]>; + abstract write(op: Operation): Promise>; +} +declare class CoreStorage { + /** + * @param {any} document + * @param {Query} query + * @returns {boolean} + */ + matchesQuery(document: any, query: Query): boolean; +} +export type EnumerateUpTo = Acc["length"] extends N ? Acc[number] : EnumerateUpTo; +export type EnumerateFrom1To = Exclude, 0> | (N extends 0 ? never : N); +export type IsVersionGreaterThan0 = V extends 0 ? false : true; +export type AnyVersionGreaterThan1> = true extends { + [K in keyof T]: IsVersionGreaterThan0; +}[keyof T] ? true : false; +export type MigrationFunction = (doc: Doc) => Doc; +export type MigrationPathsForSchema = T["version"] extends 0 ? {} : { + [K in EnumerateFrom1To]: MigrationFunction; +}; +export type MigrationPathsForSchemas = { + [K in keyof T]: MigrationPathsForSchema; +}; +export type MigrationsParameter = AnyVersionGreaterThan1 extends true ? { + migrations: MigrationPathsForSchemas; +} : { + migrations?: never; +}; +/** + * Represents a RIDB (Rust IndexedDB) instance. + * This is the main class exposed by the RIDB Storage sdk and is used to create a database instance. + * + * ### Usage: + * + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 0, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * } + * } + * } + * } as const + * } + * ) + * ``` + * + * ### Starting the database + * ```typescript + * await db.start({dbName: "demo"}) + * ``` + * + * ### Using with encryption plugin + * You can also optionally specify storageType with a compatible storage of your choice and an optional password to enable encryption plugin + * ```typescript + * await db.start({ + * password: "my-password" + * db + * }) + * ``` + * + * A compatible storage should be a class implementing [StorageInternal ](../docs/namespaces/RIDBTypes/classes/StorageInternal.md) and its methods. + * + * ### Using with migration plugin + * The migration plugin will automatically migrate your documents for you as you upgrade and change your schemas over the time. + * + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 1, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * required:['id', 'age'], + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * }, + * age: { + * type: SchemaFieldType.number, + * } + * } + * } + * } as const, + * migrations: { + * demo: { + * 1: function (doc) { + * return doc + * } + * } + * } + * } + * ) + * + * await db.start({dbName: "demo"}) + * ``` + * + * @class + * @template T - The type of the schema record. + */ +export type StorageClass = { + create: (name: string, schemas: T, options: any) => Promise>; +}; +export declare enum StorageType { + InMemory = "InMemory", + IndexDB = "IndexDB" +} +export type StartOptions = { + storageType?: StorageClass | StorageType; + password?: string; + [name: string]: any; +}; +export declare class RIDB { + private schemas; + private migrations; + private plugins; + private _db; + private dbName; + /** + * Creates an instance of RIDB. + * @param options + */ + constructor(options: { + dbName: string; + schemas: T; + plugins?: Array; + } & MigrationsParameter); + private getStorageType; + /** + * Gets the database instance. Throws an error if the database has not been started. + * @throws Will throw an error if the database is not started. + * @private + */ + private get db(); + get started(): boolean; + /** + * Gets the collections from the database. + * @returns The collections object. + */ + get collections(): { + [name in keyof T]: Collection>; + }; + /** + * Loads the RIDB Rust module. + * @returns {Promise} A promise that resolves to the RIDB Rust module. + * @private + */ + static load(): Promise; + /** + * Starts the database. + * @returns {Promise>} A promise that resolves to the database instance. + * @param options + */ + start(options?: StartOptions): Promise>; + close(): Promise; +} +/** + * An enumeration of schema field types. + */ +export declare const SchemaFieldType: { + string: "string"; + number: "number"; + boolean: "boolean"; + array: "array"; + object: "object"; +}; + +export {}; diff --git a/packages/ridb/build/esm/index.mjs b/packages/ridb/build/esm/index.mjs new file mode 100644 index 0000000..807d990 --- /dev/null +++ b/packages/ridb/build/esm/index.mjs @@ -0,0 +1,2684 @@ + +if (typeof Buffer === 'undefined') { + global.Buffer = require('buffer').Buffer; +} +var __defProp = Object.defineProperty; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; + +// ../../../ridb-wasm/pkg/ridb_wasm.js +var ridb_wasm_exports = {}; +__export(ridb_wasm_exports, { + BasePlugin: () => BasePlugin, + BaseStorage: () => BaseStorage, + Collection: () => Collection, + CoreStorage: () => CoreStorage, + Database: () => Database, + InMemory: () => InMemory, + IndexDB: () => IndexDB, + OpType: () => OpType, + Operation: () => Operation, + Property: () => Property, + Query: () => Query, + Schema: () => Schema, + WasmBindgenTestContext: () => WasmBindgenTestContext, + __wbgtest_console_debug: () => __wbgtest_console_debug, + __wbgtest_console_error: () => __wbgtest_console_error, + __wbgtest_console_info: () => __wbgtest_console_info, + __wbgtest_console_log: () => __wbgtest_console_log, + __wbgtest_console_warn: () => __wbgtest_console_warn, + default: () => ridb_wasm_default, + initSync: () => initSync, + is_debug_mode: () => is_debug_mode, + main_js: () => main_js +}); +function getObject(idx) { + return heap[idx]; +} +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + heap[idx] = obj; + return idx; +} +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === void 0) { + const buf = cachedTextEncoder.encode(arg); + const ptr2 = malloc(buf.length, 1) >>> 0; + getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr2; + } + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + const mem = getUint8Memory0(); + let offset = 0; + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 127) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + WASM_VECTOR_LEN = offset; + return ptr; +} +function isLikeNone(x) { + return x === void 0 || x === null; +} +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} +function getFloat64Memory0() { + if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) { + cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); + } + return cachedFloat64Memory0; +} +function getBigInt64Memory0() { + if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) { + cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); + } + return cachedBigInt64Memory0; +} +function debugString(val) { + const type = typeof val; + if (type == "number" || type == "boolean" || val == null) { + return `${val}`; + } + if (type == "string") { + return `"${val}"`; + } + if (type == "symbol") { + const description = val.description; + if (description == null) { + return "Symbol"; + } else { + return `Symbol(${description})`; + } + } + if (type == "function") { + const name = val.name; + if (typeof name == "string" && name.length > 0) { + return `Function(${name})`; + } else { + return "Function"; + } + } + if (Array.isArray(val)) { + const length = val.length; + let debug = "["; + if (length > 0) { + debug += debugString(val[0]); + } + for (let i = 1; i < length; i++) { + debug += ", " + debugString(val[i]); + } + debug += "]"; + return debug; + } + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + return toString.call(val); + } + if (className == "Object") { + try { + return "Object(" + JSON.stringify(val) + ")"; + } catch (_) { + return "Object"; + } + } + if (val instanceof Error) { + return `${val.name}: ${val.message} +${val.stack}`; + } + return className; +} +function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); + CLOSURE_DTORS.unregister(state); + } else { + state.a = a; + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; +} +function __wbg_adapter_56(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h30fcf24f930ac73b(arg0, arg1, addHeapObject(arg2)); +} +function __wbg_adapter_59(arg0, arg1, arg2) { + const ret = wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0343af3ff210bc6c(arg0, arg1, addHeapObject(arg2)); + return takeObject(ret); +} +function makeClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + state.cnt++; + try { + return f(state.a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); + state.a = 0; + CLOSURE_DTORS.unregister(state); + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; +} +function __wbg_adapter_62(arg0, arg1, arg2, arg3, arg4) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm._dyn_core__ops__function__Fn__A_B_C___Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h083305484f53f562(retptr, arg0, arg1, addHeapObject(arg2), addHeapObject(arg3), addHeapObject(arg4)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} +function __wbg_adapter_67(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd0b7b7031e33a384(arg0, arg1, addHeapObject(arg2)); +} +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} +function getUint32Memory0() { + if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32Memory0; +} +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getUint32Memory0(); + const slice = mem.subarray(ptr / 4, ptr / 4 + len); + const result = []; + for (let i = 0; i < slice.length; i++) { + result.push(takeObject(slice[i])); + } + return result; +} +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + const mem = getUint32Memory0(); + for (let i = 0; i < array.length; i++) { + mem[ptr / 4 + i] = addHeapObject(array[i]); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} +function main_js() { + wasm.main_js(); +} +function is_debug_mode() { + const ret = wasm.is_debug_mode(); + return ret !== 0; +} +function addBorrowedObject(obj) { + if (stack_pointer == 1) throw new Error("out of js stack"); + heap[--stack_pointer] = obj; + return stack_pointer; +} +function __wbgtest_console_log(args) { + try { + wasm.__wbgtest_console_log(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_debug(args) { + try { + wasm.__wbgtest_console_debug(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_info(args) { + try { + wasm.__wbgtest_console_info(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_warn(args) { + try { + wasm.__wbgtest_console_warn(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbgtest_console_error(args) { + try { + wasm.__wbgtest_console_error(addBorrowedObject(args)); + } finally { + heap[stack_pointer++] = void 0; + } +} +function __wbg_adapter_253(arg0, arg1) { + wasm.wasm_bindgen__convert__closures__invoke0_mut__h831654003a8114c2(arg0, arg1); +} +function __wbg_adapter_296(arg0, arg1, arg2, arg3, arg4) { + wasm.wasm_bindgen__convert__closures__invoke3_mut__h79ad1c6e6a197be2(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); +} +function __wbg_adapter_347(arg0, arg1, arg2, arg3) { + wasm.wasm_bindgen__convert__closures__invoke2_mut__h33b30c564f43a8a5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); +} +async function __wbg_load(module2, imports) { + if (typeof Response === "function" && module2 instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return await WebAssembly.instantiateStreaming(module2, imports); + } catch (e) { + if (module2.headers.get("Content-Type") != "application/wasm") { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } else { + throw e; + } + } + } + const bytes = await module2.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module2, imports); + if (instance instanceof WebAssembly.Instance) { + return { instance, module: module2 }; + } else { + return instance; + } + } +} +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); + }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === void 0; + return ret; + }; + imports.wbg.__wbindgen_is_null = function(arg0) { + const ret = getObject(arg0) === null; + return ret; + }; + imports.wbg.__wbg_inmemory_new = function(arg0) { + const ret = InMemory.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_findDocumentById_3c953e7cb816631f = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).findDocumentById(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_write_5ed217718c943bb6 = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).write(Operation.__wrap(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_indexdb_new = function(arg0) { + const ret = IndexDB.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_close_9079d609f51f315b = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).close(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof obj === "string" ? obj : void 0; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof obj === "number" ? obj : void 0; + getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbg_count_56b737f3e1f9808b = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).count(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_start_8e90ba4b9a66ad6d = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).start(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_apply_5cc20a9c59aa42cc = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg1).apply(takeObject(arg2)); + const ptr1 = passArrayJsValueToWasm0(ret, wasm.__wbindgen_malloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }, arguments); + }; + imports.wbg.__wbg_database_new = function(arg0) { + const ret = Database.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_find_4fb73c61983f3303 = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).find(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_collection_new = function(arg0) { + const ret = Collection.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_function = function(arg0) { + const ret = typeof getObject(arg0) === "function"; + return ret; + }; + imports.wbg.__wbindgen_is_string = function(arg0) { + const ret = typeof getObject(arg0) === "string"; + return ret; + }; + imports.wbg.__wbindgen_is_array = function(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; + }; + imports.wbg.__wbindgen_is_object = function(arg0) { + const val = getObject(arg0); + const ret = typeof val === "object" && val !== null; + return ret; + }; + imports.wbg.__wbindgen_is_falsy = function(arg0) { + const ret = !getObject(arg0); + return ret; + }; + imports.wbg.__wbindgen_is_bigint = function(arg0) { + const ret = typeof getObject(arg0) === "bigint"; + return ret; + }; + imports.wbg.__wbindgen_error_new = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_boolean_get = function(arg0) { + const v = getObject(arg0); + const ret = typeof v === "boolean" ? v ? 1 : 0 : 2; + return ret; + }; + imports.wbg.__wbindgen_in = function(arg0, arg1) { + const ret = getObject(arg0) in getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_bigint_from_i64 = function(arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_bigint_from_u64 = function(arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + return ret; + }; + imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); + }; + imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); + }; + imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); + }; + imports.wbg.__wbg_require_cca90b1a94a0255b = function() { + return handleError(function() { + const ret = module.require; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { + return handleError(function(arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { + return handleError(function(arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_instanceof_Window_f401953a2cf86220 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Window; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_localStorage_e381d34d0c40c761 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).localStorage; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_indexedDB_7c51d9056667f4e0 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).indexedDB; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_open_f0d7259fd7e689ce = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), arg3 >>> 0); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_getItem_164e8e5265095b87 = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }, arguments); + }; + imports.wbg.__wbg_error_8e3928cfb8a43e2b = function(arg0) { + console.error(getObject(arg0)); + }; + imports.wbg.__wbg_log_5bb5f88f245d7762 = function(arg0) { + console.log(getObject(arg0)); + }; + imports.wbg.__wbg_length_9ae5daf9a690cba9 = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_contains_c65b44400b549286 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).contains(getStringFromWasm0(arg1, arg2)); + return ret; + }; + imports.wbg.__wbg_get_910bbb94abdcf488 = function(arg0, arg1, arg2) { + const ret = getObject(arg1)[arg2 >>> 0]; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_target_2fc177e386c8b7b0 = function(arg0) { + const ret = getObject(arg0).target; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_instanceof_IdbOpenDbRequest_3f4a166bc0340578 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof IDBOpenDBRequest; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_setonupgradeneeded_ad7645373c7d5e1b = function(arg0, arg1) { + getObject(arg0).onupgradeneeded = getObject(arg1); + }; + imports.wbg.__wbg_instanceof_IdbRequest_93249da04f5370b6 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof IDBRequest; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_result_6cedf5f78600a79c = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).result; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_error_685b20024dc2d6ca = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).error; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_setonsuccess_632ce0a1460455c2 = function(arg0, arg1) { + getObject(arg0).onsuccess = getObject(arg1); + }; + imports.wbg.__wbg_setonerror_8479b33e7568a904 = function(arg0, arg1) { + getObject(arg0).onerror = getObject(arg1); + }; + imports.wbg.__wbg_setoncomplete_d8e4236665cbf1e2 = function(arg0, arg1) { + getObject(arg0).oncomplete = getObject(arg1); + }; + imports.wbg.__wbg_setonerror_da071ec94e148397 = function(arg0, arg1) { + getObject(arg0).onerror = getObject(arg1); + }; + imports.wbg.__wbg_objectStore_da468793bd9df17b = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).objectStore(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_instanceof_IdbDatabase_db671cf2454a9542 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof IDBDatabase; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_objectStoreNames_588b5924274239fd = function(arg0) { + const ret = getObject(arg0).objectStoreNames; + return addHeapObject(ret); + }; + imports.wbg.__wbg_close_6bfe4ca2fe67cb67 = function(arg0) { + getObject(arg0).close(); + }; + imports.wbg.__wbg_createObjectStore_882f2f6b1b1ef040 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).createObjectStore(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_transaction_c32bb10c9c692f4b = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_transaction_1e282a79e9bb7387 = function() { + return handleError(function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_delete_f60bba7d0ae59a4f = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).delete(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_get_5361b64cac0d0826 = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).get(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_getAll_2782e438df699384 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).getAll(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_put_22792e17580ca18b = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).put(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) { + const ret = getObject(arg0) == getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_as_number = function(arg0) { + const ret = +getObject(arg0); + return ret; + }; + imports.wbg.__wbg_String_389b54bd9d25375f = function(arg0, arg1) { + const ret = String(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_getwithrefkey_4a92a5eca60879b9 = function(arg0, arg1) { + const ret = getObject(arg0)[getObject(arg1)]; + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_9182712abebf82ef = function(arg0, arg1, arg2) { + getObject(arg0)[takeObject(arg1)] = takeObject(arg2); + }; + imports.wbg.__wbg_log_28eee4e6432efd24 = function(arg0, arg1) { + console.log(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbg_String_55b8bdc4bc243677 = function(arg0, arg1) { + const ret = String(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_getElementById_8458f2a6c28467dc = function(arg0, arg1, arg2) { + const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_settextcontent_fc3ff485b96fcb1d = function(arg0, arg1, arg2) { + getObject(arg0).textContent = getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_wbgtestinvoke_8c20f4132af2bded = function() { + return handleError(function(arg0, arg1) { + try { + var state0 = { a: arg0, b: arg1 }; + var cb0 = () => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_253(a, state0.b); + } finally { + state0.a = a; + } + }; + __wbg_test_invoke(cb0); + } finally { + state0.a = state0.b = 0; + } + }, arguments); + }; + imports.wbg.__wbg_wbgtestoutputwriteln_4db3bd64914ec955 = function(arg0) { + __wbg_test_output_writeln(takeObject(arg0)); + }; + imports.wbg.__wbg_stack_436273c21658169b = function(arg0) { + const ret = getObject(arg0).stack; + return addHeapObject(ret); + }; + imports.wbg.__wbg_static_accessor_document_d4b6ae7f5578480f = function() { + const ret = document; + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_17c77e9f5bfe6714 = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_self_55106357ec10ecd4 = function(arg0) { + const ret = getObject(arg0).self; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_constructor_fd0d22d60b7dfd72 = function(arg0) { + const ret = getObject(arg0).constructor; + return addHeapObject(ret); + }; + imports.wbg.__wbg_name_7f439d24ff7ba1d3 = function(arg0, arg1) { + const ret = getObject(arg1).name; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_textcontent_67e4e811cbdf00fc = function(arg0, arg1) { + const ret = getObject(arg1).textContent; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_stack_44743fb7d71926a0 = function(arg0) { + const ret = getObject(arg0).stack; + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_abda76e883ba8a5f = function() { + const ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }; + imports.wbg.__wbg_queueMicrotask_3cbae2ec6b6cd3d6 = function(arg0) { + const ret = getObject(arg0).queueMicrotask; + return addHeapObject(ret); + }; + imports.wbg.__wbg_queueMicrotask_481971b0d87f3dd4 = function(arg0) { + queueMicrotask(getObject(arg0)); + }; + imports.wbg.__wbg_get_bd8e338fbd5f5cc8 = function(arg0, arg1) { + const ret = getObject(arg0)[arg1 >>> 0]; + return addHeapObject(ret); + }; + imports.wbg.__wbg_length_cd7af8117672b8b8 = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_new_16b304a2cfa7ff4a = function() { + const ret = new Array(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_newnoargs_e258087cd0daa0ea = function(arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_d9bc3a0147634640 = function() { + const ret = /* @__PURE__ */ new Map(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_next_40fc327bfc8770e6 = function(arg0) { + const ret = getObject(arg0).next; + return addHeapObject(ret); + }; + imports.wbg.__wbg_next_196c84450b364254 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).next(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_done_298b57d23c0fc80c = function(arg0) { + const ret = getObject(arg0).done; + return ret; + }; + imports.wbg.__wbg_value_d93c65011f51a456 = function(arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); + }; + imports.wbg.__wbg_iterator_2cee6dadfd956dfa = function() { + const ret = Symbol.iterator; + return addHeapObject(ret); + }; + imports.wbg.__wbg_get_e3c254076557e348 = function() { + return handleError(function(arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_call_27c0f87801dedf93 = function() { + return handleError(function(arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_new_72fb9a18b5ae2624 = function() { + const ret = new Object(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_self_ce0dbfc45cf2f5be = function() { + return handleError(function() { + const ret = self.self; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_window_c6fb939a7f436783 = function() { + return handleError(function() { + const ret = window.window; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_globalThis_d1e6af4856ba331b = function() { + return handleError(function() { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_global_207b558942527489 = function() { + return handleError(function() { + const ret = global.global; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_set_d4638f722068f043 = function(arg0, arg1, arg2) { + getObject(arg0)[arg1 >>> 0] = takeObject(arg2); + }; + imports.wbg.__wbg_from_89e3fc3ba5e6fb48 = function(arg0) { + const ret = Array.from(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_forEach_2be8de7347d63332 = function(arg0, arg1, arg2) { + try { + var state0 = { a: arg1, b: arg2 }; + var cb0 = (arg02, arg12, arg22) => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_296(a, state0.b, arg02, arg12, arg22); + } finally { + state0.a = a; + } + }; + getObject(arg0).forEach(cb0); + } finally { + state0.a = state0.b = 0; + } + }; + imports.wbg.__wbg_isArray_2ab64d95e09ea0ae = function(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; + }; + imports.wbg.__wbg_of_4a2b313a453ec059 = function(arg0) { + const ret = Array.of(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_push_a5b05aedc7234f9f = function(arg0, arg1) { + const ret = getObject(arg0).push(getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_instanceof_ArrayBuffer_836825be07d4c9d2 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_new_28c511d9baebfa89 = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_message_5bf28016c2b49cfb = function(arg0) { + const ret = getObject(arg0).message; + return addHeapObject(ret); + }; + imports.wbg.__wbg_name_e7429f0dda6079e2 = function(arg0) { + const ret = getObject(arg0).name; + return addHeapObject(ret); + }; + imports.wbg.__wbg_call_b3ca7c6051f9bec1 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_call_938992c832f74314 = function() { + return handleError(function(arg0, arg1, arg2, arg3, arg4) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3), getObject(arg4)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_set_8417257aaedc936b = function(arg0, arg1, arg2) { + const ret = getObject(arg0).set(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_isSafeInteger_f7b04ef02296c4d2 = function(arg0) { + const ret = Number.isSafeInteger(getObject(arg0)); + return ret; + }; + imports.wbg.__wbg_entries_95cc2c823b285a09 = function(arg0) { + const ret = Object.entries(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_is_010fdc0f4ab96916 = function(arg0, arg1) { + const ret = Object.is(getObject(arg0), getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_keys_91e412b4b222659f = function(arg0) { + const ret = Object.keys(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_81740750da40724f = function(arg0, arg1) { + try { + var state0 = { a: arg0, b: arg1 }; + var cb0 = (arg02, arg12) => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_347(a, state0.b, arg02, arg12); + } finally { + state0.a = a; + } + }; + const ret = new Promise(cb0); + return addHeapObject(ret); + } finally { + state0.a = state0.b = 0; + } + }; + imports.wbg.__wbg_resolve_b0083a7967828ec8 = function(arg0) { + const ret = Promise.resolve(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_0c86a60e8fcfe9f6 = function(arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_a73caa9a87991566 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_length_c20a40f15020d68a = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_newwithlength_e9b4878cebadb3d3 = function(arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_subarray_a1f73cd4b5b42fe1 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_apply_0a5aa603881e6d79 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = Reflect.apply(getObject(arg0), getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_deleteProperty_13e721a56f19e842 = function() { + return handleError(function(arg0, arg1) { + const ret = Reflect.deleteProperty(getObject(arg0), getObject(arg1)); + return ret; + }, arguments); + }; + imports.wbg.__wbg_set_1f9b04f170055d33 = function() { + return handleError(function(arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + return ret; + }, arguments); + }; + imports.wbg.__wbg_parse_66d1801634e099ac = function() { + return handleError(function(arg0, arg1) { + const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_stringify_8887fe74e1c50d81 = function() { + return handleError(function(arg0) { + const ret = JSON.stringify(getObject(arg0)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { + const v = getObject(arg1); + const ret = typeof v === "bigint" ? v : void 0; + getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper537 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper539 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_59); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper541 = function(arg0, arg1, arg2) { + const ret = makeClosure(arg0, arg1, 220, __wbg_adapter_62); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper543 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper1352 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 373, __wbg_adapter_67); + return addHeapObject(ret); + }; + return imports; +} +function __wbg_init_memory(imports, maybe_memory) { +} +function __wbg_finalize_init(instance, module2) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module2; + cachedBigInt64Memory0 = null; + cachedFloat64Memory0 = null; + cachedInt32Memory0 = null; + cachedUint32Memory0 = null; + cachedUint8Memory0 = null; + wasm.__wbindgen_start(); + return wasm; +} +function initSync(module2) { + if (wasm !== void 0) return wasm; + const imports = __wbg_get_imports(); + __wbg_init_memory(imports); + if (!(module2 instanceof WebAssembly.Module)) { + module2 = new WebAssembly.Module(module2); + } + const instance = new WebAssembly.Instance(module2, imports); + return __wbg_finalize_init(instance, module2); +} +async function __wbg_init(input) { + if (wasm !== void 0) return wasm; + const imports = __wbg_get_imports(); + if (typeof input === "string" || typeof Request === "function" && input instanceof Request || typeof URL === "function" && input instanceof URL) { + input = fetch(input); + } + __wbg_init_memory(imports); + const { instance, module: module2 } = await __wbg_load(await input, imports); + return __wbg_finalize_init(instance, module2); +} +var wasm, heap, heap_next, cachedTextDecoder, cachedUint8Memory0, WASM_VECTOR_LEN, cachedTextEncoder, encodeString, cachedInt32Memory0, cachedFloat64Memory0, cachedBigInt64Memory0, CLOSURE_DTORS, cachedUint32Memory0, stack_pointer, OpType, BasePluginFinalization, BasePlugin, BaseStorageFinalization, BaseStorage, CollectionFinalization, Collection, CoreStorageFinalization, CoreStorage, DatabaseFinalization, Database, InMemoryFinalization, InMemory, IndexDBFinalization, IndexDB, OperationFinalization, Operation, PropertyFinalization, Property, QueryFinalization, Query, SchemaFinalization, Schema, WasmBindgenTestContextFinalization, WasmBindgenTestContext, ridb_wasm_default; +var init_ridb_wasm = __esm({ + "../../../ridb-wasm/pkg/ridb_wasm.js"() { + heap = new Array(128).fill(void 0); + heap.push(void 0, null, true, false); + heap_next = heap.length; + cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => { + throw Error("TextDecoder not available"); + } }; + if (typeof TextDecoder !== "undefined") { + cachedTextDecoder.decode(); + } + cachedUint8Memory0 = null; + WASM_VECTOR_LEN = 0; + cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => { + throw Error("TextEncoder not available"); + } }; + encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) { + return cachedTextEncoder.encodeInto(arg, view); + } : function(arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; + cachedInt32Memory0 = null; + cachedFloat64Memory0 = null; + cachedBigInt64Memory0 = null; + CLOSURE_DTORS = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((state) => { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); + }); + cachedUint32Memory0 = null; + stack_pointer = 128; + OpType = Object.freeze({ + /** + * Create operation. + */ + CREATE: 0, + "0": "CREATE", + /** + * Update operation. + */ + UPDATE: 1, + "1": "UPDATE", + /** + * Delete operation. + */ + DELETE: 2, + "2": "DELETE", + /** + * Query Operation. + */ + QUERY: 3, + "3": "QUERY", + /** + * Count Operation. + */ + COUNT: 4, + "4": "COUNT" + }); + BasePluginFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_baseplugin_free(ptr >>> 0)); + BasePlugin = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BasePluginFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_baseplugin_free(ptr); + } + /** + * @param {string} name + */ + constructor(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.baseplugin_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {any} + */ + get name() { + const ret = wasm.baseplugin_name(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {any} + */ + get docCreateHook() { + const ret = wasm.baseplugin_get_doc_create_hook(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {any} + */ + get docRecoverHook() { + const ret = wasm.baseplugin_get_doc_recover_hook(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @param {any} hook + */ + set docCreateHook(hook) { + wasm.baseplugin_set_doc_create_hook(this.__wbg_ptr, addHeapObject(hook)); + } + /** + * @param {any} hook + */ + set docRecoverHook(hook) { + wasm.baseplugin_set_doc_recover_hook(this.__wbg_ptr, addHeapObject(hook)); + } + }; + BaseStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_basestorage_free(ptr >>> 0)); + BaseStorage = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BaseStorageFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_basestorage_free(ptr); + } + /** + * Creates a new `BaseStorage` instance with the provided name and schema type. + * + * # Arguments + * + * * `name` - The name of the storage. + * * `schema_type` - The schema type in `JsValue` format. + * + * # Returns + * + * * `Result` - A result containing the new `BaseStorage` instance or an error. + * @param {string} name + * @param {object} schemas_js + * @param {object | undefined} [options] + */ + constructor(name, schemas_js, options) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.basestorage_new(retptr, ptr0, len0, addHeapObject(schemas_js), isLikeNone(options) ? 0 : addHeapObject(options)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {string} name + * @returns {any} + */ + getOption(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.basestorage_getOption(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {string} name + * @returns {Schema} + */ + getSchema(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.basestorage_getSchema(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return Schema.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {CoreStorage} + */ + get core() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.basestorage_core(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CoreStorage.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + CollectionFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_collection_free(ptr >>> 0)); + Collection = class _Collection { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Collection.prototype); + obj.__wbg_ptr = ptr; + CollectionFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CollectionFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_collection_free(ptr); + } + /** + * @returns {string} + */ + get name() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.collection_name(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * @returns {Schema} + */ + get schema() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.collection_schema(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return Schema.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Finds and returns all documents in the collection. + * + * This function is asynchronous and returns a `Schema` representing + * the documents found in the collection. + * @param {any} query + * @returns {Promise} + */ + find(query) { + const ret = wasm.collection_find(this.__wbg_ptr, addHeapObject(query)); + return takeObject(ret); + } + /** + * counts and returns all documents in the collection. + * + * This function is asynchronous and returns a `Schema` representing + * the documents found in the collection. + * @param {any} query + * @returns {Promise} + */ + count(query) { + const ret = wasm.collection_count(this.__wbg_ptr, addHeapObject(query)); + return takeObject(ret); + } + /** + * Finds and returns a single document in the collection by its ID. + * + * This function is asynchronous. + * @param {any} primary_key + * @returns {Promise} + */ + findById(primary_key) { + const ret = wasm.collection_findById(this.__wbg_ptr, addHeapObject(primary_key)); + return takeObject(ret); + } + /** + * Updates a document in the collection with the given data. + * + * This function is asynchronous and returns a `Result` indicating success or failure. + * + * # Arguments + * + * * `document` - A `JsValue` representing the partial document to update. + * @param {any} document + * @returns {Promise} + */ + update(document2) { + const ret = wasm.collection_update(this.__wbg_ptr, addHeapObject(document2)); + return takeObject(ret); + } + /** + * Creates a new document in the collection. + * + * This function is asynchronous and returns a `Result` indicating success or failure. + * + * # Arguments + * + * * `document` - A `JsValue` representing the document to create. + * @param {any} document + * @returns {Promise} + */ + create(document2) { + const ret = wasm.collection_create(this.__wbg_ptr, addHeapObject(document2)); + return takeObject(ret); + } + /** + * Deletes a document from the collection by its ID. + * + * This function is asynchronous. + * @param {any} primary_key + * @returns {Promise} + */ + delete(primary_key) { + const ret = wasm.collection_delete(this.__wbg_ptr, addHeapObject(primary_key)); + return takeObject(ret); + } + }; + CoreStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_corestorage_free(ptr >>> 0)); + CoreStorage = class _CoreStorage { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_CoreStorage.prototype); + obj.__wbg_ptr = ptr; + CoreStorageFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CoreStorageFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_corestorage_free(ptr); + } + /** + */ + constructor() { + const ret = wasm.corestorage_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * @param {any} document + * @param {Query} query + * @returns {boolean} + */ + matchesQuery(document2, query) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(query, Query); + wasm.corestorage_matchesQuery(retptr, this.__wbg_ptr, addBorrowedObject(document2), query.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = void 0; + } + } + }; + DatabaseFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_database_free(ptr >>> 0)); + Database = class _Database { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Database.prototype); + obj.__wbg_ptr = ptr; + DatabaseFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DatabaseFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_database_free(ptr); + } + /** + * @returns {Promise} + */ + start() { + const ret = wasm.database_start(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + close() { + const ptr = this.__destroy_into_raw(); + const ret = wasm.database_close(ptr); + return takeObject(ret); + } + /** + * @returns {boolean} + */ + get started() { + const ret = wasm.database_started(this.__wbg_ptr); + return ret !== 0; + } + /** + * Retrieves the collections in the database. + * + * This function returns an `Object` containing the collections. + * + * # Returns + * + * * `Result` - A result containing an `Object` with the collections or an error. + * @returns {object} + */ + get collections() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.database_collections(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {string} db_name + * @param {object} schemas_js + * @param {object} migrations_js + * @param {Array} plugins + * @param {any} module + * @param {string | undefined} [password] + * @param {any | undefined} [storage] + * @returns {Promise} + */ + static create(db_name, schemas_js, migrations_js, plugins, module2, password, storage) { + const ptr0 = passStringToWasm0(db_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(password) ? 0 : passStringToWasm0(password, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.database_create(ptr0, len0, addHeapObject(schemas_js), addHeapObject(migrations_js), addHeapObject(plugins), addHeapObject(module2), ptr1, len1, isLikeNone(storage) ? 0 : addHeapObject(storage)); + return takeObject(ret); + } + }; + InMemoryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_inmemory_free(ptr >>> 0)); + InMemory = class _InMemory { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_InMemory.prototype); + obj.__wbg_ptr = ptr; + InMemoryFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + InMemoryFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_inmemory_free(ptr); + } + /** + * @param {string} name + * @param {object} schemas_js + * @returns {Promise} + */ + static create(name, schemas_js) { + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_create(ptr0, len0, addHeapObject(schemas_js)); + return takeObject(ret); + } + /** + * @returns {any} + */ + get by_index() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.inmemory_by_index(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Operation} op + * @returns {Promise} + */ + write(op) { + _assertClass(op, Operation); + const ret = wasm.inmemory_write(this.__wbg_ptr, op.__wbg_ptr); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + find(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} primary_key + * @returns {Promise} + */ + findDocumentById(collection_name, primary_key) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + count(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.inmemory_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + close() { + const ret = wasm.inmemory_close(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + start() { + const ret = wasm.inmemory_start(this.__wbg_ptr); + return takeObject(ret); + } + }; + IndexDBFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_indexdb_free(ptr >>> 0)); + IndexDB = class _IndexDB { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_IndexDB.prototype); + obj.__wbg_ptr = ptr; + IndexDBFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + IndexDBFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_indexdb_free(ptr); + } + /** + * @param {string} name + * @param {object} schemas_js + * @returns {Promise} + */ + static create(name, schemas_js) { + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_create(ptr0, len0, addHeapObject(schemas_js)); + return takeObject(ret); + } + /** + * @param {Operation} op + * @returns {Promise} + */ + write(op) { + _assertClass(op, Operation); + const ret = wasm.indexdb_write(this.__wbg_ptr, op.__wbg_ptr); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + find(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} primary_key + * @returns {Promise} + */ + findDocumentById(collection_name, primary_key) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); + return takeObject(ret); + } + /** + * @param {string} collection_name + * @param {any} query + * @returns {Promise} + */ + count(collection_name, query) { + const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.indexdb_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + close() { + const ret = wasm.indexdb_close(this.__wbg_ptr); + return takeObject(ret); + } + /** + * @returns {Promise} + */ + start() { + const ret = wasm.indexdb_start(this.__wbg_ptr); + return takeObject(ret); + } + }; + OperationFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_operation_free(ptr >>> 0)); + Operation = class _Operation { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Operation.prototype); + obj.__wbg_ptr = ptr; + OperationFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + OperationFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_operation_free(ptr); + } + /** + * Retrieves the name of the collection. + * + * # Returns + * + * * `String` - The name of the collection. + * @returns {string} + */ + get collection() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.operation_collection(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Retrieves the type of operation. + * + * # Returns + * + * * `OpType` - The type of operation. + * @returns {OpType} + */ + get opType() { + const ret = wasm.operation_opType(this.__wbg_ptr); + return ret; + } + /** + * Retrieves the data involved in the operation. + * + * # Returns + * + * * `JsValue` - The data involved in the operation. + * @returns {any} + */ + get data() { + const ret = wasm.operation_data(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Retrieves the indexes related to the operation. + * + * # Returns + * + * * `Result` - A result containing the indexes as a `JsValue` or an error. + * @returns {any} + */ + get indexes() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.operation_indexes(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + PropertyFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_property_free(ptr >>> 0)); + Property = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + PropertyFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_property_free(ptr); + } + /** + * Checks is the schema is valid. + * + * # Returns + * + * Throws exception if not valid + * @returns {boolean} + */ + is_valid() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_is_valid(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the type of the property. + * + * # Returns + * + * * `PropertyType` - The type of the property. + * @returns {any} + */ + get type() { + const ret = wasm.property_type(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Retrieves the items of the property. + * + * # Returns + * + * * `Result` - A result containing the items as a `JsValue` or an error. + * @returns {any} + */ + get items() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_items(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the maximum number of items of the property. + * + * # Returns + * + * * `Result` - A result containing the maximum number of items as a `JsValue` or an error. + * @returns {any} + */ + get maxItems() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_maxItems(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the minimum number of items of the property. + * + * # Returns + * + * * `Result` - A result containing the minimum number of items as a `JsValue` or an error. + * @returns {any} + */ + get minItems() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_minItems(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the maximum length of the property. + * + * # Returns + * + * * `Result` - A result containing the maximum length as a `JsValue` or an error. + * @returns {any} + */ + get maxLength() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_maxLength(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the minimum length of the property. + * + * # Returns + * + * * `Result` - A result containing the minimum length as a `JsValue` or an error. + * @returns {any} + */ + get minLength() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_minLength(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the nested properties of the property. + * + * # Returns + * + * * `Result` - A result containing the nested properties as a `JsValue` or an error. + * @returns {any} + */ + get properties() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.property_properties(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + QueryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_query_free(ptr >>> 0)); + Query = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + QueryFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_query_free(ptr); + } + /** + * @param {any} query + * @param {Schema} schema + */ + constructor(query, schema) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(schema, Schema); + var ptr0 = schema.__destroy_into_raw(); + wasm.query_new(retptr, addHeapObject(query), ptr0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {any} + */ + get query() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.query_query(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {any} + */ + parse() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.query_parse(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + SchemaFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_schema_free(ptr >>> 0)); + Schema = class _Schema { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(_Schema.prototype); + obj.__wbg_ptr = ptr; + SchemaFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SchemaFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_schema_free(ptr); + } + /** + * @param {any} document + */ + validate_schema(document2) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_validate_schema(retptr, this.__wbg_ptr, addHeapObject(document2)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {boolean} + */ + is_valid() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_is_valid(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Creates a new `Schema` instance from a given `JsValue`. + * + * # Arguments + * + * * `schema` - A `JsValue` representing the schema. + * + * # Returns + * + * * `Result` - A result containing the new `Schema` instance or an error. + * @param {any} schema + * @returns {Schema} + */ + static create(schema) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_create(retptr, addHeapObject(schema)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return _Schema.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the version of the schema. + * + * # Returns + * + * * `i32` - The version of the schema. + * @returns {number} + */ + get version() { + const ret = wasm.schema_version(this.__wbg_ptr); + return ret; + } + /** + * Retrieves the primary key of the schema. + * + * # Returns + * + * * `String` - The primary key of the schema. + * @returns {string} + */ + get primaryKey() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_primaryKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Retrieves the type of the schema. + * + * # Returns + * + * * `String` - The type of the schema. + * @returns {string} + */ + get type() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_type(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Retrieves the indexes of the schema, if any. + * + * # Returns + * + * * `Option>` - The indexes of the schema, if any. + * @returns {(string)[] | undefined} + */ + get indexes() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_indexes(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {(string)[] | undefined} + */ + get required() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_required(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {(string)[] | undefined} + */ + get encrypted() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_encrypted(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Retrieves the properties of the schema. + * + * # Returns + * + * * `Result` - A result containing the properties as a `JsValue` or an error. + * @returns {any} + */ + get properties() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.schema_properties(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + }; + WasmBindgenTestContextFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { + }, unregister: () => { + } } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmbindgentestcontext_free(ptr >>> 0)); + WasmBindgenTestContext = class { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmBindgenTestContextFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmbindgentestcontext_free(ptr); + } + /** + * Creates a new context ready to run tests. + * + * A `Context` is the main structure through which test execution is + * coordinated, and this will collect output and results for all executed + * tests. + */ + constructor() { + const ret = wasm.wasmbindgentestcontext_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Inform this context about runtime arguments passed to the test + * harness. + * @param {any[]} args + */ + args(args) { + const ptr0 = passArrayJsValueToWasm0(args, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.wasmbindgentestcontext_args(this.__wbg_ptr, ptr0, len0); + } + /** + * Executes a list of tests, returning a promise representing their + * eventual completion. + * + * This is the main entry point for executing tests. All the tests passed + * in are the JS `Function` object that was plucked off the + * `WebAssembly.Instance` exports list. + * + * The promise returned resolves to either `true` if all tests passed or + * `false` if at least one test failed. + * @param {any[]} tests + * @returns {Promise} + */ + run(tests) { + const ptr0 = passArrayJsValueToWasm0(tests, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.wasmbindgentestcontext_run(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + }; + ridb_wasm_default = __wbg_init; + } +}); + +// wasm:/Users/ribo/Projects/personal/ridb-rust/packages/ridb/node_modules/@trust0/ridb-wasm/ridb_wasm_bg.wasm +var ridb_wasm_bg_default = Buffer.from("AGFzbQEAAAABgwIjYAF/AGACf38Bf2ACf38AYAN/f38AYAF/AX9gA39/fwF/YAR/f39/AGAFf39/f38AYAABf2AEf39/fwF/YAAAYAV/f39/fwF/YAZ/f39/f38AYAd/f39/f39/AGAFf39/fn8AYAF+AX9gBn9/f39/fwF/YAV/f35/fwBgAXwBf2ABfwF8YAJ/fwF+YAN/f38BfmACfn8AYAl/f39/f39+fn4AYAd/f39/f39/AX9gA35/fwF/YAt/f39/f39/f39/fwF/YAl/f39/f39/f38Bf2ADf35+AGAEf35+fwBgBH9+f38AYAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AAsArmwEDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAADd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcAAQN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQABAN3YmcSX193YmluZGdlbl9pc19udWxsAAQDd2JnEl9fd2JnX2lubWVtb3J5X25ldwAEA3diZydfX3diZ19maW5kRG9jdW1lbnRCeUlkXzNjOTUzZTdjYjgxNjYzMWYACQN3YmccX193Ymdfd3JpdGVfNWVkMjE3NzE4Yzk0M2JiNgABA3diZxFfX3diZ19pbmRleGRiX25ldwAEA3diZxxfX3diZ19jbG9zZV85MDc5ZDYwOWY1MWYzMTViAAQDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwASA3diZxVfX3diaW5kZ2VuX3N0cmluZ19nZXQAAgN3YmcVX193YmluZGdlbl9udW1iZXJfZ2V0AAIDd2JnHF9fd2JnX2NvdW50XzU2YjczN2YzZTFmOTgwOGIACQN3YmccX193Ymdfc3RhcnRfOGU5MGJhNGI5YTY2YWQ2ZAAEA3diZxxfX3diZ19hcHBseV81Y2MyMGE5YzU5YWE0MmNjAAMDd2JnEl9fd2JnX2RhdGFiYXNlX25ldwAEA3diZxtfX3diZ19maW5kXzRmYjczYzYxOTgzZjMzMDMACQN3YmcUX193YmdfY29sbGVjdGlvbl9uZXcABAN3YmcWX193YmluZGdlbl9pc19mdW5jdGlvbgAEA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEA3diZxNfX3diaW5kZ2VuX2lzX2FycmF5AAQDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAQDd2JnE19fd2JpbmRnZW5faXNfZmFsc3kABAN3YmcUX193YmluZGdlbl9pc19iaWdpbnQABAN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAEA3diZw1fX3diaW5kZ2VuX2luAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0AA8Dd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAQN3YmcaX193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQADwN3YmcSX193YmluZGdlbl9jYl9kcm9wAAQDd2JnHV9fd2JnX2NyeXB0b18xZDFmMjI4MjRhNmEwODBjAAQDd2JnHl9fd2JnX3Byb2Nlc3NfNGE3Mjg0N2NjNTAzOTk1YgAEA3diZx9fX3diZ192ZXJzaW9uc19mNjg2NTY1ZTU4NmRkOTM1AAQDd2JnG19fd2JnX25vZGVfMTA0YTJmZjhkNmVhMDNhMgAEA3diZx5fX3diZ19yZXF1aXJlX2NjYTkwYjFhOTRhMDI1NWIACAN3YmcfX193YmdfbXNDcnlwdG9fZWIwNWU2MmI1MzBhMTUwOAAEA3diZyVfX3diZ19yYW5kb21GaWxsU3luY181YzljOTU1YWE1NmI2MDQ5AAIDd2JnJl9fd2JnX2dldFJhbmRvbVZhbHVlc18zYWE1NmFhNmVkZWM4NzRjAAIDd2JnKF9fd2JnX2luc3RhbmNlb2ZfV2luZG93X2Y0MDE5NTNhMmNmODYyMjAABAN3YmcjX193YmdfbG9jYWxTdG9yYWdlX2UzODFkMzRkMGM0MGM3NjEABAN3YmcgX193YmdfaW5kZXhlZERCXzdjNTFkOTA1NjY2N2Y0ZTAABAN3YmcbX193Ymdfb3Blbl9mMGQ3MjU5ZmQ3ZTY4OWNlAAkDd2JnHl9fd2JnX2dldEl0ZW1fMTY0ZThlNTI2NTA5NWI4NwAGA3diZxxfX3diZ19lcnJvcl84ZTM5MjhjZmI4YTQzZTJiAAADd2JnGl9fd2JnX2xvZ181YmI1Zjg4ZjI0NWQ3NzYyAAADd2JnHV9fd2JnX2xlbmd0aF85YWU1ZGFmOWE2OTBjYmE5AAQDd2JnH19fd2JnX2NvbnRhaW5zX2M2NWI0NDQwMGI1NDkyODYABQN3YmcaX193YmdfZ2V0XzkxMGJiYjk0YWJkY2Y0ODgAAwN3YmcdX193YmdfdGFyZ2V0XzJmYzE3N2UzODZjOGI3YjAABAN3YmcyX193YmdfaW5zdGFuY2VvZl9JZGJPcGVuRGJSZXF1ZXN0XzNmNGExNjZiYzAzNDA1NzgABAN3YmcpX193Ymdfc2V0b251cGdyYWRlbmVlZGVkX2FkNzY0NTM3M2M3ZDVlMWIAAgN3YmcsX193YmdfaW5zdGFuY2VvZl9JZGJSZXF1ZXN0XzkzMjQ5ZGEwNGY1MzcwYjYABAN3YmcdX193YmdfcmVzdWx0XzZjZWRmNWY3ODYwMGE3OWMABAN3YmccX193YmdfZXJyb3JfNjg1YjIwMDI0ZGMyZDZjYQAEA3diZyNfX3diZ19zZXRvbnN1Y2Nlc3NfNjMyY2UwYTE0NjA0NTVjMgACA3diZyFfX3diZ19zZXRvbmVycm9yXzg0NzliMzNlNzU2OGE5MDQAAgN3YmckX193Ymdfc2V0b25jb21wbGV0ZV9kOGU0MjM2NjY1Y2JmMWUyAAIDd2JnIV9fd2JnX3NldG9uZXJyb3JfZGEwNzFlYzk0ZTE0ODM5NwACA3diZyJfX3diZ19vYmplY3RTdG9yZV9kYTQ2ODc5M2JkOWRmMTdiAAUDd2JnLV9fd2JnX2luc3RhbmNlb2ZfSWRiRGF0YWJhc2VfZGI2NzFjZjI0NTRhOTU0MgAEA3diZydfX3diZ19vYmplY3RTdG9yZU5hbWVzXzU4OGI1OTI0Mjc0MjM5ZmQABAN3YmccX193YmdfY2xvc2VfNmJmZTRjYTJmZTY3Y2I2NwAAA3diZyhfX3diZ19jcmVhdGVPYmplY3RTdG9yZV84ODJmMmY2YjFiMWVmMDQwAAUDd2JnIl9fd2JnX3RyYW5zYWN0aW9uX2MzMmJiMTBjOWM2OTJmNGIABQN3YmciX193YmdfdHJhbnNhY3Rpb25fMWUyODJhNzllOWJiNzM4NwAJA3diZx1fX3diZ19kZWxldGVfZjYwYmJhN2QwYWU1OWE0ZgABA3diZxpfX3diZ19nZXRfNTM2MWI2NGNhYzBkMDgyNgABA3diZx1fX3diZ19nZXRBbGxfMjc4MmU0MzhkZjY5OTM4NAAEA3diZxpfX3diZ19wdXRfMjI3OTJlMTc1ODBjYTE4YgAFA3diZxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxAAEDd2JnFF9fd2JpbmRnZW5fYXNfbnVtYmVyABMDd2JnHV9fd2JnX1N0cmluZ18zODliNTRiZDlkMjUzNzVmAAIDd2JnJF9fd2JnX2dldHdpdGhyZWZrZXlfNGE5MmE1ZWNhNjA4NzliOQABA3diZxpfX3diZ19zZXRfOTE4MjcxMmFiZWJmODJlZgADA3diZxpfX3diZ19sb2dfMjhlZWU0ZTY0MzJlZmQyNAACA3diZx1fX3diZ19TdHJpbmdfNTViOGJkYzRiYzI0MzY3NwACA3diZyVfX3diZ19nZXRFbGVtZW50QnlJZF84NDU4ZjJhNmMyODQ2N2RjAAUDd2JnJV9fd2JnX3NldHRleHRjb250ZW50X2ZjM2ZmNDg1Yjk2ZmNiMWQAAwN3YmckX193Ymdfd2JndGVzdGludm9rZV84YzIwZjQxMzJhZjJiZGVkAAIDd2JnK19fd2JnX3diZ3Rlc3RvdXRwdXR3cml0ZWxuXzRkYjNiZDY0OTE0ZWM5NTUAAAN3YmccX193Ymdfc3RhY2tfNDM2MjczYzIxNjU4MTY5YgAEA3diZy9fX3diZ19zdGF0aWNfYWNjZXNzb3JfZG9jdW1lbnRfZDRiNmFlN2Y1NTc4NDgwZgAIA3diZxxfX3diZ19zdGFja18xN2M3N2U5ZjViZmU2NzE0AAIDd2JnG19fd2JnX3NlbGZfNTUxMDYzNTdlYzEwZWNkNAAEA3diZyJfX3diZ19jb25zdHJ1Y3Rvcl9mZDBkMjJkNjBiN2RmZDcyAAQDd2JnG19fd2JnX25hbWVfN2Y0MzlkMjRmZjdiYTFkMwACA3diZyJfX3diZ190ZXh0Y29udGVudF82N2U0ZTgxMWNiZGYwMGZjAAIDd2JnHF9fd2JnX3N0YWNrXzQ0NzQzZmI3ZDcxOTI2YTAABAN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgACA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAIDd2JnJV9fd2JnX3F1ZXVlTWljcm90YXNrXzNjYmFlMmVjNmI2Y2QzZDYABAN3YmclX193YmdfcXVldWVNaWNyb3Rhc2tfNDgxOTcxYjBkODdmM2RkNAAAA3diZxpfX3diZ19nZXRfYmQ4ZTMzOGZiZDVmNWNjOAABA3diZx1fX3diZ19sZW5ndGhfY2Q3YWY4MTE3NjcyYjhiOAAEA3diZxpfX3diZ19uZXdfMTZiMzA0YTJjZmE3ZmY0YQAIA3diZyBfX3diZ19uZXdub2FyZ3NfZTI1ODA4N2NkMGRhYTBlYQABA3diZxpfX3diZ19uZXdfZDliYzNhMDE0NzYzNDY0MAAIA3diZxtfX3diZ19uZXh0XzQwZmMzMjdiZmM4NzcwZTYABAN3YmcbX193YmdfbmV4dF8xOTZjODQ0NTBiMzY0MjU0AAQDd2JnG19fd2JnX2RvbmVfMjk4YjU3ZDIzYzBmYzgwYwAEA3diZxxfX3diZ192YWx1ZV9kOTNjNjUwMTFmNTFhNDU2AAQDd2JnH19fd2JnX2l0ZXJhdG9yXzJjZWU2ZGFkZmQ5NTZkZmEACAN3YmcaX193YmdfZ2V0X2UzYzI1NDA3NjU1N2UzNDgAAQN3YmcbX193YmdfY2FsbF8yN2MwZjg3ODAxZGVkZjkzAAEDd2JnGl9fd2JnX25ld183MmZiOWExOGI1YWUyNjI0AAgDd2JnG19fd2JnX3NlbGZfY2UwZGJmYzQ1Y2YyZjViZQAIA3diZx1fX3diZ193aW5kb3dfYzZmYjkzOWE3ZjQzNjc4MwAIA3diZyFfX3diZ19nbG9iYWxUaGlzX2QxZTZhZjQ4NTZiYTMzMWIACAN3YmcdX193YmdfZ2xvYmFsXzIwN2I1NTg5NDI1Mjc0ODkACAN3YmcaX193Ymdfc2V0X2Q0NjM4ZjcyMjA2OGYwNDMAAwN3YmcbX193YmdfZnJvbV84OWUzZmMzYmE1ZTZmYjQ4AAQDd2JnHl9fd2JnX2ZvckVhY2hfMmJlOGRlNzM0N2Q2MzMzMgADA3diZx5fX3diZ19pc0FycmF5XzJhYjY0ZDk1ZTA5ZWEwYWUABAN3YmcZX193Ymdfb2ZfNGEyYjMxM2E0NTNlYzA1OQAEA3diZxtfX3diZ19wdXNoX2E1YjA1YWVkYzcyMzRmOWYAAQN3YmctX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl84MzY4MjViZTA3ZDRjOWQyAAQDd2JnGl9fd2JnX25ld18yOGM1MTFkOWJhZWJmYTg5AAEDd2JnHl9fd2JnX21lc3NhZ2VfNWJmMjgwMTZjMmI0OWNmYgAEA3diZxtfX3diZ19uYW1lX2U3NDI5ZjBkZGE2MDc5ZTIABAN3YmcbX193YmdfY2FsbF9iM2NhN2M2MDUxZjliZWMxAAUDd2JnG19fd2JnX2NhbGxfOTM4OTkyYzgzMmY3NDMxNAALA3diZxpfX3diZ19zZXRfODQxNzI1N2FhZWRjOTM2YgAFA3diZyRfX3diZ19pc1NhZmVJbnRlZ2VyX2Y3YjA0ZWYwMjI5NmM0ZDIABAN3YmceX193YmdfZW50cmllc185NWNjMmM4MjNiMjg1YTA5AAQDd2JnGV9fd2JnX2lzXzAxMGZkYzBmNGFiOTY5MTYAAQN3YmcbX193Ymdfa2V5c185MWU0MTJiNGIyMjI2NTlmAAQDd2JnGl9fd2JnX25ld184MTc0MDc1MGRhNDA3MjRmAAEDd2JnHl9fd2JnX3Jlc29sdmVfYjAwODNhNzk2NzgyOGVjOAAEA3diZxtfX3diZ190aGVuXzBjODZhNjBlOGZjZmU5ZjYAAQN3YmcbX193YmdfdGhlbl9hNzNjYWE5YTg3OTkxNTY2AAUDd2JnHV9fd2JnX2J1ZmZlcl8xMmQwNzljYzIxZTE0YmRiAAQDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2FhNGExN2MzM2EwNmU1Y2IABQN3YmcaX193YmdfbmV3XzYzYjkyYmM4NjcxZWQ0NjQABAN3YmcaX193Ymdfc2V0X2E0N2JhYzcwMzA2YTE5YTcAAwN3YmcdX193YmdfbGVuZ3RoX2MyMGE0MGYxNTAyMGQ2OGEABAN3YmcsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzJiM2JiZWNkMDMzZDE5ZjYABAN3YmckX193YmdfbmV3d2l0aGxlbmd0aF9lOWI0ODc4Y2ViYWRiM2QzAAQDd2JnH19fd2JnX3N1YmFycmF5X2ExZjczY2Q0YjViNDJmZTEABQN3YmccX193YmdfYXBwbHlfMGE1YWE2MDM4ODFlNmQ3OQAFA3diZyVfX3diZ19kZWxldGVQcm9wZXJ0eV8xM2U3MjFhNTZmMTllODQyAAEDd2JnGl9fd2JnX3NldF8xZjliMDRmMTcwMDU1ZDMzAAUDd2JnHF9fd2JnX3BhcnNlXzY2ZDE4MDE2MzRlMDk5YWMAAQN3YmcgX193Ymdfc3RyaW5naWZ5Xzg4ODdmZTc0ZTFjNTBkODEABAN3YmccX193YmluZGdlbl9iaWdpbnRfZ2V0X2FzX2k2NAACA3diZxdfX3diaW5kZ2VuX2RlYnVnX3N0cmluZwACA3diZxBfX3diaW5kZ2VuX3Rocm93AAIDd2JnEV9fd2JpbmRnZW5fbWVtb3J5AAgDd2JnHV9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTM3AAUDd2JnHV9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTM5AAUDd2JnHV9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTQxAAUDd2JnHV9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTQzAAUDd2JnHl9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyMTM1MgAFA8MGwQYBAwQCBgECAQwDDQEDAQEMAQEDBwcCAwIBBwECAgwBAQcCAQcDAgMBAgYCAwIDAQIBAgcDAQACBwECAwMBBQIBAQEDAwMDAQUQAAMGCQMBAAIDAAAAAAAHAQMAAgIIAgAAAgACAwUBAwcAAwIGAgYGCgEGAwUCBAICBQUBAgIDBQACAAAAAAAAAAECBwMCAxQVDQ0NDQAOAwMAAgYCAAoBFgIAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIAAhcGEQ4BAQIAAgADAAAAAAAABgAMCgAAAgICGAECDAALBQQAARkBBwECAQACAQIAAwMAAAYBAwAABwYBBgIDAwIDAwMAAQIAAAAOAwMCAgADAAACAwICAgIDCQMBAAAGAwYBAwAAAAAAAAIAAAAFAAACCgYABAQGAgECAgIDAwACAAIBAwEHCgsDAgADAwMDAwMDAwMDAwIDAAAKAwMABgUAAgIDAwMDAgIAAgIAAhoDAwAAAAsAAgMMAAACAQAGAQEGAwYDAgADAgAAAAMbAgQEAgAHBwICAgICAQABAAAAAQICAwUCARwABwAHBwcHBwAAAAAABwEAAAACBAIFAAAAAAAABQUBAQIAAQAFAAwCAwMDAwICAwMDBAMCAwICAAAAAQEBCQkCHQQABAEBAwIDAQMAAAICAgIAAAICAwIBAgICAgICAgQEBAgDAAAABQACAgYBAwQABQoCBQQBAwUCAQQAAQoAAgIABQICAgUAAQoBCQACAAEBAQYBAgEDCQkJBgYAAAAAAAMBAQcDAQIBAQICAwILAgYGBgEBCQAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAEKAAEBAgIIAQACBAEDBgIDAwMDAAQDBAIBAgQEBAAIARABAQEAAQICBwsRHyEACAYBBQMCAQECAgMCBQIBAAACAwICAQACCQQDAwYBAwEBAQUABQEBBwEBAgEECgQDAAEBAQICAQEDBAQEAQMDAwQCBAQEAQABAQQDAwEBAQEBAQEBAQEBAQEBAQEBAQEBAgoKAQEBAQIBAQIBAQUFAQEBAQICAAAEBAABAwQEAQQEBAEEAAAAAAAAAAAAAAAAAAAAAAAAAAIIBAQHAXABygPKAwUDAQARBgkBfwFBgIDAAAsH2h5+Bm1lbW9yeQIAEF9fd2JnX3F1ZXJ5X2ZyZWUAkwUJcXVlcnlfbmV3AJEEC3F1ZXJ5X3F1ZXJ5AK8EC3F1ZXJ5X3BhcnNlAKgEH19fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX3ZhbGlkXzYA+AUqX193Ymd0X3Rlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF9wcm9wZXJ0eV83APkFJl9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2ludmFsaWRfdHlwZV84APoFK19fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2xvZ2ljYWxfb3BlcmF0b3JzXzkA+wUrX193Ymd0X3Rlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF9vcGVyYXRvcl8xMAD8BS5fX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9vcGVyYXRvcl93cm9uZ190eXBlXzExAP0FJl9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2luX29wZXJhdG9yXzEyAP4FMV9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2luX29wZXJhdG9yX3dyb25nX3R5cGVfMTMA/wU+X193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fc2ltcGxlX2F0dHJpYnV0ZXNfMTQAgAZCX193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yXzE1AIEGRV9fd2JndF90ZXN0X3F1ZXJ5X2dldF9xdWVyeV9ub3JtYWxpemF0aW9uX25lc3RlZF9sb2dpY2FsX29wZXJhdG9yc18xNgCCBkJfX3diZ3RfdGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3JfMTcAgwY6X193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fY29tcGxleF9taXhlZF8xOACEBiZfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9lbXB0eV9xdWVyeV8xOQCFBitfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5XzIwAIYGLV9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc18yMQCHBi5fX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9pbnZhbGlkX2luX29wZXJhdG9yXzIyAIgGMl9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X2xvZ2ljYWxfb3BlcmF0b3JzXzIzAIkGFl9fd2JnX2Jhc2VzdG9yYWdlX2ZyZWUAiwMPYmFzZXN0b3JhZ2VfbmV3AKYCFWJhc2VzdG9yYWdlX2dldE9wdGlvbgDQAxViYXNlc3RvcmFnZV9nZXRTY2hlbWEAuAMQYmFzZXN0b3JhZ2VfY29yZQCWBRFfX3diZ19zY2hlbWFfZnJlZQCqBRZzY2hlbWFfdmFsaWRhdGVfc2NoZW1hAL0ED3NjaGVtYV9pc192YWxpZAD7Aw1zY2hlbWFfY3JlYXRlAJAEDnNjaGVtYV92ZXJzaW9uAK4GEXNjaGVtYV9wcmltYXJ5S2V5AIEEC3NjaGVtYV90eXBlAIIEDnNjaGVtYV9pbmRleGVzAPECD3NjaGVtYV9yZXF1aXJlZADyAhBzY2hlbWFfZW5jcnlwdGVkAPMCEXNjaGVtYV9wcm9wZXJ0aWVzALAEHV9fd2JndF90ZXN0X3NjaGVtYV9jcmVhdGlvbl8zAIsGH19fd2JndF90ZXN0X3NjaGVtYV92YWxpZGF0aW9uXzQAjAYcX193Ymd0X3Rlc3RfaW52YWxpZF9zY2hlbWFfNQCNBhNfX3diZ19kYXRhYmFzZV9mcmVlALgCDmRhdGFiYXNlX3N0YXJ0ANUEDmRhdGFiYXNlX2Nsb3NlALYFEGRhdGFiYXNlX3N0YXJ0ZWQArwYUZGF0YWJhc2VfY29sbGVjdGlvbnMAsQQPZGF0YWJhc2VfY3JlYXRlAKcEFF9fd2JnX29wZXJhdGlvbl9mcmVlAIMEFG9wZXJhdGlvbl9jb2xsZWN0aW9uAIQEEG9wZXJhdGlvbl9vcFR5cGUAsAYOb3BlcmF0aW9uX2RhdGEAvAURb3BlcmF0aW9uX2luZGV4ZXMAsgQVX193YmdfYmFzZXBsdWdpbl9mcmVlAOUEDmJhc2VwbHVnaW5fbmV3AK8FD2Jhc2VwbHVnaW5fbmFtZQCwBR5iYXNlcGx1Z2luX2dldF9kb2NfY3JlYXRlX2hvb2sAqQQfYmFzZXBsdWdpbl9nZXRfZG9jX3JlY292ZXJfaG9vawCqBB5iYXNlcGx1Z2luX3NldF9kb2NfY3JlYXRlX2hvb2sAwQUfYmFzZXBsdWdpbl9zZXRfZG9jX3JlY292ZXJfaG9vawDCBQdtYWluX2pzAMsFDWlzX2RlYnVnX21vZGUA2gcTX193YmdfcHJvcGVydHlfZnJlZQCUBRFwcm9wZXJ0eV9pc192YWxpZAD8Aw1wcm9wZXJ0eV90eXBlAPMEDnByb3BlcnR5X2l0ZW1zAKcDEXByb3BlcnR5X21heEl0ZW1zAK4DEXByb3BlcnR5X21pbkl0ZW1zAK8DEnByb3BlcnR5X21heExlbmd0aACwAxJwcm9wZXJ0eV9taW5MZW5ndGgAsQMTcHJvcGVydHlfcHJvcGVydGllcwCsAx9fX3diZ3RfdGVzdF9wcm9wZXJ0eV9jcmVhdGlvbl8wAI8GIV9fd2JndF90ZXN0X3Byb3BlcnR5X3ZhbGlkYXRpb25fMQCQBh5fX3diZ3RfdGVzdF9pbnZhbGlkX3Byb3BlcnR5XzIAkQYVX193YmdfY29sbGVjdGlvbl9mcmVlALACD2NvbGxlY3Rpb25fbmFtZQCFBBFjb2xsZWN0aW9uX3NjaGVtYQDKAw9jb2xsZWN0aW9uX2ZpbmQAiwUQY29sbGVjdGlvbl9jb3VudAD2BRNjb2xsZWN0aW9uX2ZpbmRCeUlkAP4EEWNvbGxlY3Rpb25fdXBkYXRlAIYFEWNvbGxlY3Rpb25fY3JlYXRlAIcFEWNvbGxlY3Rpb25fZGVsZXRlALYEE19fd2JnX2lubWVtb3J5X2ZyZWUA/AIPaW5tZW1vcnlfY3JlYXRlAL4EEWlubWVtb3J5X2J5X2luZGV4ALMEDmlubWVtb3J5X3dyaXRlAOEEDWlubWVtb3J5X2ZpbmQA/wQZaW5tZW1vcnlfZmluZERvY3VtZW50QnlJZADNBQ5pbm1lbW9yeV9jb3VudACABQ5pbm1lbW9yeV9jbG9zZQChBQ5pbm1lbW9yeV9zdGFydACiBRJfX3diZ19pbmRleGRiX2ZyZWUA+gEOaW5kZXhkYl9jcmVhdGUA5gQNaW5kZXhkYl93cml0ZQC6BAxpbmRleGRiX2ZpbmQA2QUYaW5kZXhkYl9maW5kRG9jdW1lbnRCeUlkANoFDWluZGV4ZGJfY291bnQA2wUNaW5kZXhkYl9jbG9zZQCjBQ1pbmRleGRiX3N0YXJ0AKgGD2NvcmVzdG9yYWdlX25ldwCyBhhjb3Jlc3RvcmFnZV9tYXRjaGVzUXVlcnkA+AMWX193YmdfY29yZXN0b3JhZ2VfZnJlZQCxBiFfX3diZ193YXNtYmluZGdlbnRlc3Rjb250ZXh0X2ZyZWUApgUad2FzbWJpbmRnZW50ZXN0Y29udGV4dF9uZXcAmgYbd2FzbWJpbmRnZW50ZXN0Y29udGV4dF9hcmdzAIgFGndhc21iaW5kZ2VudGVzdGNvbnRleHRfcnVuANcEFV9fd2JndGVzdF9jb25zb2xlX2xvZwDeBRdfX3diZ3Rlc3RfY29uc29sZV9kZWJ1ZwDfBRZfX3diZ3Rlc3RfY29uc29sZV9pbmZvAOAFFl9fd2JndGVzdF9jb25zb2xlX3dhcm4A4QUXX193Ymd0ZXN0X2NvbnNvbGVfZXJyb3IA4gURX193YmluZGdlbl9tYWxsb2MA1QUSX193YmluZGdlbl9yZWFsbG9jAPcFE19fd2JpbmRnZW5fZXhwb3J0XzIBAHxfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19BX19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gzMGZjZjI0ZjkzMGFjNzNiAMYGfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDAzNDNhZjNmZjIxMGJjNmMAxQYfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCLB3xfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuX19BX0JfQ19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gwODMzMDU0ODRmNTNmNTYyAOgEfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faGQwYjdiNzAzMWUzM2EzODQAzAYPX193YmluZGdlbl9mcmVlAOAGFF9fd2JpbmRnZW5fZXhuX3N0b3JlAPIGP3dhc21fYmluZGdlbl9fY29udmVydF9fY2xvc3VyZXNfX2ludm9rZTBfbXV0X19oODMxNjU0MDAzYTgxMTRjMgDVBj93YXNtX2JpbmRnZW5fX2NvbnZlcnRfX2Nsb3N1cmVzX19pbnZva2UzX211dF9faDc5YWQxYzZlNmExOTdiZTIAvAY/d2FzbV9iaW5kZ2VuX19jb252ZXJ0X19jbG9zdXJlc19faW52b2tlMl9tdXRfX2gzM2IzMGM1NjRmNDNhOGE1AMMGEF9fd2JpbmRnZW5fc3RhcnQAywUJqAcFAEEBC9kByQbQBJYE6wbqBqwG9gP2A4oDigOYA5gD6gPqA5sDmwP/A/8D9QP1A+kD6QPsA+wD7gPuA/4D/gPvA+8D6wPrA+QC5AKJA4kD5gPmA5wDnAPtA+0DrQOtA+gD6APnA+cD/QP9A4AEgATyA9wB+gS9AbUEgQKdA9MB9wOgAaEDuQHaA/MBkAOsAaQE2wGEA7oB2gGiA88BiwSb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AygCCEUNASADKAIMIQYMBgsgA0EBNgLkASADQcy0wAA2AuABIANCATcC7AEgAyADQbACaq1CgICAgMAAhDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNBSABIAJBARD6BgwFCyADIAggBhACNgLMAiADQeABaiADQYQCaiADQcwCaiADQaQCahCtBSADLQDgAUUEQCADKALMAiIEQYQBTwRAIAQQAAsgAygCpAIiBEGEAU8EQCAEEAALIAMoAsABIgQEQCAIIARBARD6BgsgCUEBaiIJIAdHDQEMBwsLIAMoAuQBIQYgAygCzAIiAUGEAUkNAyABEAAMAwsgAyAEIAUgDhCNAyADKAIABEAgAygCBCEGDAgLIAQQASEGDAULIANBATYC5AEgA0GItMAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUEIAMoAtACIgEgAygC1AIQAiEGIAMoAswCIgJFDQYgASACQQEQ+gYMBgsgA0EBNgLkASADQay0wAA2AuABIANCATcC7AEgAyADQcABaq1CgICAgNAThDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNACABIAJBARD6BgsgAygCpAIiAUGEAUkNACABEAALIAMoAsABIgEEQCADKALEASABQQEQ+gYLIAMoApACIgFBhAFPBEAgARAACyADKAKEAiIBQYQBSQ0DIAEQAAwDCyADKAKEAiEGIAMoApACIgRBhAFJDQAgBBAACyADIAY2AqACIAMgAygC6AIgAygC7AIQAjYCzAIgA0HgAWogA0HYAWogA0HMAmogA0GgAmoQrQUgAy0A4AFFBEAgAygCzAIiBEGEAU8EQCAEEAALIAMoAqACIgRBhAFJDQQgBBAADAQLIAMoAuQBIQYgAygCzAIiAUGEAU8EQCABEAALIAMoAqACIgFBhAFJDQEgARAADAELIANBnAJqEIIHRQRAIANBAjYC5AEgA0HoscAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUE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AnQQsgUMBgsgAkHYAWogARCeASACLQDYASIFQQZGBEAgAigC3AEMBgsgAkGOAmoiByAKQQJqLQAAOgAAIAJBgAJqIgkgBkEIaikDADcDACACIAovAAA7AYwCIAIgBikDADcD+AEgAigC3AEhCyACKALIASIDIAIoAsABRgRAIAJBwAFqEL0DCyACKALEASADQRhsaiIEIAIpA/gBNwMIIAQgBToAACAEIAIvAYwCOwABIAQgCzYCBCAEQQNqIActAAA6AAAgBEEQaiAJKQMANwMAIAIgA0EBajYCyAFBACEFIAEoAhQiBCABKAIQIgNJDQALDAMLIABBBjoAACAAIAg2AgQMEAsgBkEwa0H/AXFBCk8EQCACQQo2AtgBIAIgCBCYBSACIAJB2AFqIAIoAgAgAigCBBCyBTYCrAEMBgsgAkHYAWogAUEBEN0BAn4CQCACKQPYASIUQgNSBEAgAikD4AEhEwJAAkAgFKdBAWsOAgABAwsgAkECOgCoAUIADAMLIAJBAjoAqAEgE0I/iAwCCyAAIAIoAuABNgIEIABBBjoAAAwRCyACIBNC////////////AINCgICAgICAgPj/AFRBAXQ6AKgBQgILIRQgAkG4AWogEzcDACACQbABaiAUNwMAIABBEGogEzcDACAAQQhqIBQ3AwAgACACKQOoATcDAAwPCyABIAEtABhBAWsiAzoAGCADQf8BcQRAIAEgBEEEazYCFCACQcABaiEGQQAhCiMAQfABayIDJAAgA0EBOgAQIAMgATYCDCADQThqIgQgA0EMahCTAgJAAkACQCADLQA4RQRAIAMtADlFDQEgAygCDCEFIwBBEGsiByQAIAVBADYCCCAFIAUoAhRBAWo2AhQgB0EEaiAFQQxqIAUQjgIgBygCCCEMAkACQCAHKAIEIglBAkcEQCAHKAIMIQUCQCAJRQRAQQAhCSAFQQBOBEAgBUUEQEEBIQsMAwtByc3DAC0AABpBASEJIAVBARDtBiILDQILIAkgBRDZBgALQQAhCSAFQQBIDQIgBUUEQEEBIQsMAQtByc3DAC0AABpBASEJIAVBARDtBiILRQ0CCyALIAwgBRD6AiEJIAQgBTYCCCAEIAk2AgQgBCAFNgIADAILIARBgICAgHg2AgAgBCAMNgIEDAELIAkgBRDZBgALIAdBEGokACADKAI4IgRBgICAgHhHDQILIAMoAjwhBCAGQQY6AAAgBiAENgIEDAILIAZBADYCDCAGQQA2AgQgBkEFOgAADAELIAMoAjwhBSADKAJAIQcgA0EANgIcIANBADYCFCADIAc2AmggAyAFNgJkIAMgBDYCYCADQThqIANBDGoQ2wMCQCADLQA4QQZHBEAgA0EwaiADQcgAaikDADcDACADQShqIANBQGsiESkDADcDACADIAMpAzg3AyAgA0HQAWogA0EUaiADQeAAaiADQSBqEOYBAkACQAJAAkAgAy0A0AEOBwMDAwECAAMACyADQdABakEEchD7AQwCCyADKALUASIERQ0BIAMoAtgBIARBARD6BgwBCyADQdABakEEchC5BCADKALUASIERQ0AIAMoAtgBIARBGGxBCBD6BgsgA0HkAGohCyADQcQAaiEJIANB1AFqIQwgA0HQAWpBBHIhDgNAAkAgA0GsAWohBUEAIQ0jAEEQayIEJAAgBEEEaiADQQxqIgcQkwICQAJAAkAgBC0ABEUEQCAELQAFRQRAIAVBgICAgHg2AgAMBAsgBygCACIHQQA2AgggByAHKAIUQQFqNgIUIARBBGogB0EMaiAHEI4CIAQoAgghDyAEKAIEQQJGDQEgBCgCDCIHQQBOBEAgB0UEQEEBIRAMBAtByc3DAC0AABpBASENIAdBARDtBiIQDQMLIA0gBxDZBgALIAUgBCgCCDYCBCAFQYGAgIB4NgIADAILIAVBgYCAgHg2AgAgBSAPNgIEDAELIBAgDyAHEPoCIQ0gBSAHNgIIIAUgDTYCBCAFIAc2AgALIARBEGokAAJAAkACQAJAIAMoAqwBIgRBgICAgHhrDgIEAAELIAMoArABIQUMAQsgAykCsAEhEyADKAKwASADQbgBaiADQQxqENsDIAMtALgBQQZHDQEgAygCvAEhBSAERQ0AIARBARD6BgsgBkEGOgAAIAYgBTYCBAwECyAMIAMpA7gBNwIAIAxBEGogA0HIAWopAwA3AgAgDEEIaiADQcABaikDADcCACADQegAaiADQdgBaikCACIUNwMAIANB8ABqIANB4AFqKQIAIhU3AwAgA0H4AGoiBSADQegBaigCADYCACADIAMpAtABIhY3A2AgCUEQaiAVNwIAIAlBCGogFDcCACAJIBY3AgAgCUEYaiAFKAIANgIAIAMgE6ciEjYCPCADIAQ2AjggESATQiCIpyIKNgIAIANBiAFqIAo2AgAgAyADKQM4NwOAASADQaABaiALQRBqKQIANwMAIANBmAFqIAtBCGopAgA3AwAgAyALKQIANwOQASADQdABaiADQRRqIANBgAFqIANBkAFqEOYBAkACQAJAIAMtANABDgcEBAQBAgAEAAsgDhD7AQwDCyADKALUASIERQ0CIAMoAtgBIARBARD6BgwCCyAOELkEIAMoAtQBIgRFDQEgAygC2AEgBEEYbEEIEPoGDAELCyADIAo2AkAgAyASNgI8IANBgICAgHg2AjggA0E4ahDTBCADQcMAaiADQRxqKAIANgAAIAZBBToAACADIAMpAhQ3ADsgBiADKQA4NwABIAZBCGogA0E/aikAADcAAAwCCyAGIAMoAjw2AgQgBkEGOgAAIARFDQAgBSAEQQEQ+gYLIANBFGoQ+wELIANB8AFqJAAgASABLQAYQQFqOgAYAkACQAJAAkACQAJ/AkACQAJAIAEoAhQiBCABKAIQIgNJBEAgCCgCACEFA0ACQCAEIAVqLQAAIgZBCWsOJAAABAQABAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBQMLIAEgBEEBaiIENgIUIAMgBEcNAAsLIAJBAzYC2AEgAkGQAWogCBCYBSACQdgBaiACKAKQASACKAKUARCyBQwDCyAGQf0ARg0DCyACQRY2AtgBIAJBiAFqIAgQmAUgAkHYAWogAigCiAEgAigCjAEQsgUMAQsgAkEVNgLYASACQZgBaiAIEJgFIAJB2AFqIAIoApgBIAIoApwBELIFCyEEIAJB6AFqIAJB0AFqKQMANwMAIAJB4AFqIAJByAFqKQMANwMAIAIgAikDwAEiEzcD2AEgAiAENgLwASATp0H/AXEiA0EGRg0EIAJBBjoAqAEgAiAENgKsASADDgUJCQkCAwELIAEgBEEBajYCFCACQeABaiACQcgBaiIEKQMANwMAIAJB6AFqIAJB0AFqIgMpAwA3AwAgAiACKQPAASITNwPYASATp0H/AXFBBkYEQCACIAIoAtwBNgKsASACQQY6AKgBDAkLIAJBuAFqIAMpAwA3AwAgAkGwAWogBCkDADcDACACIAIpA8ABNwOoAQwICyACQdgBakEEchD7AQwHCyACKALcASIERQ0GIAIoAuABIARBARD6BgwGCyACQdgBakEEchC5BCACKALcASIERQ0FIAIoAuABIARBGGxBCBD6BgwFCyACIAIoAtwBNgKsASACQQY6AKgBIAQQwgQMBAsgAkEYNgLYASACQYABaiAIEJgFIAJB2AFqIAIoAoABIAIoAoQBELIFIQEgAEEGOgAAIAAgATYCBAwOCyACQQI2AtgBIAJB4ABqIAgQmAUgAkHYAWogAigCYCACKAJkELIFCyEFIAJBwAFqELkEIAIoAsABIgQEQCACKALEASAEQRhsQQgQ+gYLIAEoAhQhBCABKAIQIQNBACEGQQEhCkEGCyEHIAEgAS0AGEEBajoAGCACAn8CQAJAAkACQAJAAkAgAyAESwRAIAgoAgAhCQNAAkAgBCAJai0AACILQQlrDiQAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAUDCyABIARBAWoiBDYCFCADIARHDQALCyACQQI2AtgBIAJByABqIAgQmAUgAkHYAWogAigCSCACKAJMELIFDAYLIAtB3QBGDQILIAJBFjYC2AEgAkFAayAIEJgFIAJB2AFqIAIoAkAgAigCRBCyBQwECyABIARBAWoiBDYCFCADIARNDQIDQCAEIAlqLQAAIgtBCWsiDEEXS0EBIAx0QZOAgARxRXINAiABIARBAWoiBDYCFCADIARHDQALDAILIAEgBEEBajYCFCACIBM3A+ABIAIgBTYC3AEgAiAHOgDYASAKBEAgAkEGOgCoASACIAU2AqwBDAQLIAJBuAFqIAJB6AFqKQMANwMAIAJBsAFqIAJB4AFqKQMANwMAIAIgAikD2AE3A6gBDAMLIAtB3QBHDQAgAkEVNgLYASACQdgAaiAIEJgFIAJB2AFqIAIoAlggAigCXBCyBQwBCyACQRY2AtgBIAJB0ABqIAgQmAUgAkHYAWogAigCUCACKAJUELIFCyIENgLwASACIAU2AtwBIAIgBzoA2AEgAiATNwPgASAKBEAgAkEGOgCoASACIAU2AqwBIAQQwgQMAQsgAkHYAWpBBHIhAyACQQY6AKgBIAIgBDYCrAEgBkUEQCADEPsBDAELIAMQuQQgBUUNACATpyAFQRhsQQgQ+gYLIAItAKgBQQZHDQELIAIoAqwBIQQjAEEgayIDJAACQCAEKAIMBEAgBCEBDAELIANBGGogBEEIaigCADYCACADIAQpAgA3AxAgA0EIaiABQQxqENYFIANBEGogAygCCCADKAIMELIFIQEgBEEUQQQQ+gYLIANBIGokACAAQQY6AAAgACABNgIEDAkLIAAgAikDqAE3AwAgAEEQaiACQbgBaikDADcDACAAQQhqIAJBsAFqKQMANwMADAgLIAJBGDYC2AEgAkE4aiAIEJgFIAJB2AFqIAIoAjggAigCPBCyBSEBIABBBjoAACAAIAE2AgQMBwsgAkGwAWoiAyABIAggBBD6AjYCACACIAQ2AqwBIAJBAzoAqAEgAiAENgK0ASAAQRBqIAJBuAFqKQMANwMAIABBCGogAykDADcDACAAIAIpA6gBNwMADAYLIAJBBTYC2AEgAkEoaiAIENYFIAJB2AFqIAIoAiggAigCLBCyBQshASAAQQY6AAAgACABNgIEDAQLIAJBBTYC2AEgAkEYaiAIENYFIAJB2AFqIAIoAhggAigCHBCyBQshASAAQQY6AAAgACABNgIEDAILIAJBBTYC2AEgAkEIaiAIENYFIAJB2AFqIAIoAgggAigCDBCyBQshASAAQQY6AAAgACABNgIECyACQZACaiQAC7oaAwx/AXwBfiMAQfADayIEJAAgBEGwAWogA0HgAGoQwAEgBCgCtAEhCwJAAkAgBCgCsAFFBEAgBCALEAE2AsABIAQgBEHAAWoQwwc2ArgBIAQoAsABIgdBhAFPBEAgBxAACyAEQbgBahC/ByINRQ0BIARBqAJqrUKAgICA4CaEIRECQANAIARBqAFqIARBuAFqIAwQoQciBRALQQAgBCgCrAEiByAEKAKoASIGRSAHQYCAgIB4RnIiCBshByAFQYMBSwRAIAUQAAsgBCALEAE2AuQDIARBASAGIAgbIg4gBxACNgLYAyAEQaABaiAEQeQDaiAEQdgDahDjBSAEKAKkASEFIAQoAqABBEAgBCAFNgLoAyAEQQE2AsQBIARBoMbBADYCwAEgBEIBNwLMASAEIARB6ANqrUKAgICAMIQ3A6gCIAQgBEGoAmo2AsgBIARB+AJqIARBwAFqEOICIAQoAvwCIgEgBCgCgAMQAiECIAQoAvgCIgMEQCABIANBARD6BgsgBCgC6AMiAUGEAU8EQCABEAALIABBAToAACAAIAI2AgQgBCgC2AMiAEGEAU8EQCAAEAALIAQoAuQDIgBBhAFJDQIgABAADAILIAQgBTYCvAEgBCgC2AMiBUGEAU8EQCAFEAALIAQoAuQDIgVBhAFPBEAgBRAACwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAHQQNrDgIBAAoLIA4oAABBpMK5owZGDQEMCQsgDkHQxcEAQQMQqQUNCCAEQbwBahCCB0UEQEHTxcEAQRQQAiEBIABBAToAACAAIAE2AgQMCAsgBCAEQbwBahC+BzYC6AMCQCAEQegDahC/ByIGBEAgBEHAAWpBBHIhCCAEQfgCakEEciEMQQAhBwNAIARB6ANqIAcQoQchCSAEQfgCaiINIAMQ2QEgBCgC+AIhBSAEQagCaiIPIAxB0AAQ+gIaIAQoAswDIgpBgICAgHhGDQQgBCkD0AMhESAIIA9B0AAQ+gIaIAQgCTYCoAIgBCARNwOYAiAEIAo2ApQCIAQgBTYCwAEgDSABIAIgBEHAAWoQnwEgBC0A+AINBSAELQD5AkEBcQ0CIAQoAqACIgVBhAFPBEAgBRAACyAEQcABahD4AiAGIAdBAWoiB0cNAAsLIABBADsBAAwHCyAAQQE6AAFBACEHDAULIARBvAFqEIIHRQRAQefFwQBBFRACIQEgAEEBOgAAIAAgATYCBEEEIQcMCQsgBCAEQbwBahC+BzYC6AMgAAJ/AkAgBEHoA2oQvwciBgRAIARBwAFqQQRyIQggBEH4AmpBBHIhDEEAIQcDQCAEQegDaiAHEKEHIQkgBEH4AmoiDSADENkBIAQoAvgCIQUgBEGoAmoiDyAMQdAAEPoCGiAEKALMAyIKQYCAgIB4Rg0GIAQpA9ADIREgCCAPQdAAEPoCGiAEIAk2AqACIAQgETcDmAIgBCAKNgKUAiAEIAU2AsABIA0gASACIARBwAFqEJ8BIAQtAPgCDQIgBC0A+QJBAXFFBEAgAEEAOgABQQAMBAsgBCgCoAIiBUGEAU8EQCAFEAALIARBwAFqEPgCIAYgB0EBaiIHRw0ACwsgAEGAAjsBAAwFCyAAIAQoAvwCNgIEQQELOgAAIARBwAFqENIGDAMLIABBAToAACAAIAU2AgQMBAsgACAEKAL8AjYCBEEBIQcMAgsgAEEBOgAAIAAgBTYCBAsgBCgC6AMiAEGEAU8EQCAAEAALQQQhBwwECyAAIAc6AAAgBEHAAWoQ0gYLIAQoAugDIgBBhAFJDQAgABAAC0EDIQcMAQsgBCAOIAcQAjYC2AMgBEGYAWogAiAEQdgDahDjBSAEKAKcASEIIAQoApgBBEAgBCAINgLoAyAEQQE2AsQBIARBzMbBADYCwAEgBEIBNwLMASAEIARB6ANqrUKAgICAMIQ3A6gCIAQgBEGoAmo2AsgBIARB+AJqIARBwAFqEOICIAQoAvwCIgEgBCgCgAMQAiECIAQoAvgCIgMEQCABIANBARD6BgsgBCgC6AMiAUGEAU8EQCABEAALIABBAToAACAAIAI2AgQgBCgC2AMiAEGEAUkNASAAEAAMAQsgBCgC2AMiBUGEAU8EQCAFEAALAkAgAAJ/AkACQAJAIAQoArwBIgUQFkEBRw0AIARBvAFqEIIHDQAgBCAFEAE2AsABIAQgBEHAAWoQwwc2AuADIAQoAsABIgVBhAFPBEAgBRAACwJAIARB4ANqEL8HIg9FDQBBACEJAkADQCAEQZABaiAEQeADaiAJEKEHIgoQCwJAAkAgBCgCkAEiBQRAIAQoApQBIgZBgICAgHhHDQELQQAhBiAEQQA2ArACIARCgICAgBA3AqgCQQEhBQwBCyAEIAY2AqgCIAQgBa0gBq1CIIaENwKsAgsgBCAKQYQBTwR/IAoQACAEKAKwAiEGIAQoAqwCBSAFCyAGEAI2AsABIARBiAFqIARBvAFqIARBwAFqEOMFIAQoAowBIQUCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQoAogBRQRAIAQgBTYC5AMgBCgCwAEiBUGEAU8EQCAFEAALIAQoAqwCIQUgBCgCsAJBA2sOAgECAwsgBEEBOgDYAyAEIAU2AtwDIAQoAsABIgVBhAFPBEAgBRAACyAEKAKoAiIFBEAgBCgCrAIgBUEBEPoGC0EBIQUMDwsgBUHUxsEAQQMQqQVFDQkgBUHXxsEAQQMQqQVFDQIgBUHaxsEAQQMQqQUNASAEQeQDahCCBw0EQQEhBUH8xsEAQRoQAiEGIARBAToA2AMgBCAGNgLcAwwMCyAFKAAAQaTO0asGRg0HIAUoAABBpNjRqwZGDQILIARBATYCxAEgBEH0xsEANgLAASAEQgE3AswBIAQgETcD6AMgBCAEQegDajYCyAEgBEH4AmogBEHAAWoQlQQgBCgC/AIiBSAEKAKAAxACIQYgBEEBOgDYAyAEIAY2AtwDIAQoAvgCIgYEQCAFIAZBARD6BgtBASEFDAoLIAQoAuQDIQUgBEE4aiAIEAwCfyAEKAI4RQRAQZbHwQBBHhACDAELIAQrA0AhECAEQShqIAUQDCAEKAIoDQRBtMfBAEEfEAILIQZBASEFIARBAToA2AMgBCAGNgLcAwwJCyAEKALkAyEFIARB+ABqIAgQDAJ/IAQoAnhFBEBBlsfBAEEeEAIMAQsgBCsDgAEhECAEQegAaiAFEAwgBCgCaA0CQbTHwQBBHxACCyEGQQEhBSAEQQE6ANgDIAQgBjYC3AMMCAsgBCAEQeQDahC+BzYC+AICQAJAIARB+AJqEL8HIgoEQEEAIQUDQCAEQcABaiAIIARB+AJqIAUQoQciBhCnAiAELQDAAQ0CIAQtAMEBQQFxDQMgBkGEAU8EQCAGEAALIAogBUEBaiIFRw0ACwtBACEFIARBADsB2AMMBAsgBCgCxAEhCUEBIQUgBEEBOgDYAyAEIAk2AtwDIAZBhAFJDQMgBhAADAMLIAZBhAFPBEAgBhAACyAEKAL4AiIFQYQBSQ0GIAUQAAwGCyAQIAQrA3BlDQUMBAsgECAEKwMwYw0EDAMLIAQoAvgCIgZBhAFJDQQgBhAADAQLIAQoAuQDIQUgBEHYAGogCBAMAkACfyAEKAJYRQRAQZbHwQBBHhACDAELIAQrA2AhECAEQcgAaiAFEAwgBCgCSA0BQbTHwQBBHxACCyEGQQEhBSAEQQE6ANgDIAQgBjYC3AMMBAsgECAEKwNQZg0CDAELIAQoAuQDIQUgBEEYaiAIEAwCQAJ/IAQoAhhFBEBBlsfBAEEeEAIMAQsgBCsDICEQIARBCGogBRAMIAQoAggNAUG0x8EAQR8QAgshBkEBIQUgBEEBOgDYAyAEIAY2AtwDDAMLIBAgBCsDEGQNAQtBACEFIARBADsB2AMMAQsgBCgC5AMiBUGEAU8EQCAFEAALIAQoAqgCIgUEQCAEKAKsAiAFQQEQ+gYLIAlBAWoiCSAPRw0BDAMLCyAEKALkAyIGQYQBTwRAIAYQAAsgBCgCqAIiBkUNACAEKAKsAiAGQQEQ+gYLIAQoAuADIgZBhAFPBEAgBhAACyAFDQIMAwsgBCgC4AMiBUGEAUkNBCAFEAAMBAsgBEHYA2ogCCAFEKcCIAQtANgDQQFxRQ0BCyAAIAQoAtwDNgIEQQEMAQsgBC0A2QNBAXENASAAQQA6AAFBAAs6AAAgCEGEAUkNASAIEAAMAQsgCEGEAU8EQCAIEAALIAQoArwBIgVBhAFPBEAgBRAACyAHBEAgDiAHQQEQ+gYLIAxBAWoiDCANRw0BDAQLCyAEKAK8ASIAQYQBSQ0AIAAQAAsgBwRAIA4gB0EBEPoGCyAEKAK4ASIAQYQBTwRAIAAQAAsgC0GEAUkNAiALEAAMAgsgAEEBOgAAIAAgCzYCBAwBCyAAQYACOwEAIAQoArgBIgBBhAFPBEAgABAACyALQYQBSQ0AIAsQAAsgBEHwA2okAAv+KwIZfwR+IwBB0AFrIgEkAAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AcEEBaw4DCgIBAAsgACAAKQI8NwIIIABBOGogAEHsAGooAgA2AgAgAEEwaiAAQeQAaikCADcCACAAQShqIABB3ABqKQIANwIAIABBIGogAEHUAGopAgA3AgAgAEEYaiAAQcwAaikCADcCACAAQRBqIABBxABqKQIANwIACwJAAkAgAC0AOEEBaw4DCQIBAAsgACgCCCICRQ0LIAIoAgAiA0F/Rg0MIAIgA0EBajYCACAAIAI2AhQgACACQQhqIgs2AhAgACgCDCICRQ0LIAIoAgAiA0F/Rg0MIAIgA0EBajYCACAAQQA6ADQgACACQQRqIg42AiQgACALNgIgIAAgAjYCHCAAIA42AhgMAwsgAC0ANEEBaw4DBgADAQsACyAAKAIkIQ4gACgCICELCyAAQQA6ADAgACAONgIsIAAgCzYCKAwBCyAALQAwDQEgACgCLCEOIAAoAighCwsgCygCFEUNBCALQRhqIA5BBGooAgAiCiAOQQhqKAIAIgIQqwIhGyALKAIIIgRB8ABrIQcgCygCDCIFIBuncSEDIBtCGYhC/wCDQoGChIiQoMCAAX4hHQNAAkAgAyAEaikAACIcIB2FIhtCf4UgG0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIbUEUEQANAIAIgB0EAIBt6p0EDdiADaiAFcWsiCUHwAGxqIgYoAghGBEAgCiAGKAIEIAIQqQVFDQMLIBtCAX0gG4MiG1BFDQALCyAcIBxCAYaDQoCBgoSIkKDAgH+DUEUNBiADIAhBCGoiCGogBXEhAwwBCwsgAUHkAGoiAiAEIAlB8ABsaiIaQRhrEPgEIAFBAjYCpAEgAUHEj8AANgKgASABQgI3AqwBIAFBBTYClAEgAUEFNgKMASABIA42AogBIAEgAUGIAWoiDzYCqAEgASACNgKQASABQfwAaiABQaABaiIQEOICIAFB+ABqIAFBhAFqKAIANgIAIAsoAjggC0F/NgI4IAEgASkCfDcDcA0HIA8gAUHwAGoQ+ARBACEDIAtBQGsiBUEQaiAPEKoCIR0gBSgCBCIEIB2ncSECIB1CGYhC/wCDQoGChIiQoMCAAX4hHiAPKAIIIQogDygCBCEGIAUoAgAhByAQAn8CQANAAkAgAiAHaikAACIcIB6FIhtCf4UgG0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIbUEUEQANAIAogByAbeqdBA3YgAmogBHFBUGxqIglBKGsoAgBGBEAgCUEsaygCACAGIAoQqQVFDQMLIBtCAX0gG4MiG1BFDQALCyAcIBxCAYaDQoCBgoSIkKDAgH+DUEUNAiACIANBCGoiA2ogBHEhAgwBCwsgECAJNgIQIBAgDykCADcCBCAQQQxqIA9BCGooAgA2AgBBFCECQQAMAQsgBSgCCEUEQCAFQRBqIRkjAEEgayIUJAACQAJAAkACQCAFKAIMIgpBAWoiAiAKTwRAIAUoAgQiCSAJQQFqIgxBA3YiA0EHbCAJQQhJGyIRQQF2IAJJBEACQAJAAn8gAiARQQFqIAIgEUsbIgJBCE8EQEF/IAJBA3RBB25BAWtndkEBaiACQf////8BTQ0BGhCzBSAUKAIYGgwJC0EEQQggAkEESRsLIgKtQjB+IhtCIIinDQAgG6ciBCACQQhqIgdqIgMgBEkNACADQfn///8HSQ0BCxCzBSAUKAIIGgwGC0HJzcMALQAAGiADQQgQ7QYiBkUEQCADEMEGIBQoAhAaDAYLIAQgBmpB/wEgBxD5AyEHIAJBAWsiESACQQN2QQdsIAJBCUkbIRUgCkUEQCAFKAIAIQQMBQsgB0EIaiETIAUoAgAiBEEwayEWIAQpAwBCf4VCgIGChIiQoMCAf4MhGyAEIQIgCiEDA0AgG1AEQANAIBJBCGohEiACKQMIIAJBCGohAkKAgYKEiJCgwIB/gyIbQoCBgoSIkKDAgH9RDQALIBtCgIGChIiQoMCAf4UhGwsgByARIBkgFiAbeqdBA3YgEmoiF0FQbGoQqgKnIg1xIghqKQAAQoCBgoSIkKDAgH+DIhxQBEBBCCEGA0AgBiAIaiEIIAZBCGohBiAHIAggEXEiCGopAABCgIGChIiQoMCAf4MiHFANAAsLIBtCAX0gG4MhGyAHIBx6p0EDdiAIaiARcSIGaiwAAEEATgRAIAcpAwBCgIGChIiQoMCAf4N6p0EDdiEGCyAGIAdqIA1BGXYiCDoAACATIAZBCGsgEXFqIAg6AAAgByAGQX9zQTBsaiIGQShqIAQgF0F/c0EwbGoiCEEoaikAADcAACAGQSBqIAhBIGopAAA3AAAgBkEYaiAIQRhqKQAANwAAIAZBEGogCEEQaikAADcAACAGQQhqIAhBCGopAAA3AAAgBiAIKQAANwAAIANBAWsiAw0ACwwEC0EAIQIgBSgCACEEAkAgAyAMQQdxQQBHaiIDRQ0AIANBAUcEQCADQf7///8DcSEIA0AgAiAEaiIHIAcpAwAiG0J/hUIHiEKBgoSIkKDAgAGDIBtC//79+/fv37//AIR8NwMAIAdBCGoiByAHKQMAIhtCf4VCB4hCgYKEiJCgwIABgyAbQv/+/fv379+//wCEfDcDACACQRBqIQIgCEECayIIDQALCyADQQFxRQ0AIAIgBGoiAiACKQMAIhtCf4VCB4hCgYKEiJCgwIABgyAbQv/+/fv379+//wCEfDcDAAsgDEEITwRAIAQgDGogBCkAADcAAAwCCyAEQQhqIAQgDBCwBxogDA0BQQAhEQwCCxCzBSAUKAIAGgwDCyAEQQhqIRIgBEEwayEWIAQhA0EAIQIDQAJAIAQgAiIHaiIVLQAAQYABRw0AIBYgAkFQbGohFyAEIAJBf3NBMGxqIQwCQANAIAkgGSAXEKoCpyITcSIIIQYgBCAIaikAAEKAgYKEiJCgwIB/gyIcUARAQQghAgNAIAIgBmohBiACQQhqIQIgBCAGIAlxIgZqKQAAQoCBgoSIkKDAgH+DIhxQDQALCyAEIBx6p0EDdiAGaiAJcSICaiwAAEEATgRAIAQpAwBCgIGChIiQoMCAf4N6p0EDdiECCyACIAhrIAcgCGtzIAlxQQhJDQEgAiAEaiIGLQAAIAYgE0EZdiIGOgAAIBIgAkEIayAJcWogBjoAAEH/AUcEQEFQIQggBCACQVBsaiETA0AgAyAIaiICLQAAIQ0gAiAIIBNqIgYtAAA6AAAgBiANOgAAIAJBAWoiDS0AACEYIA0gBkEBaiINLQAAOgAAIA0gGDoAACACQQJqIg0tAAAhGCANIAZBAmoiDS0AADoAACANIBg6AAAgAkEDaiICLQAAIQ0gAiAGQQNqIgItAAA6AAAgAiANOgAAIAhBBGoiCA0ACwwBCwsgFUH/AToAACASIAdBCGsgCXFqQf8BOgAAIAQgAkF/c0EwbGoiAkEoaiAMQShqKQAANwAAIAJBIGogDEEgaikAADcAACACQRhqIAxBGGopAAA3AAAgAkEQaiAMQRBqKQAANwAAIAJBCGogDEEIaikAADcAACACIAwpAAA3AAAMAQsgFSATQRl2IgI6AAAgEiAHQQhrIAlxaiACOgAACyAHQQFqIQIgA0EwayEDIAcgCUcNAAsLIAUgESAKazYCCAwBCyAFIBE2AgQgBSAHNgIAIAUgFSAKazYCCCAJRQ0AIAkgDEEwbCICakEJaiIDRQ0AIAQgAmsgA0EIEPoGCyAUQSBqJAALIBAgHTcDCCAQIA8pAgA3AhAgEEEYaiAPQQhqKAIANgIAQRwhAkEBCzYCACACIBBqIAU2AgACQCABKAKgAUUEQCABKAKwASECIAEoAqQBIgNBgICAgHhyQYCAgIB4Rg0BIAEoAqgBIANBARD6BgwBCyABKAK8ASEFIAEpA6gBIRsCfkGg0sMAKAIAQQFGBEBBsNLDACkDACEcQajSwwApAwAMAQtCAiEcQbDSwwBCAjcDAEGg0sMAQgE3AwBCAQshHSABKAK4ASEHIAEpA7ABIR5BqNLDACAdQgF8NwMAIAFBrAFqQeCHwAApAwA3AgAgAUHYh8AAKQMANwKkASAFKAIAIgQgBSgCBCIKIBunIglxIgNqKQAAQoCBgoSIkKDAgH+DIhtQBEBBCCECA0AgAiADaiEDIAJBCGohAiAEIAMgCnEiA2opAABCgIGChIiQoMCAf4MiG1ANAAsLIAQgG3qnQQN2IANqIApxIgJqLAAAIgNBAE4EQCAEIAQpAwBCgIGChIiQoMCAf4N6p0EDdiICai0AACEDCyACIARqIAlBGXYiCToAACAEIAJBCGsgCnFqQQhqIAk6AAAgBSAFKAIIIANBAXFrNgIIIAUgBSgCDEEBajYCDCAEIAJBUGxqIgJBKGsgBzYCACACQTBrIB43AwAgAkEkayIDIAEpAqABNwIAIANBCGogAUGoAWopAgA3AgAgA0EQaiABQbABaigCADYCACACQQhrIBw3AwAgAkEQayAdNwMACyACQSBrIQMCQAJAAkACQCAOLQAcIgoOAwAAAwELIAEgDigCGBABNgKYASABIAEoAmggASgCbBACNgKcASABQUBrIAFBmAFqIAFBnAFqEOMFIAEoAkQhBCABKAJAQQFxBEAgASAENgLEASABQQE2AqQBIAFBrJHAADYCoAEgAUIBNwKsASABIAFBxAFqrUKAgICAMIQ3A8gBIAEgAUHIAWo2AqgBIAFBiAFqIAFBoAFqEOICIAEoAowBIgMgASgCkAEQAiECIAEoAogBIgQEQCADIARBARD6BgsgASgCxAEiA0GEAU8EQCADEAALIAEoApwBIgNBhAFJDRMgAxAADBMLIAEoApwBIgJBhAFPBEAgAhAACyAEEANBAUYNASAEEARBAUYNASABQThqIAQQCwJAAkACQCABKAI4IgVFDQAgASgCPCICQYCAgIB4Rg0AIAEgAjYCkAEgASAFNgKMASABIAI2AogBDAELIAFBKGogBBAMIAEoAihFDQEgASABKwMwOQOgASABQYgBaiABQaABahCrBAsgAUEgaiAaQeAAayABKAKYARABEKQBIAEoAiQhAiABKAIgIQUgCkUEQCAFDRIgAyABQYgBaiICELsDRQRAIAFBoAFqIgUgAhD4BCABQRBqIAMgBSABKAKYARABEIkCIAEoAhBFDRggASgCFCICQYMBTQ0YDBcLQdSPwABBLRACIQIMEgsgBQ0RIAMgAUGIAWoQuwNFBEBBnZDAAEEtEAIhAgwSCyABQaABaiICIAFBiAFqEPgEIAFBGGogAyACIAEoApgBEAEQiQIgASgCGEUNFiABKAIcIgJBgwFLDRUMFgtBypDAAEEmEAIhAgwRC0EBIQNByovAAEEaEAIhAgwVC0HgisAAQSMQAiECDA8LIA4oAhgQASIEEANBAUcNCAwJC0GAkcAAEJUGAAtBxJfAABCVBgALQbSXwAAQlQYAC0G8h8AAEJUGAAtB8IzAAEEUEAIhAkEADA8LEKMHAAsQpAcACwALIAQQBEEBRg0AIAFB2ABqIAQQCwJAAkACQCABKAJYIgpFDQAg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AUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AgwgAiABQQFqIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgIcIAJBIGogCCACEKcBIAItACAhDyACLQAhIRAgAi0AIiERIAItACMhEiACLQAkIRMgAi0AJSEUIAItACYhFSACLQAnIRYgAi0AKCEXIAItACkhGCACLQAqIRkgAi0AKyEaIAItACwhGyACLQAtIRwgAi0ALiEdIAItAC8hHiACLQAwIR8gAi0AMSEgIAItADIhIiACLQAzISMgAi0ANCEkIAItADUhJSACLQA2ISYgAi0ANyEnIAItADghKCACLQA5ISkgAi0AOiEqIAItADshKyACLQA8ISwgAi0APSEtIAItAD4hLiAEIAdqIgEtAAAhLyABQQFqLQAAITAgAUECai0AACExIAFBA2otAAAhMiABQQRqLQAAITMgAUEFai0AACE0IAFBBmotAAAhNSABQQdqLQAAITYgAUEIai0AACE3IAFBCWotAAAhOCABQQpqLQAAITkgAUELai0AACE6IAFBDGotAAAhOyABQQ1qLQAAITwgAUEOai0AACE9IAFBD2otAAAhPiABQRBqLQAAIT8gAUERai0AACFAIAFBEmotAAAhQSABQRNqLQAAIUIgAUEUai0AACFDIAFBFWotAAAhRCABQRZqLQAAIUUgAUEXai0AACFGIAFBGGotAAAhRyABQRlqLQAAIUggAUEaai0AACFJIAFBG2otAAAhSiABQRxqLQAAIUsgAUEdai0AACFMIAFBHmotAAAhTSAEICFqIgNBH2ogAUEfai0AACACLQA/czoAACADQR5qIC4gTXM6AAAgA0EdaiAtIExzOgAAIANBHGogLCBLczoAACADQRtqICsgSnM6AAAgA0EaaiAqIElzOgAAIANBGWogKSBIczoAACADQRhqICggR3M6AAAgA0EXaiAnIEZzOgAAIANBFmogJiBFczoAACADQRVqICUgRHM6AAAgA0EUaiAkIENzOgAAIANBE2ogIyBCczoAACADQRJqICIgQXM6AAAgA0ERaiAgIEBzOgAAIANBEGogHyA/czoAACADQQ9qIB4gPnM6AAAgA0EOaiAdID1zOgAAIANBDWogHCA8czoAACADQQxqIBsgO3M6AAAgA0ELaiAaIDpzOgAAIANBCmogGSA5czoAACADQQlqIBggOHM6AAAgA0EIaiAXIDdzOgAAIANBB2ogFiA2czoAACADQQZqIBUgNXM6AAAgA0EFaiAUIDRzOgAAIANBBGogEyAzczoAACADQQNqIBIgMnM6AAAgA0ECaiARIDFzOgAAIANBAWogECAwczoAACADIA8gL3M6AAAgBEEgaiEEIAYhASAJQQFrIgkNAAsLBEAgACAAKAIUIgFBAWo2AhQgACgCECEGIAApAgQhTiAAKAIMIQAgAkEYakIANwIAIAJCADcCECACIAA2AgggAiBONwIAIAIgASAGaiIAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycjYCDCACQSBqIAggAhCnASACLQAgIQYgAi0AISEDIAItACIhBCACLQAjIQggAi0AJCEJIAItACUhCiACLQAmIQsgAi0AJyEMIAItACghDSACLQApIQ4gAi0AKiEPIAItACshECACLQAsIREgAi0ALSESIAItAC4hEyAHIAVB/v///wBxQQR0IgFqIgAtAAAhBSAALQABIQcgAC0AAiEUIAAtAAMhFSAALQAEIRYgAC0ABSEXIAAtAAYhGCAALQAHIRkgAC0ACCEaIAAtAAkhGyAALQAKIRwgAC0ACyEdIAAtAAwhHiAALQANIR8gAC0ADiEgIAEgIWoiASAALQAPIAItAC9zOgAPIAEgEyAgczoADiABIBIgH3M6AA0gASARIB5zOgAMIAEgECAdczoACyABIA8gHHM6AAogASAOIBtzOgAJIAEgDSAaczoACCABIAwgGXM6AAcgASALIBhzOgAGIAEgCiAXczoABSABIAkgFnM6AAQgASAIIBVzOgADIAEgBCAUczoAAiABIAMgB3M6AAEgASAFIAZzOgAACyACQUBrJAALrikDCX8HfgF8AkACQAJAAkACQAJAAkACQCAALQAAQQFrDgUBAgMEBQALIAEoAgAiACgCACAAKAIIIgJrQQNNBEAgACACQQRBAUEBEJIDIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpB7uqx4wY2AAAMBQsgASgCACEBIAAtAAFFBEAgASgCACABKAIIIgBrQQRNBEAgASAAQQVBAUEBEJIDIAEoAgghAAsgASAAQQVqNgIIIAEoAgQgAGoiAEHorsEAKAAANgAAIABBBGpB7K7BAC0AADoAAEEADwsgASgCACABKAIIIgBrQQNNBEAgASAAQQRBAUEBEJIDIAEoAgghAAsgASAAQQRqNgIIIAEoAgQgAGpB9OTVqwY2AAAMBAsjAEEwayIFJAAgASgCACEDAkACQAJAAkACQAJAIABBCGoiASgCAEEBaw4CAQIAC0EUIQAgASkDCCILQpDOAFQEQCALIQwMBAsDQCAFQQhqIABqIgFBBGsgCyALQpDOAIAiDEKQzgB+faciAkH//wNxQeQAbiIGQQF0QZ61wQBqLwAAOwAAIAFBAmsgAiAGQeQAbGtB//8DcUEBdEGetcEAai8AADsAACAAQQRrIQAgC0L/wdcvViAMIQsNAAsMAwtBFCEAIAEpAwgiDSANQj+HIguFIAt9IgtCkM4AVARAIAshDAwCCwNAIAVBCGogAGoiAUEEayALIAtCkM4AgCIMQpDOAH59pyICQf//A3FB5ABuIgZBAXRBnrXBAGovAAA7AAAgAUECayACIAZB5ABsa0H//wNxQQF0QZ61wQBqLwAAOwAAIABBBGshACALQv/B1y9WIAwhCw0ACwwBCyABKwMIIhK9Qv///////////wCDQv/////////3/wBYBEAgBUEIaiEGIwBBoAJrIgAkACASvSIMQv////////8HgyELIAxCAFMEQCAGQS06AABBASEECwJAAn8CfwJAAkACQCAMQjSIp0H/D3EiAUUgC1BxRQRAIAFBAkkgC0IAUnIhAiALQoCAgICAgIAIhCALIAEbIgtCAoYhDSALQgGDIREgAUG1CGtBzHcgARsiAUEASARAIABBkAJqQcDWwgAgASABQYWiU2xBFHYgAUF/R2siCGoiB0EEdCIBaykDACILIA1CAoQiDhDBBCAAQYACakHI1sIAIAFrKQMAIgwgDhDBBCAAQfABaiAAQZgCaikDACIOIAApA4ACfCIPIABBiAJqKQMAIA4gD1atfCAIIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgEQggUgAEGwAWogCyANIAJBf3OsfCIOEMEEIABBoAFqIAwgDhDBBCAAQZABaiAAQbgBaikDACIOIAApA6ABfCIPIABBqAFqKQMAIA4gD1atfCABEIIFIABB4AFqIAsgDRDBBCAAQdABaiAMIA0QwQQgAEHAAWogAEHoAWopAwAiCyAAKQPQAXwiDCAAQdgBaikDACALIAxWrXwgARCCBSAAKQPAASEOIAApA5ABIQ8gACkD8AEhCyAIQQJPBEAgDUJ/IAithkJ/hYNQRSAIQT9Pcg0EDAULIAsgEX0hCyACIBFQcSEJQQEMBQsgAEGAAWogAUHB6ARsQRJ2IAFBA0trIgdBBHQiCEHgq8IAaikDACILIA1CAoQiDBDBBCAAQfAAaiAIQeirwgBqKQMAIg4gDBDBBCAAQeAAaiAAQYgBaikDACIPIAApA3B8IhAgAEH4AGopAwAgDyAQVq18IAcgAWsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiARCCBSAAQSBqIAsgDSACQX9zrHwiDxDBBCAAQRBqIA4gDxDBBCAAIABBKGopAwAiDyAAKQMQfCIQIABBGGopAwAgDyAQVq18IAEQggUgAEHQAGogCyANEMEEIABBQGsgDiANEMEEIABBMGogAEHYAGopAwAiCyAAKQNAfCIOIABByABqKQMAIAsgDlatfCABEIIFIAApAzAhDiAAKQMAIQ8gACkDYCELIAdBFk8NAkEAIA2nayANQgWAp0F7bEYEQEF/IQIDQCACQQFqIQIgDULNmbPmzJmz5kx+Ig1Cs+bMmbPmzJkzWA0ACyACIAdPDQQMAwsgEVBFBEBBfyECA0AgAkEBaiECIAxCzZmz5syZs+ZMfiIMQrTmzJmz5syZM1QNAAsgCyACIAdPrX0hCwwDCyACrUJ/hSANfCENQX8hAgNAIAJBAWohAiANQs2Zs+bMmbPmTH4iDUKz5syZs+bMmTNYDQALDAELIAQgBmoiAUHogMMALwAAOwAAIAFBAmpB6oDDAC0AADoAACAMQj+Ip0EDaiEBDAULIAIgB0kNAEEBIQlBAAwCC0EAIQECfyALQuQAgCIMIA9C5ACAIhBYBEAgDyEQIAshDCAOIQ1BAAwBCyAOpyAOQuQAgCINp0Gcf2xqQTFLIQFBAgshAiAMQgqAIgwgEEIKgCILVgR/A0AgAkEBaiECIA0iDkIKgCENIAxCCoAiDCALIhBCCoAiC1YNAAsgDqcgDadBdmxqQQRLBSABCyANIBBRcgwCC0EBCyEIQQAhAQJAIAtCCoAiDSAPQgqAIhBYBEBBACECIA8hDCAOIQsMAQtBACECA0AgCUEAIA+nayAQIgynQXZsRnEhCSACQQFqIQIgCCABQf8BcUVxIQggDqcgDkIKgCILp0F2bGohASALIQ4gDCEPIA1CCoAiDSAMQgqAIhBWDQALCwJAAkAgCQRAQQAgDKdrIAxCCoAiDqdBdmxGDQELIAshDQwBCwNAIAJBAWohAiAIIAFB/wFxRXEhCCALpyALQgqAIg2nQXZsaiEBIA0hC0EAIA6nayAOIgxCCoAiDqdBdmxGDQALCyARpyAJQX9zciAMIA1RcUEEQQUgDUIBg1AbIAEgAUH/AXFBBUYbIAEgCBtB/wFxQQRLcgshAQJ/AkACQAJAAn8CQAJAAkAgAiAHaiIHQQBOIAcCf0ERIA0gAa1CAYN8IgtC//+D/qbe4RFWDQAaQRAgC0L//5mm6q/jAVYNABpBDyALQv//6IOx3hZWDQAaQQ4gC0L/v8rzhKMCVg0AGkENIAtC/5+UpY0dVg0AGkEMIAtC/8/bw/QCVg0AGkELIAtC/8evoCVWDQAaQQogC0L/k+vcA1YNABpBCSALQv/B1y9WDQAaQQggC0L/rOIEVg0AGkEHIAtCv4Q9Vg0AGkEGIAtCn40GVg0AGkEFIAtCj84AVg0AGkEEIAtC5wdWDQAaQQMgC0LjAFYNABpBAkEBIAtCCVYbCyIBaiICQRFIcUUEQCACQQFrIgdBEEkNASACQQRqQQVJDQIgAUEBRw0FIAQgBmoiAUHlADoAASABIAunQTBqOgAAIAYgBEECciIEaiEBIAdBAEgNAyAHDAQLIAsgBCAGaiABahC7AiABIAJIBEAgASAGaiAEakEwIAcQ+QMaCyAGIAIgBGoiAWpBruAAOwAAIAFBAmohAQwICyALIAYgASAEakEBaiIBahC7AiAEIAZqIgYgBkEBaiACELAHIAJqQS46AAAMBwsgBCAGaiIJQbDcADsAAEECIAJrIQcgAkEASARAIAlBAmpBMEEDIAcgB0EDTRtBAmsQ+QMaCyALIAYgASAEaiAHaiIBahC7AgwGCyABQS06AAAgAUEBaiEBQQEgAmsLIgJB4wBKDQEgAkEJTARAIAEgAkEwajoAACAHQR92QQFqIARqIQEMBQsgASACQQF0QaD/wgBqLwAAOwAAIAdBH3ZBAnIgBGohAQwECyALIAYgASAEaiIJaiIIQQFqELsCIAQgBmoiASABLQABOgAAIAFBLjoAASAIQeUAOgABIAYgCUECaiIEaiEBIAdBAEgNASAHDAILIAEgAkHkAG4iBkEwajoAACABIAIgBkHkAGxrQQF0QaD/wgBqLwAAOwABIAdBH3ZBA2ogBGohAQwCCyABQS06AAAgAUEBaiEBQQEgAmsLIgJB4wBMBEAgAkEJTARAIAEgAkEwajoAACAHQR92QQFqIARqIQEMAgsgASACQQF0QaD/wgBqLwAAOwAAIAdBH3ZBAnIgBGohAQwBCyABIAJB5ABuIgZBMGo6AAAgASACIAZB5ABsa0EBdEGg/8IAai8AADsAASAHQR92QQNqIARqIQELIABBoAJqJAAgASEAIAAgAygCACADKAIIIgJrSwRAIAMgAiAAQQFBARCSAyADKAIIIQILIAMoAgQgAmogBUEIaiAAEPoCGiADIAAgAmo2AggMAwsgAygCACADKAIIIgBrQQNNBEAgAyAAQQRBAUEBEJIDIAMoAgghAAsgAyAAQQRqNgIIIAMoAgQgAGpB7uqx4wY2AAAMAgsCQCAMQuMAWARAIAynIQIMAQsgAEECayIAIAVBCGpqIAynIgEgAUH//wNxQeQAbiICQeQAbGtB//8DcUEBdEGetcEAai8AADsAAAsCQCACQQpPBEAgAEECayIAIAVBCGpqIAJBAXRBnrXBAGovAAA7AAAMAQsgAEEBayIAIAVBCGpqIAJBMHI6AAALIA1CAFMEQCAAQQFrIgAgBUEIampBLToAAAtBFCAAayIBIAMoAgAgAygCCCICa0sEQCADIAIgAUEBQQEQkgMgAygCCCECCyADKAIEIAJqIAVBCGogAGogARD6AhogAyABIAJqNgIIDAELAkAgDELjAFgEQCAMpyECDAELIABBAmsiACAFQQhqaiAMpyIBIAFB//8DcUHkAG4iAkHkAGxrQf//A3FBAXRBnrXBAGovAAA7AAALAkAgAkEKTwRAIABBAmsiBiAFQQhqaiACQQF0QZ61wQBqLwAAOwAADAELIABBAWsiBiAFQQhqaiACQTByOgAAC0EUIAZrIgEgAygCACADKAIIIgBrSwRAIAMgACABQQFBARCSAyADKAIIIQALIAMoAgQgAGogBUEIaiAGaiABEPoCGiADIAAgAWo2AggLIAVBMGokAEEADwsgASgCACAAKAIIIAAoAgwQ3wEMAgsgACgCDCEDIAAoAgghBiABKAIAIgAoAgAgACgCCCICRgRAIAAgAkEBQQFBARCSAyAAKAIIIQILIAAgAkEBaiIENgIIIAAoAgQgAmpB2wA6AAAgA0UEQCAEIAAoAgBGBEAgACAEQQFBAUEBEJIDIAAoAgghBAsgACAEQQFqNgIIIAAoAgQgBGpB3QA6AAAMAgsgBiABELMBIgINAiAGQRhqIQQgA0EYbEEYayEFA0ACQCABKAIAIQAgBUUNACAAKAIIIgIgACgCAEYEQCAAIAJBAUEBQQEQkgMgACgCCCECCyAAIAJBAWo2AgggACgCBCACakEsOgAAIAVBGGshBSAEIAEQswEhAiAEQRhqIQQgAkUNAQwECwsgACgCCCIBIAAoAgBGBEAgACABQQFBAUEBEJIDIAAoAgghAQsgACgCBCABakH7rsEAQQEQ+gIaIAAgAUEBajYCCAwBCyAAKAIMIQkgASgCACICKAIAIAIoAggiBUYEQCACIAVBAUEBQQEQkgMgAigCCCEFCyACIAVBAWoiBDYCCCACKAIEIAVqQfsAOgAAIAlFBEAgBCACKAIARgRAIAIgBEEBQQFBARCSAyACKAIIIQQLIAIgBEEBajYCCCACKAIEIARqQf0AOgAADAELAkACQCAAKAIEIgJFDQACQCAAKAIIIgNFDQACQCADQQdxIgVFBEAgAyEADAELIAMhAANAIABBAWshACACKAKYAyECIAVBAWsiBQ0ACwsgA0EISQ0AA0AgAigCmAMoApgDKAKYAygCmAMoApgDKAKYAygCmAMoApgDIQIgAEEIayIADQALCwJAIAIvAZIDBEBBASEHQQAhBCACIQAMAQtBACEFQQEhBgNAIAYhAyACKAKIAiIARQ0DIANBAWohBiAFQQFqIQUgAi8BkAMhBCAEIAAiAi8BkgNPDQALIARBAWohByAFRQ0AIAVBAWsgACAHQQJ0akGYA2ohAiAFQQdxBEAgA0EHcSEHQQAhBgNAIAIoAgAiA0GYA2ohAiAHIAZBAWoiBkcNAAsgBSAGayEFC0EAIQdBB0kEQCAAIQIgAyEADAELA0AgAigCACgCmAMoApgDKAKYAygCmAMoApgDKAKYAygCmAMiA0GYA2ohAiAFQQhrIgUNAAsgACECIAMhAAsgASgCACACIARBDGxqIgNBkAJqKAIAIANBlAJqKAIAEN8BIAEoAgAiAygCACADKAIIIgVGBEAgAyAFQQFBAUEBEJIDIAMoAgghBQsgAyAFQQFqNgIIIAMoAgQgBWpBOjoAACACIARBGGxqIAEQswEiAg0DIAlBAWsiCUUNAANAAkAgAC8BkgMgB00EQEEAIQRBASEGA0AgBiEDIAAoAogCIgJFDQUgA0EBaiEGIARBAWohBCAALwGQAyEFIAUgAiIALwGSA08NAAsgBUEBaiEHIARFDQEgACAHQQJ0akGYA2ohBiAEQQdxBH8gA0EHcSEHQQAhAwNAIAYoAgAiAEGYA2ohBiAHIANBAWoiA0cNAAsgBCADawUgBAshA0EAIQcgBEEBa0EHSQ0BA0AgBigCACgCmAMoApgDKAKYAygCmAMoApgDKAKYAygCmAMiAEGYA2ohBiADQQhrIgMNAAsMAQsgACECIAciBUEBaiEHCyACIAVBDGxqIgNBlAJqKAIAIQYgA0GQAmooAgAhCCABKAIAIgMoAgAgAygCCCIERgRAIAMgBEEBQQFBARCSAyADKAIIIQQLIAVBGGwhCiADIARBAWo2AgggAygCBCAEakEsOgAAIAEoAgAgCCAGEN8BIAEoAgAiAygCACADKAIIIgVGBEAgAyAFQQFBAUEBEJIDIAMoAgghBQsgAyAFQQFqNgIIIAMoAgQgBWpBOjoAACACIApqIAEQswEiAg0EIAlBAWsiCQ0ACwsgASgCACIAKAIAIAAoAggiAkYEQCAAIAJBAUEBQQEQkgMgACgCCCECCyAAIAJBAWo2AgggACgCBCACakH9ADoAAAwBC0GsssEAEIgHAAtBACECCyACC4kOAQ9/IwBBkAZrIgUkACABKAIMEAEhCyABKAIQEAEhDCAFQegCaiIGIAEQ+AQgBSgC7AIhDyAFKALoAiENIAUgBDYCECAFIAQQASIBNgIUIAUgARABNgLQBSAFQaSzwQBBCxACNgJIIAYgBUHQBWogBUHIAGoQuAUCQAJAAkAgBS0A6AJFBEAgBSgCSCIBQYQBTwRAIAEQAAsgBSgC0AUiAUGEAU8EQCABEAALIAVBCGogBUEUahDvBSAFKAIMIQEgBSgCCEUNASABIQYMAgsgBSgC7AIhBiAFKAJIIgFBhAFPBEAgARAACyAFKALQBSIBQYQBSQ0BIAEQAAwBCyAFIAEQCwJAAkACQAJAAkAgBSgCACIHRQ0AIAUoAgQiBEGAgICAeEYNACAFQQA2AvACIAUgBDYC7AIgBSAHNgLoAiAFQcgAaiAFQegCahCoAgJAAkACQAJAAkAgBS0ASCIGQQZHBEAgBUEoaiAFQdgAaikDADcDACAFIAUtAEs6ABsgBSAFLwBJOwAZIAUgBSkDUDcDICAFIAUoAkw2AhwgBSAGOgAYIAQEQCAHIARBARD6BgsgBUEwaiIGIAVBGGoQtwFByc3DAC0AABpBgAFBARDtBiIERQ0HIAVBADYC8AIgBSAENgLsAiAFQYABNgLoAiAFIAVB6AJqNgJIIAYgBUHIAGoQswEiBwRAIAUoAugCIgRFDQkgBSgC7AIgBEEBEPoGDAkLIAUoAuwCIQcgBSgC6AIiCUGAgICAeEYNCCAFKALwAiEEIAVBmAJqQQBByQAQ+QMaIAVByABqIgZBAEHIARD5AxogBUEYNgKQAiAGIAcgBBCzAiAFQegCaiIOIAZBoAIQ+gIaIAVBiAZqIgRCADcDACAFQYAGaiIGQgA3AwAgBUH4BWoiCEIANwMAIAVB8AVqIgpCADcDACAFQegFaiIQQgA3AwAgBUHgBWoiEUIANwMAIAVB2AVqIhJCADcDACAFQgA3A9AFIA4gBUG4BGogBUHQBWoiExC5AyAFQcAFaiAEKQMANwMAIAVBuAVqIAYpAwA3AwAgBUGwBWogCCkDADcDACAFQagFaiAKKQMANwMAIAVBoAVqIBApAwA3AwAgBUGYBWogESkDADcDACAFQZAFaiASKQMANwMAIAUgBSkD0AU3A4gFIAVB5KDBADYC9AIgBSAFQcgFajYC8AIgBUGAgMQANgLoAiAFIAVBiAVqNgLsAiATIA4QnAIgBUGks8EAQQsQAiIENgLMBSAFKALQBSEGIAUgBSgC1AUiCiAFKALYBRACIgg2AogFIAYEQCAKIAZBARD6BgsgBUHoAmogBUEQaiAFQcwFaiAFQYgFahCtBSAFLQDoAg0FIAhBhAFPBEAgCBAAIAUoAswFIQQLIARBhAFPBEAgBBAACyAFKAIQIQYgCQRAIAcgCUEBEPoGCyAFLQAwDgUEBAQCAwELIAUgBSgCTDYCMCAFQQE2AuwCIAVB6LPBADYC6AIgBUIBNwL0AiAFIAVBMGqtQoCAgIDwJIQ3A4gFIAUgBUGIBWo2AvACIAVB0AVqIAVB6AJqEOICIAUoAtQFIgkgBSgC2AUQAiEGIAUoAtAFIggEQCAJIAhBARD6BgsgBSgCMBDCBCAERQ0JIAcgBEEBEPoGDAkLIAVBMGpBBHIQ+wEMAgsgBSgCNCIERQ0BIAUoAjggBEEBEPoGDAELIAVBMGpBBHIQuQQgBSgCNCIERQ0AIAUoAjggBEEYbEEIEPoGCyABQYQBTwRAIAEQAAsgBSgCFCIBQYQBTwRAIAEQAAtBACEEDAcLIAUoAuwCIQYgCEGEAU8EQCAIEAAgBSgCzAUhBAsgBEGEAU8EQCAEEAALIAlFDQMgByAJQQEQ+gYMAwtBsLPBABCIBwALQQFBgAEQ2QYACyAFIAc2AogFIAVBATYC7AIgBUGQtMEANgLoAiAFQgE3AvQCIAUgBUGIBWqtQoCAgIDwJIQ3A9AFIAUgBUHQBWo2AvACIAVByABqIAVB6AJqEOICIAUoAkwiBCAFKAJQEAIhBiAFKAJIIgcEQCAEIAdBARD6BgsgBSgCiAUQwgQLAkACQAJAIAUtADAOBQMDAwECAAsgBUEwakEEchD7AQwCCyAFKAI0IgRFDQEgBSgCOCAEQQEQ+gYMAQsgBUEwakEEchC5BCAFKAI0IgRFDQAgBSgCOCAEQRhsQQgQ+gYLIAFBhAFJDQAgARAACyAFKAIUIgFBhAFPBEAgARAAC0EBIQQgBSgCECIBQYQBSQ0AIAEQAAsgC0GEAU8EQCALEAALIAxBhAFPBEAgDBAACyANBEAgDyANQQEQ+gYLIANBhAFPBEAgAxAACyACQYQBTwRAIAIQAAsgACAGNgIEIAAgBDYCACAFQZAGaiQAC4MPAQl/IwBB4ABrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQDwAUEBaw4DDAIBAAsgAEEIaiAAQfwAakH0ABD6AhoLAkACQAJAAkACQAJAAkAgAC0AeEEBaw4DEAcBAAsgACgCCCIERQ0RIAQoAgAiA0F/Rg0SIAQgA0EBajYCACAAIAQ2AhQgACAEQQhqIgM2AhAgAEEAOgB0IAAgAzYCGCAAIAAoAgwiBDYCHAwBCwJAIAAtAHRBAWsOAxcGAgALIAAoAhwhBCAAKAIYIQMLIANB1ABqKAIAIQUgA0HYAGooAgAhBiAAQQA6AEEgACADNgI8IAAgBDYCMCAAIAY2AiwgACAFNgIoIABBIGohCSAAQcEAaiEIDAELIABBIGohCSAAQcEAaiEIAkAgAC0AQUEBaw4EEQQCAwALIAAoAjAhBCAAKAIsIQYgACgCKCEFIAAoAjwhAwsgACADNgI0IABBADoAQCAAIAQ2AjggACAGNgIkIAAgBTYCICAEEAEhBCAAQQA6AGwgACAENgJQIAAgBjYCTCAAIAU2AkggACADNgJECyACQSBqIABBxABqIgUgARCPA0ECIQMgAigCICIGQQJGDQkgAigCJCEEAkACQAJAIAAtAGwOBAACAgECCyAAKAJQIgNBhAFJDQEgAxAADAELAkACQCAALQBoDgQAAgIBAgsgACgCYCIDQYQBSQ0BIAMQAAwBCyAAQeQAahDEAwsCQAJAAkAgBg0AIAAgBDYCRCAAQQE6AEAgAkEYaiAAKAI0IAAoAiAgACgCJBC2AiACKAIcIQQgAigCGEUEQCAFKAIAEARBAUYNCkEAIQUgACgCJCIDQQBIDRMgACgCICEHIAMNAkEBIQYMAwsgBSgCACIBQYQBSQ0AIAEQAAsgAEEAOgBAQQEhAyAAKAI4IgVBhAFJDRcMFgtByc3DAC0AABpBASEFIANBARDtBiIGRQ0QCyAGIAcgAxD6AiEGIABBADoAQEHJzcMALQAAGiAAKAJEIQdBDEEEEO0GIgVFDRAgBSAEQcgAahD4BCAAQQA6AHAgAEECOgBkIAAgBzYCYCAAQQE2AlwgACAFNgJYIABBATYCVCAAIAM2AlAgACAGNgJMIAAgAzYCSCAAIAAoAjRBQGsiAzYCaCAAQfAAaiEFDAMLIABB8ABqIQUgAC0AcEEBaw4DBAADAQsACyAAKAJoIQMLIAJB2ABqIgQgAEHgAGopAgA3AwAgAkHQAGoiBiAAQdgAaikCADcDACACQcgAaiIHIABB0ABqKQIANwMAIAIgACkCSDcDQCADKAIAIQpByc3DAC0AABpBJEEEEO0GIgNFDQ0gA0EANgIAIAMgAikDQDcCBCADQQxqIAcpAwA3AgAgA0EUaiAGKQMANwIAIANBHGogBCkDADcCACAAIAogAxAHEJECNgJsCyACQRBqIABB7ABqIgYgARCKBEECIQMgAigCECIBQQJGDQMgAigCFCEEIAYQxANBASEDIAVBAToAACABQQFxDQJBACEDDA4LQZSWwAAQlQYAC0EBIQNB1pHAAEEZEAIhBAwMCyACQUBrIgEgBBDjAyABEPsCIQQMCwsgBUEDOgAAIAhBBDoAAAwNCyAIQQM6AAAMDAtBsJTAABCVBgALQbyHwAAQlQYACxCjBwALEKQHAAtB1JPAABCVBgALIAUgAxDZBgALQQRBDBCsBwALQQRBJBCsBwALQcyVwAAQlQYACwJAIAAtAEBFDQAgACgCRCIBQYQBSQ0AIAEQAAsgAEEAOgBAIAAoAjgiBUGDAU0NAQsgBRAACyAIQQE6AAALAkACQAJAAkAgA0ECRwRAIAkQqAMgA0UEQCAAQQE6AHQgAEEUaigCACIBIAEoAgBBAWs2AgAgAEEBOgB4IAIgBDYCLCACQYABNgJAIAIgACACQUBrIAJBLGoQ1AUgAigCAEEBcUUNAkG6o8AAQRUQogcACyACIAQ2AiggAkEBNgJEIAJB+JXAADYCQCACQgE3AkwgAkEDNgI8IAIgAkE4ajYCSCACIAJBKGo2AjggAkEsaiACQUBrEOICIAIoAjAiASACKAI0EMAHIQQgAigCLCIFBEAgASAFQQEQ+gYLIAIoAigiAUGEAU8EQCABEAALIABBAToAdCAAQRRqKAIAIgEgASgCAEEBazYCACAAQQE6AHggAiAENgIsIAJBgAE2AkAgAkEIaiAAQQRqIAJBQGsgAkEsahDUBSACKAIIQQFxRQ0CQbqjwABBFRCiBwALQQMhBCAAQQM6AHggAEEDOgB0DAMLAkAgAigCBCIBQYQBSQ0AIAEQACACKAJAIgFBhAFJDQAgARAACyACKAIsIgFBhAFJDQEgARAADAELAkAgAigCDCIBQYQBSQ0AIAEQACACKAJAIgFBhAFJDQAgARAACyACKAIsIgFBhAFJDQAgARAACyAAKAIAIgFBhAFPBEAgARAAC0EBIQQgACgCBCIBQYQBSQ0AIAEQAAsgACAEOgDwASACQeAAaiQAIANBAkYLsgwCEn8CfiMAQSBrIg0kAAJAAkACQAJAIAAoAgwiDkEBaiICIA5PBEAgACgCBCIJIAlBAWoiCkEDdiIHQQdsIAlBCEkbIgtBAXYgAkkEQAJAAkACfyACIAtBAWogAiALSxsiAkEITwRAQX8gAkEDdEEHbkEBa2d2QQFqIAJB/////wFNDQEaELMFIA0oAhgaDAkLQQRBCCACQQRJGwsiAq1C8AB+IhRCIIinDQAgFKciAyACQQhqIgVqIgcgA0kNACAHQfn///8HSQ0BCxCzBSANKAIIGgwGC0HJzcMALQAAGiAHQQgQ7QYiBEUEQCAHEMEGIA0oAhAaDAYLIAMgBGpB/wEgBRD5AyEFIAJBAWsiCyACQQN2QQdsIAJBCUkbIQwgDkUEQCAAKAIAIQMMBQsgBUEIaiEQIAAoAgAiA0HwAGshESADKQMAQn+FQoCBgoSIkKDAgH+DIRQgAyECIA4hBwNAIBRQBEADQCAPQQhqIQ8gAikDCCACQQhqIQJCgIGChIiQoMCAf4MiFEKAgYKEiJCgwIB/UQ0ACyAUQoCBgoSIkKDAgH+FIRQLIAUgCyABIBEgFHqnQQN2IA9qIhJBkH9sahCqAqciCHEiBmopAABCgIGChIiQoMCAf4MiFVAEQEEIIQQDQCAEIAZqIQYgBEEIaiEEIAUgBiALcSIGaikAAEKAgYKEiJCgwIB/gyIVUA0ACwsgFEIBfSAUgyEUIAUgFXqnQQN2IAZqIAtxIgRqLAAAQQBOBEAgBSkDAEKAgYKEiJCgwIB/g3qnQQN2IQQLIAQgBWogCEEZdiIGOgAAIBAgBEEIayALcWogBjoAACAFIARBf3NB8ABsaiADIBJBf3NB8ABsakHwABD6AhogB0EBayIHDQALDAQLQQAhAiAAKAIAIQMCQCAHIApBB3FBAEdqIgdFDQAgB0EBRwRAIAdB/v///wNxIQYDQCACIANqIgUgBSkDACIUQn+FQgeIQoGChIiQoMCAAYMgFEL//v379+/fv/8AhHw3AwAgBUEIaiIFIAUpAwAiFEJ/hUIHiEKBgoSIkKDAgAGDIBRC//79+/fv37//AIR8NwMAIAJBEGohAiAGQQJrIgYNAAsLIAdBAXFFDQAgAiADaiICIAIpAwAiFEJ/hUIHiEKBgoSIkKDAgAGDIBRC//79+/fv37//AIR8NwMACyAKQQhPBEAgAyAKaiADKQAANwAADAILIANBCGogAyAKELAHGiAKDQFBACELDAILELMFIA0oAgAaDAMLIANBCGohCiADQfAAayEQIAMhB0EAIQIDQAJAIAMgAiIFaiIPLQAAQYABRw0AIBAgAkGQf2xqIREgAyACQX9zQfAAbGohEgJAA0AgCSABIBEQqgKnIgxxIgYhBCADIAZqKQAAQoCBgoSIkKDAgH+DIhVQBEBBCCECA0AgAiAEaiEEIAJBCGohAiADIAQgCXEiBGopAABCgIGChIiQoMCAf4MiFVANAAsLIAMgFXqnQQN2IARqIAlxIgJqLAAAQQBOBEAgAykDAEKAgYKEiJCgwIB/g3qnQQN2IQILIAIgBmsgBSAGa3MgCXFBCEkNASACIANqIgQtAAAgBCAMQRl2IgQ6AAAgCiACQQhrIAlxaiAEOgAAQf8BRwRAQZB/IQYgAyACQZB/bGohDANAIAYgB2oiAi0AACEIIAIgBiAMaiIELQAAOgAAIAQgCDoAACACQQFqIggtAAAhEyAIIARBAWoiCC0AADoAACAIIBM6AAAgAkECaiIILQAAIRMgCCAEQQJqIggtAAA6AAAgCCATOgAAIAJBA2oiAi0AACEIIAIgBEEDaiICLQAAOgAAIAIgCDoAACAGQQRqIgYNAAsMAQsLIA9B/wE6AAAgCiAFQQhrIAlxakH/AToAACADIAJBf3NB8ABsaiASQfAAEPoCGgwBCyAPIAxBGXYiAjoAACAKIAVBCGsgCXFqIAI6AAALIAVBAWohAiAHQfAAayEHIAUgCUcNAAsLIAAgCyAOazYCCAwBCyAAIAs2AgQgACAFNgIAIAAgDCAOazYCCCAJRQ0AIAkgCkHwAGwiAGpBCWoiAUUNACADIABrIAFBCBD6BgsgDUEgaiQAC4wZAhR/AX4jAEHAAWsiAiQAAkACQAJAAkACQAJAAkACQCABLQAAQQRrDgIAAQILIAEoAgQhBiABKAIIIgMhByABKAIMIgEEQCADIAFBGGwiBGohByADIQEDQCACQbABaiABQRBqIggpAwA3AwAgAkGoAWogAUEIaiIFKQMANwMAIAIgASkDADcDoAEgAkGIAWogAkGgAWoQtwEgCCACQZgBaikDADcDACAFIAJBkAFqKQMANwMAIAEgAikDiAE3AwAgAUEYaiEBIARBGGsiBA0ACwsgACADNgIIIAAgBjYCBCAAQQQ6AAAgACAHIANrQRhuNgIMDAYLIAJBEGogAUEMaigCACIDNgIAIAIgASkCBCIWNwMIIAJBADYCRCACQQA2AjQgAiAWpyIQNgJIIAIgEDYCOCACIANBACAQGzYCUCACIAIoAgwiEzYCTCACIBBBAEciATYCQCACIBM2AjwgAiABNgIwIAJBADYCICACQQA2AhggAkEkaiEOIwBBMGsiByQAAkACQAJAAkACQAJAAn9BACACQTBqIgoiBSgCICIBRQ0AGiAFIAFBAWs2AiACQAJAAkACQCAFKAIAIgFBAUcNACAFKAIEDQAgBSgCCCEDAkAgBSgCDCIERQ0AAkAgBEEHcSIGRQRAIAQhAQwBCyAEIQEDQCABQQFrIQEgAygCmAMhAyAGQQFrIgYNAAsLIARBCEkNAANAIAMoApgDKAKYAygCmAMoApgDKAKYAygCmAMoApgDKAKYAyEDIAFBCGsiAQ0ACwsgBUIANwIIIAUgAzYCBCAFQQE2AgAMAQsgAUUNAQsgBSgCCCEEAkAgBSgCDCIMIAUoAgQiAS8BkgNJBEAgASEDDAELA0AgASgCiAIiA0UNAyAEQQFqIQQgAS8BkAMhDCAMIAMiAS8BkgNPDQALCyAMQQFqIQkCQCAERQRAIAMhCAwBCyADIAlBAnRqQZgDaiEBAkAgBEEHcSIJRQRAIAQhBgwBCyAEIQYDQCAGQQFrIQYgASgCACIIQZgDaiEBIAlBAWsiCQ0ACwtBACEJIARBCEkNAANAIAEoAgAoApgDKAKYAygCmAMoApgDKAKYAygCmAMoApgDIghBmANqIQEgBkEIayIGDQALCyAFIAk2AgwgBUEANgIIIAUgCDYCBCADIAxBDGxqQYwCagwCC0HopsAAEIgHAAtB2KbAABCIBwALIgEEQCAHQRhqIAEQ+AQgBygCGEGAgICAeEcNAQsgDkEANgIIIA5CgICAgMAANwIADAELQQQgCigCIEEBaiIBQX8gARsiASABQQRNGyIErUIMfiIWpyEBIBZCIIinIAFB/P///wdLcg0BAkAgAUUEQEEEIQlBACEEDAELQcnNwwAtAAAaQQQhCyABQQQQ7QYiCUUNAgsgCSAHKQIYNwIAIAlBCGogB0EgaigCADYCACAHQQE2AhQgByAJNgIQIAcgBDYCDAJAIAooAiAiDEUNACAKKAIAIREgCigCBCEFIAooAgghASAKKAIMIQhBASEKA0AgEUEBcUUNBAJAIAUEQCAIIQsgASEDIAUhAQwBC0EBIRFBACELAkAgCEUNACAIIgZBB3EiBARAA0AgBkEBayEGIAEoApgDIQEgBEEBayIEDQALCyAIQQhJDQADQCABKAKYAygCmAMoApgDKAKYAygCmAMoApgDKAKYAygCmAMhASAGQQhrIgYNAAsLQQAhAwsCQCABLwGSAyALSwRAIAEhBgwBCwNAIAEoAogCIgZFDQcgA0EBaiEDIAEvAZADIQsgCyAGIgEvAZIDTw0ACwsgC0EBaiEIAkAgA0UEQCAGIQUMAQsgBiAIQQJ0akGYA2ohAQJAIANBB3EiCEUEQCADIQQMAQsgAyEEA0AgBEEBayEEIAEoAgAiBUGYA2ohASAIQQFrIggNAAsLQQAhCCADQQhJDQADQCABKAIAKAKYAygCmAMoApgDKAKYAygCmAMoApgDKAKYAyIFQZgDaiEBIARBCGsiBA0ACwsgB0EkaiAGIAtBDGxqQYwCahD4BCAHKAIkQYCAgIB4Rg0BIAxBAWshDCAHKAIMIApGBEAgB0EMaiAKIAxBAWoiAUF/IAEbQQRBDBCSAyAHKAIQIQkLIAkgCkEMbGoiASAHKQIkNwIAIAFBCGogB0EsaigCADYCACAHIApBAWoiCjYCFEEAIQEgDA0ACwsgDiAHKQIMNwIAIA5BCGogB0EUaigCADYCAAsgB0EwaiQADAMLIAsgARDZBgALQeimwAAQiAcAC0HYpsAAEIgHAAsgAigCKCEGAkAgAigCLCIIQQJPBEAgCEEVTwRAIAJBvwFqIQ1BACEFIwBBgCBrIgskAAJAAkACQCAIQQF2IgFBqtgoIAggCEGq2ChPGyIDIAEgA0sbIgFB1gJPBEAgAa1CDH4iFqchAyAWQiCIpyADQfz///8HS3INAgJAIANFBEBBACEBQQQhBAwBC0HJzcMALQAAGkEEIQUgA0EEEO0GIgRFDQMLIAYgCCAEIAEgCEHBAEkgDRC4ASAEIAFBDGxBBBD6BgwBCyAGIAggC0HVAiAIQcEASSANELgBCyALQYAgaiQADAELIAUgAxDZBgALIAYgCEEMbGohCSACKAIkIQoMAgsgBkEMaiEBIAYgCEEMbGohCQNAIAFBBGooAgAiCyABQQhrKAIAIAFBCGooAgAiAyABQQRrKAIAIgQgAyAESRsQqQUiBSADIARrIAUbQQBIBEAgASgCACEKIA0hBAJ/A0AgBCAGaiIFQQxqIAUpAgA3AgAgBUEUaiAFQQhqIg4oAgA2AgAgBiAERQ0BGiAEQQxrIQQgCyAFQQhrKAIAIAMgBUEEaygCACIHIAMgB0kbEKkFIgwgAyAHayAMG0EASA0ACyAEIAZqQQxqCyAKNgIAIA4gAzYCACAFQQRqIAs2AgALIA1BDGohDSABQQxqIgEgCUcNAAsLIAYgCEEMbGohCSACKAIkIQogBiEDIAhFDQQLIBBFDQEgAkHgAGpBBHIhESACQagBaiEUIAJBoAFqQQRyIQ4gBiEBA0AgAUEMaiEDIAEoAgAiBEGAgICAeEYNBCACIAEpAgQ3AlggAiAENgJUIAJB/ABqIAJB1ABqEPgEIAIoAlwhDCACKAJYIRUgEyEFIBAhDQNAIA1BGGshByANQYwCaiEBIA0vAZIDIgtBDGwhBEF/IQgCQAJAA0AgBEUEQCALIQgMAgsgAUEIaiEPIAFBBGohEiAIQQFqIQggB0EYaiEHIARBDGshBCABQQxqIQFBfyAVIBIoAgAgDCAPKAIAIg8gDCAPSRsQqQUiEiAMIA9rIBIbIg9BAEcgD0EASBsiD0EBRg0ACyAPQf8BcUUNAQsgBUUNBSAFQQFrIQUgDSAIQQJ0akGYA2ooAgAhDQwBCwsCQAJAAkACQAJAAkACQAJAIActAABBAWsOBQECAwQFAAsgAkEAOgCgAQwFCyACQQE6AKABIAIgB0EBai0AADoAoQEMBAsgFEEIaiAHQRBqKQMANwMAIBQgB0EIaikDADcDACACQQI6AKABDAMLIA4gB0EEahD4BCACQQM6AKABDAILIA4gB0EIaigCACAHQQxqKAIAEJkCIAJBBDoAoAEMAQsCQCAHQQxqKAIARQRAIAJBADYCrAEgAkEANgKkAQwBCyAHQQRqKAIAIgFFDQIgDiABIAdBCGooAgAQwQELIAJBBToAoAELIAJBiAFqIgEgAkGgAWoQtwEgAkHgAGogAkEYaiACQfwAaiABEOYBAkACQAJAAkAgAi0AYA4HAwMDAQIAAwALIBEQ+wEMAgsgAigCZCIBRQ0BIAIoAmggAUEBEPoGDAELIBEQuQQgAigCZCIBRQ0AIAIoAmggAUEYbEEIEPoGCyACKAJUIgEEQCACKAJYIAFBARD6BgsgAyIBIAlGDQYMAQsLQYCowAAQiAcACyAAIAEpAwA3AwAgAEEQaiABQRBqKQMANwMAIABBCGogAUEIaikDADcDAAwECyAGKAIAIgFBgICAgHhGBEAgBkEMaiEDDAILIAIgBikCBDcCWCACIAE2AlQgAkH8AGogAkHUAGoQ+AQLQdiywQAQiAcACyAJIANrQQxuIQEgAyAJRg0AA0AgAygCACIEBEAgA0EEaigCACAEQQEQ+gYLIANBDGohAyABQQFrIgENAAsLIAoEQCAGIApBDGxBBBD6BgsgACACKQIYNwIEIABBBToAACAAQQxqIAJBIGooAgA2AgAgAkEIahD7AQsgAkHAAWokAAu9CwITfwN+IwBB0AJrIhIkAAJAIAFBAkkNACABrSIZQv//////////P3wgGYAhGgJ/IAFBgSBPBEBBAUEgIAFBAXJna0EBdiIGdCABIAZ2akEBdgwBC0HAACABIAFBAXZrIgYgBkHAAE8bCyETIABBDGshFyAAQSBqIRZBASEJA0BBACEUQQEhCyABIBBLBEAgACAQQQxsIgxqIQggEK0iGwJ/AkAgASAQayILIBNJDQACQCALQQJJBEAgCyENDAELAn8CQAJAAkAgCEEQaigCACIHIAhBBGooAgAgCEEUaigCACIGIAhBCGooAgAiESAGIBFJGxCpBSINIAYgEWsgDRtBAEgiDkUEQEECIQ0gC0ECRg0FIAwgFmohDwNAIA9BBGsoAgAiESAHIA8oAgAiByAGIAYgB0sbEKkFIgwgByAGayAMG0EASA0DIA9BDGohDyAHIQYgESEHIAsgDUEBaiINRw0ACwwBCyALQQJGDQIgDCAWaiEPQQIhDQNAIA9BBGsoAgAiESAHIA8oAgAiByAGIAYgB0sbEKkFIgwgByAGayAMG0EATg0CIA9BDGohDyAHIQYgESEHIAsgDUEBaiINRw0ACwsgCyENCyANIBNJDQMgDkUNAiANQQJJBEBBASENDAMLIAggDUEMbGogDUEBdiILQXRsagwBC0ECIQ1BASELIAhBDGoLIAtBDGxqQQxrIQYDQCAIKAIAIQcgCCAGKAIANgIAIAYgBzYCACAIQQRqIgcpAgAhGSAHIAZBBGoiBykCADcCACAHIBk3AgAgBkEMayEGIAhBDGohCCALQQFrIgsNAAsLIA1BAXRBAXIMAQsgEyALIAsgE0sbQQF0IARFDQAaIAhBICALIAtBIE8bIgYgAiADQQBBACAFEKUBIAZBAXRBAXILIgtBAXYgEGqtfCAafiAQIAlBAXZrrSAbfCAafoV5pyEUCwJAAkAgCkECSQ0AIBcgEEEMbCIGaiENIAAgBmohGANAIApBAWsiESASQY4CamotAAAgFEkNAQJ/AkACQAJAIAMgEkEEaiARQQJ0aigCACIGQQF2IgogCUEBdiIHaiIVTyAGIAlyQQFxRXFFBEAgACAQIBVrQQxsaiEIIAZBAXFFBEAgCCAKIAIgAyAKQQFyZ0EBdEE+c0EAIAUQpQELIAlBAXFFBEAgCCAKQQxsaiAHIAIgAyAHQQFyZ0EBdEE+c0EAIAUQpQELIAlBAkkgBkECSXINAyAHIAogByAKSSIMIgYbIg4gA0sNAyACIAggCkEMbGoiCSAIIAYbIA5BDGwiBhD6AiIHIAZqIQogDARAIA0hBgNAIAYgCkEMayIPIAlBDGsiDiAKQQhrKAIAIAlBCGsoAgAgCkEEaygCACIMIAlBBGsoAgAiCiAKIAxLGxCpBSIJIAwgCmsgCRsiCkEATiIMGyIJKQIANwIAIAZBCGogCUEIaigCADYCACAPIApBH3ZBDGxqIQogDiAMQQxsaiIJIAhGDQMgBkEMayEGIAcgCkcNAAsMAgsgDkUEQCAHIQYMAwsgByEGA0AgCCAGIAkgCUEEaigCACAGQQRqKAIAIAlBCGooAgAiDiAGQQhqKAIAIgwgDCAOSxsQqQUiByAOIAxrIAcbIg5BAE4iDBsiBykCADcCACAIQQhqIAdBCGooAgA2AgAgCEEMaiEIIAYgDEEMbGoiBiAKRg0DIAkgDkEfdkEMbGoiCSAYRw0ACwwCCyAVQQF0DAMLIAchBiAJIQgLIAggBiAKIAZrEPoCGgsgFUEBdEEBcgshCUEBIQggESIKQQFLDQALDAELIAohCAsgEkGOAmogCGogFDoAACASQQRqIAhBAnRqIAk2AgAgASAQSwRAIAhBAWohCiALQQF2IBBqIRAgCyEJDAELCyAJQQFxDQAgACABIAIgAyABQQFyZ0EBdEE+c0EAIAUQpQELIBJB0AJqJAALpg4CDH8DfiMAQfABayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQDIBkEBaw4DEwIBAAsgACAAQaADakGgAxD6AhoLAkACQAJAAkAgAC0AmANBAWsOAxIEAQALIAAoAogDIgNFDRggAygCACIEQX9GDRkgAyAEQQFqNgIAIAAgAzYCBCAAIANBCGoiBjYCACAAQQA6AIADIAAgBjYC+AIgACAAKAKQAyIDNgIMIAAgACgCjAMiBzYCCCAAIAAoApQDIgg2AvwCIAAgAzYCFCAAIAc2AhAMAQsCQCAALQCAA0EBaw4DEAMCAAsgACgC/AIhCCAAKAIUIQMgACgCECEHIAAoAvgCIQYLIAYoAhRFDQ0gBkEYaiAHIAMQqwIhDiAGKAIIIgRB8ABrIQsgBigCDCIJIA6ncSEFIA5CGYhC/wCDQoGChIiQoMCAAX4hEANAAkAgBCAFaikAACIPIBCFIg5Cf4UgDkKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIOUEUEQANAIAMgC0EAIA56p0EDdiAFaiAJcWsiDEHwAGxqIg0oAghGBEAgByANKAIEIAMQqQVFDQMLIA5CAX0gDoMiDlBFDQALCyAPIA9CAYaDQoCBgoSIkKDAgH+DUEUNDyAFIApBCGoiCmogCXEhBQwBCwsgAkGQAWoiBSAEIAxB8ABsakHgAGsQ2QEgAigCkAEhBCACQUBrIgkgBUEEckHQABD6AhogAigC5AEiBUGAgICAeEYNECACKQPoASEOIABBHGogCUHQABD6AhogACAINgJ4IAAgDjcDcCAAIAU2AmwgACAENgIYIAAgAzYC7AEgACAHNgLoASAAQfABaiAAQRhqQegAEPoCGiAAQQA6APQCIAAgBjYC8AIgAEGAAWohBSAAQfQCaiEIDAMLIABBgAFqIQUgAEH0AmohCCAALQD0AkEBaw4DCQADAQsACyAAKALsASEDIAAoAugBIQcgACgC8AIhBgsgBSAAQfABakHoABD6AiEJIAJBOGogBkE4aiAHIAMQ3QUgAigCPCEEIAIoAjgNBCAAIAQ2AtgCIAJBMGogAEHYAmoiCiAHIAMQ3AUgAigCNCEEIAIoAjANAyAAIAQ2AtwCIAJBKGogCSAAQeABahCcASAAQdwCaiEDIAIoAiwhBCACKAIoDQIgACAENgLgAiACQSBqIAMQ7QUgAigCJCEEIAIoAiANASAAIAQ2AuQCIAAgACgC4AIQATYC6AIgAiAAQeQCajYCnAEgAiAGNgKYASACIAk2ApQBIAIgAEHoAmo2ApABIAAgAkGQAWpBzI3AABDEBxCRAjYC7AILIAJBGGogAEHsAmoiBiABEIoEIAIoAhgiA0ECRg0GIAIoAhwhBCAGEMQDIAAoAugCIgFBhAFPBEAgARAACyAAKALkAiIBQYQBTwRAIAEQAAsgACgC4AIiAUGEAU8EQCABEAALIAAoAtwCIgFBhAFPBEAgARAACyAAKALYAiIBQYQBTwRAIAEQAAsgACgC4AEiAUGEAU8EQCABEAALIAUQ+AIMBAsgACgC4AIiAUGEAUkNACABEAALIAMoAgAiAUGEAUkNACABEAALIAooAgAiAUGEAUkNACABEAALIAAoAuABIgFBhAFPBEAgARAACyAJEPgCQQEhAwsgCEEBOgAADAILQeCNwAAQlQYACyAIQQM6AABBAiEDCyADQQJGDQYgBRCUBCADRSEDDAQLQQAhA0HwjMAAQRQQAiEEIAhBhAFJDQMgCBAADAMLQfSWwAAQlQYAC0G0lsAAEJUGAAsgAEGAgICAeDYCbCAAIAQ2AhhBACEDCyAAQQE6AIADIABBDGooAgAiAQRAIAAoAgggAUEBEPoGCyAAQQRqKAIAIgEgASgCAEEBazYCACAAQQE6AJgDIANFDQIgAiAENgJAIAJBgAE2ApABIAJBCGogAEHABmogAkGQAWogAkFAaxDUBSACKAIIQQFxDQYCQCACKAIMIgFBhAFJDQAgARAAIAIoApABIgFBhAFJDQAgARAACyACKAJAIgFBhAFJDQMgARAADAMLQbyHwAAQlQYAC0EDIQMgAEEDOgCYAyAAQQM6AIADQQEhBAwGCyACIAQ2AkAgAkGAATYCkAEgAkEQaiAAQcQGaiACQZABaiACQUBrENQFIAIoAhBBAXENBAJAIAIoAhQiAUGEAUkNACABEAAgAigCkAEiAUGEAUkNACABEAALIAIoAkAiAUGEAUkNACABEAALIAAoAsAGIgFBhAFPBEAgARAAC0EBIQNBACEEIAAoAsQGIgFBhAFJDQQgARAADAQLEKMHAAsQpAcAC0G6o8AAQRUQogcAC0G6o8AAQRUQogcACyAAIAM6AMgGIAJB8AFqJAAgBAvFDQIGfwF+IwBBQGoiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAIgCQQFrDgMIAgEACyAAIABBiAFqQYABEPoCGgsCQAJAAkACQCAALQB8QQFrDgMJBAEACyAAKAIAIgRFDQogBCgCAA0LIARBfzYCACAAQQA6AHggACAEQQhqIgM2AgwgACAENgIIIAAgAzYCBAwBCwJAIAAtAHhBAWsOAwcDAgALIAAoAgwhAwsgAEEAOgB1IAAgAzYCcAwDCyAALQB1QQFrDgMDAAoBCwALIAAoAnAhAwsgACADNgJQIABBADoAdCACIANBOGoQugc2AiwgAEHUAGoiAyACQSxqQQAQpQUgAEEBOgB0IAIoAiwiBEGEAU8EQCAEEAALIAMoAgAiA0GAgICAeEYEQEGsjsAAQSAQAiEDDA0LIABBADoAdCAAIAM2AmAgACAAKQJYIgg3AmQgAkEgaiAAKAJQQThqIAinIAhCIIinEN0FIAIoAiAhAyAAIAIoAiQ2AhQgACADNgIQIANBAUYNBgwLC0HMjsAAEJUGAAtBlJfAABCVBgALQbSWwAAQlQYAC0G8h8AAEJUGAAsQowcACxCkBwALIAAQazYCbCAAQewAaiEGIAAoAlAiAygCFCIHBH8gAygCCCIEQQhqIQMgBCkDAEJ/hUKAgYKEiJCgwIB/gyEIA0AgCFAEQANAIARBgAdrIQQgAykDACADQQhqIQNCgIGChIiQoMCAf4MiCEKAgYKEiJCgwIB/UQ0ACyAIQoCBgoSIkKDAgH+FIQgLIAIgBCAIeqdBA3ZBkH9saiIFQewAaygCACAFQegAaygCABACNgIoIAJBADYCPCACQRhqIAVB4ABrIAJBPGoQqQIgAigCHCEFIAIoAhgNAyACIAU2AjggAkEsaiAGIAJBKGogAkE4ahCtBQJAIAItACxFDQAgAigCMCIFQYQBSQ0AIAUQAAsgAigCOCIFQYQBTwRAIAUQAAsgAigCKCIFQYQBTwRAIAUQAAsgCEIBfSAIgyEIIAdBAWsiBw0ACyAAKAJQBSADC0EsaikCACEIIABBADoATCAAIAY2AiAgACAINwIYCyACQRBqIABBGGoiAyABENYBIAIoAhAiAUECRw0BQQMhAyAAQQM6AHwgAEEDOgB4IABBAzoAdUEBIQQMBgsgAigCKCIBQYQBSQ0BIAEQAAwBCyACKAIUIQUgAxD6AyABDQAgAiAFNgIoQcDNwwAhBCACQcDNwwA2AjhBxM3DAC0AAEEDRwRAIAIgAkE4ajYCPCACIAJBPGo2AiwgAkEsahDjAiACKAI4IQQLIAJBLGogACgCUEEoahD4BAJAA0AgBSgCBCEDA0AgA0F/Rg0BIANBAEgNAiAFIANBAWogBSgCBCIBIAEgA0YbNgIEIAEgA0cgASEDDQALCyAEIAJBLGogBRCyAiACKAIoIgEoAggQASEDIAAoAlAiBCgCOCIFQYQBTwR/IAUQACAAKAJQBSAECyADNgI4IAEgASgCACIBQQFrNgIAIAFBAUYEQCACQShqEMMFCyAAKAJsIgFBhAFJDQIgARAADAILEL8FAAsgACgCbCIBQYQBTwRAIAEQAAsgAEEUaigCACIBQYQBTwRAIAEQAAsgACgCYCIBBEAgACgCZCABQQEQ+gYLIABBAToAeCAAQYACOwF0IABBCGooAgBBADYCACAAQQE6AHwgAiAFNgI8IAJBgAE2AiwgAkEIaiAAQYQBaiACQSxqIAJBPGoQ1AUgAigCCEEBcUUEQAJAIAIoAgwiAUGEAUkNACABEAAgAigCLCIBQYQBSQ0AIAEQAAsgAigCPCIBQYQBSQ0DIAEQAAwDC0G6o8AAQRUQogcACyAAQRRqKAIAIgFBhAFPBEAgARAAC0HcjsAAQRgQAiEDIAAoAmAiAUUNACAAKAJkIAFBARD6BgsCQCAALQB0RQ0AIAAoAlQiAUGAgICAeEYgAUVyDQAgACgCWCABQQEQ+gYLIABBAToAeCAAQYACOwF0IABBCGooAgBBADYCACAAQQE6AHwgAiADNgI8IAJBgAE2AiwgAiAAQYABaiACQSxqIAJBPGoQ1AUgAigCAEEBcQ0CAkAgAigCBCIBQYQBSQ0AIAEQACACKAIsIgFBhAFJDQAgARAACyACKAI8IgFBhAFJDQAgARAACyAAKAKAASIBQYQBTwRAIAEQAAtBASEDQQAhBCAAKAKEASIBQYQBSQ0AIAEQAAsgACADOgCIAiACQUBrJAAgBA8LQbqjwABBFRCiBwALoQsCCn8BfiAERQRAIABBADYCPCAAIAM2AjggACACNgI0IAAgATYCMCAAQQA6AA4gAEGBAjsBDCAAIAI2AgggAEIANwMADwtBASELAkACQAJAAkACQAJAAkACQAJAAkAgBEEBRgRAQQEhCQwBC0EBIQZBASEHA0AgBSAKaiIIIARPDQIgByEMAkAgAyAGai0AACIGIAMgCGotAAAiCEkEQCAFIAdqQQFqIgcgCmshC0EAIQUMAQsgBiAIRwRAQQEhCyAMQQFqIQdBACEFIAwhCgwBC0EAIAVBAWoiByAHIAtGIgYbIQUgB0EAIAYbIAxqIQcLIAUgB2oiBiAESQ0AC0EBIQZBACEIQQEhB0EAIQVBASEJA0AgBSAIaiINIARPDQMgByEMAkAgAyAGai0AACIGIAMgDWotAAAiDUsEQCAFIAdqQQFqIgcgCGshCUEAIQUMAQsgBiANRwRAQQEhCSAMQQFqIQdBACEFIAwhCAwBC0EAIAVBAWoiByAHIAlGIgYbIQUgB0EAIAYbIAxqIQcLIAUgB2oiBiAESQ0ACyAKIQULIAQgBSAIIAUgCEsiBRsiDEkNAiALIAkgBRsiByAMaiIFIAdJDQMgBCAFSQ0EAn8gAyADIAdqIAwQqQUEQCAMIAQgDGsiBkshCyAEQQNxIQgCQCAEQQFrQQNJBEBBACEHDAELIARBfHEhCkEAIQcDQEIBIAMgB2oiBUEDajEAAIZCASAFMQAAhiAPhEIBIAVBAWoxAACGhEIBIAVBAmoxAACGhIQhDyAKIAdBBGoiB0cNAAsLIAgEQCADIAdqIQUDQEIBIAUxAACGIA+EIQ8gBUEBaiEFIAhBAWsiCA0ACwsgDCAGIAsbQQFqIQdBfyEKIAwhC0F/DAELQQEhCEEAIQVBASEGQQAhCwNAIAQgBiIKIAVqIg1LBEAgBCAFayAGQX9zaiIGIARPDQggBUF/cyAEaiALayIJIARPDQkCQCADIAZqLQAAIgYgAyAJai0AACIJSQRAIA1BAWoiBiALayEIQQAhBQwBCyAGIAlHBEAgCkEBaiEGQQAhBUEBIQggCiELDAELQQAgBUEBaiIGIAYgCEYiCRshBSAGQQAgCRsgCmohBgsgByAIRw0BCwtBASEIQQAhBUEBIQZBACEJA0AgBCAGIgogBWoiDksEQCAEIAVrIAZBf3NqIgYgBE8NCiAFQX9zIARqIAlrIg0gBE8NCwJAIAMgBmotAAAiBiADIA1qLQAAIg1LBEAgDkEBaiIGIAlrIQhBACEFDAELIAYgDUcEQCAKQQFqIQZBACEFQQEhCCAKIQkMAQtBACAFQQFqIgYgBiAIRiINGyEFIAZBACANGyAKaiEGCyAHIAhHDQELCyAEIAsgCSAJIAtJG2shCwJAIAdFBEBBACEHQQAhCgwBCyAHQQNxIQZBACEKAkAgB0EESQRAQQAhCAwBCyAHQXxxIQlBACEIA0BCASADIAhqIgVBA2oxAACGQgEgBTEAAIYgD4RCASAFQQFqMQAAhoRCASAFQQJqMQAAhoSEIQ8gCSAIQQRqIghHDQALCyAGRQ0AIAMgCGohBQNAQgEgBTEAAIYgD4QhDyAFQQFqIQUgBkEBayIGDQALCyAECyEFIAAgBDYCPCAAIAM2AjggACACNgI0IAAgATYCMCAAIAU2AiggACAKNgIkIAAgAjYCICAAQQA2AhwgACAHNgIYIAAgCzYCFCAAIAw2AhAgACAPNwMIIABBATYCAA8LIAggBEHItsMAEOsEAAsgDSAEQci2wwAQ6wQACyAMIARBqLbDABDsBAALIAcgBUG4tsMAEO0EAAsgBSAEQbi2wwAQ7AQACyAGIARB2LbDABDrBAALIAkgBEHotsMAEOsEAAsgBiAEQdi2wwAQ6wQACyANIARB6LbDABDrBAALpg8CCX8CfiMAQdADayICJAAgAiABNgIwIAJB8ABqIAJBMGoQmQMgAigCcCEBAkACQAJAAkACQAJAAkACQCACLQB0IgNBAmsOAgIAAQsgAEEANgIAIAAgATYCBCACKAIwIgFBgwFLDQUMBgsgAiADOgBcIAIgATYCWCACQQA2AlAgAkHYAGohByACAn5BoNLDACgCAEEBRgRAQbDSwwApAwAhC0Go0sMAKQMADAELQgIhC0Gw0sMAQgI3AwBBoNLDAEIBNwMAQgELIgw3A4gCQajSwwAgDEIBfDcDACACIAs3A5ACIAJBADYChAIgAkIANwL8ASACQeD6wAA2AvgBIAJB4AJqQQRyIQggAkHwAGpBBHIhCQJAA0ACQCACQRhqIAcQvwQgAigCHCEBAkACQCACKAIYIgMEQCADQQJrDQEMAwsgAkEQaiABEJUFIAIoAhQhASACKAIQIQYCQCACKAJQRQ0AIAIoAlQiA0GEAUkNACADEAALIAIgATYCVCACQQE2AlAgAiAGNgJwIAJBCGogBhALAkAgAigCCCIDBEAgAigCDCIFIQEgBUGAgICAeEcNAQsgAkHwAGogAkHPA2pB3PjAABCaAiEDQYCAgIB4IQUgBCEBCyAGQYQBTwRAIAYQAAsgBUGAgICAeEYEQCADIQEMAQsgAigCUCACQQA2AlBFDQYgAkHwAGogAigCVBChASACKAJwIgRBAkcNASACKAJ0IQEgBUUNACADIAVBARD6BgsgAEEANgIAIAAgATYCBCACQfgBahC3AyACKAJYIgBBhAFPBEAgABAACyACKAJQRQ0HIAIoAlQiAUGDAUsNAwwHCyAIIAlB5AAQ+gIaIAIgATYCQCACIAM2AjwgAiAFNgI4IAIgBDYC4AIgAkHwAGoiBCACQfgBaiACQThqIAJB4AJqEIcCIAIoAnBBAkcEQCAEEKwECyABIQQMAQsLIAAgAikD+AE3AwAgAEEYaiACQZACaikDADcDACAAQRBqIAJBiAJqKQMANwMAIABBCGogAkGAAmopAwA3AwAgAigCWCIAQYQBTwRAIAAQAAsgAigCUEUNBCACKAJUIgFBhAFJDQQLIAEQAAwDCyACQShqIAJBMGoQmAYgAigCKEUNASACIAIoAiw2AjQgAkFAayACQTRqENYGIAJBADYCTCACQQA2AjhBACEBIAIoAkAEQCACKAJIIgEgAigCRGsiBEEAIAEgBE8bIQELQajSwwACfkGg0sMAKAIAQQFGBEBBsNLDACkDACELQajSwwApAwAMAQtCAiELQbDSwwBCAjcDAEGg0sMAQgE3AwBCAQsiDEIBfDcDAAJ/IAFFBEBB4PrAACEFQQAhAUEADAELQcnNwwAtAAAaIAFBB00Ef0EEQQggAUEESRsFQX9BosQAIAEgAUGixABPG0EDdEEHbkEBa2d2QQFqCyIEQQhqIgEgBEH4AGwiA2oiBkEIEO0GIgdFBEAgBhDBBiACKAIgIQEgAigCJAwBCyADIAdqIgVB/wEgARD5AxogBEEBayIBIARBA3ZBB2wgBEEJSRsLIQQgAiALNwNoIAIgDDcDYCACQQA2AlwgAiAENgJYIAIgATYCVCACIAU2AlAgAkH4AWpBBHIhCSACQYQBaiEKAkACQANAAkAgAkHwAGohBSMAQfABayIDJAACQAJAAkAgAkE4aiIBKAIIRQ0AIANBEGogAUEIahDHBSADKAIQIgRFDQAgA0EIaiADKAIUEJUFIARBAXENAQsgBUECNgIQDAELIAMoAgwhCCADKAIIIQYgASABKAIUQQFqNgIUIAMgBjYCGCADIAYQCyADKAIEIQQCQCADKAIAIgcEQCAEIgFBgICAgHhHDQELIANBGGogA0HvAWpB3PjAABCaAiEHQYCAgIB4IQELIAZBhAFPBEAgBhAACwJAIAFBgICAgHhHBEAgA0EYaiIGIAgQoQEgAygCGEECRg0BIANBhAFqIAZB6AAQ+gIaIAUgBDYCCCAFIAc2AgQgBSABNgIAIAVBDGogA0GAAWpB7AAQ+gIaDAILIAVBAzYCECAFIAc2AgAgCEGEAUkNASAIEAAMAQsgBUEDNgIQIAUgAygCHDYCACABRQ0AIAcgAUEBEPoGCyADQfABaiQAAkACQCACKAKAASIBQQJrDgICAAELIAAgAigCcDYCBCAAQQA2AgAgAkHQAGoQtwMgAigCOEUNBCACKAI8IgFBgwFLDQMMBAsgAkHwAWogAkH4AGooAgA2AgAgAiACKQNwNwPoASACIAE2AvgBIAkgCkHkABD6AhogAkHgAmoiASACQdAAaiACQegBaiACQfgBahCHAiACKALgAkECRg0BIAEQrAQMAQsLIAAgAikDUDcDACAAQRhqIAJB6ABqKQMANwMAIABBEGogAkHgAGopAwA3AwAgAEEIaiACQdgAaikDADcDACACKAI4RQ0BIAIoAjwiAUGEAUkNAQsgARAACyACKAI0IgBBhAFJDQIgABAADAILQeH5wABBFRCiBwALIAJBMGogAkHPA2pBrPjAABCaAiEBIABBADYCACAAIAE2AgQLIAIoAjAiAUGEAUkNAQsgARAACyACQdADaiQAC7oNAQd/IwBBQGoiBCQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AuAFBAWsOAwoCAQALIAAgAEHgAGpB2AAQ+gIaCwJAAkACQAJAIAAtAFRBAWsOAwkEAQALIAAoAgAiA0UNCSADKAIADQogA0F/NgIAIABBADoAUCAAIANBCGoiAjYCDCAAIAM2AgggACACNgIEIABB0ABqIQYMAQsgAEHQAGohBgJAIAAtAFBBAWsOAwcDAgALIAAoAgwhAgsgAEEAOgBMIAAgAjYCECAAQcwAaiEHDAMLIABBzABqIQcgAC0ATEEBaw4DAwAJAQsACyAAKAIQIQILIAAgAjYCFCAAIAJBOGoQugc2AhggBCAAQRhqIgIQuQc2AjQgBEEANgIwIAQgAjYCLCAEQSBqIARBLGoQkgIgACAEKAIgNgIkIAAgBCgCJCICNgIgIAAgAjYCHCAAIAIgBCgCKEEMbGoiBTYCKEEADAcLQfCNwAAQlQYAC0GEl8AAEJUGAAtBtJbAABCVBgALEKMHAAsQpAcAC0G8h8AAEJUGAAtBAQshAyAAAn8CQAJAA0ACQAJAAkACQAJAAkACQCADRQRAIABBLGohAyACIAVHDQEgA0GAgICAeDYCACACIQMMAgsgBEEQaiAAQcgAaiICIAEQigRBAiEFIAQoAhAiCEECRg0DIAQoAhQhAyACEMQDIAhFBEAgA0GEAU8EQCADEAALIAAoAkQiAkGEAU8EQCACEAALIAAoAjgiAgRAIAAoAjwgAkEBEPoGCyAAKAIgIQIgACgCKCEFDAULIAAoAkQiAUGEAUkNBiABEAAMBgsgAyACKQIANwIAIANBCGogAkEIaiIIKAIANgIAIAAgAkEMaiIDNgIgIAAoAixBgICAgHhHDQELIAUgA2tBDG4hAiADIAVHBEADQCADKAIAIgEEQCADQQRqKAIAIAFBARD6BgsgA0EMaiEDIAJBAWsiAg0ACwsgACgCJCIBBEAgACgCHCABQQxsQQQQ+gYLIARBwM3DADYCOEEAIQVBxM3DAC0AAEEDRwR/IAQgBEE4ajYCPCAEIARBPGo2AiwgBEEsahDjAiAEKAI4BUHAzcMACyAAKAIUIgFBLGooAgAhAyABQTBqKAIAIQYjAEEQayIBJAAoAgAiAiACLQAIIgdBASAHGzoACCAHBEAgAkEIahDQAQsgASACQRBqIAJBIGogAyAGEKsCIAMgBhDcAgJAIAEoAgAiBkGAgICAeEYNACABKAIMIQMgBgRAIAEoAgQgBkEBEPoGCyADIAMoAgAiBkEBazYCACABIAM2AgAgBkEBRw0AIAEQwwULIAJBACACLQAIIgMgA0EBRiIDGzoACCADRQRAIAJBCGoQ4QILIAFBEGokACAAKAIUQThqELsHQYCOwABBFxACIQMgACgCGCICQYMBSw0GDAcLIAgoAgAhAyAAIAIpAgA3AjggAEFAayADNgIAIARBGGogACgCFEE4aiAAQTxqKAIAIAMQ3QUgBCgCHCEDIAQoAhgNAyAAIAM2AkQgBCAAQcQAajYCLCAAIARBLGpBmI7AABDEBxCRAjYCSAwCCyAHQQM6AAAgBkEDOgAAQQMMBgtBACEDDAILQQEhAwwBCwsgACgCOCIBBEAgACgCPCABQQEQ+gYLIAAoAigiASAAKAIgIgJrQQxuIQUgASACRwRAA0AgAigCACIBBEAgAkEEaigCACABQQEQ+gYLIAJBDGohAiAFQQFrIgUNAAsLIAAoAiQiAQRAIAAoAhwgAUEMbEEEEPoGC0EBIQUgACgCGCICQYMBTQ0BCyACEAALIABBAToATCAAQQE6AFAgAEEIaigCAEEANgIAQQELOgBUQQMhAgJAAkACQCAFQQJGIgENACAAEM0DAkAgBUUEQCAEIAM2AiAgBEGAATYCLCAEIABB2ABqIARBLGogBEEgahDUBSAEKAIAQQFxDQMCQCAEKAIEIgJBhAFJDQAgAhAAIAQoAiwiAkGEAUkNACACEAALIAQoAiAiAkGEAUkNASACEAAMAQsgBCADNgIgIARBgAE2AiwgBEEIaiAAQdwAaiAEQSxqIARBIGoQ1AUgBCgCCEEBcQ0DAkAgBCgCDCICQYQBSQ0AIAIQACAEKAIsIgJBhAFJDQAgAhAACyAEKAIgIgJBhAFJDQAgAhAACyAAKAJYIgJBhAFPBEAgAhAAC0EBIQIgACgCXCIDQYQBSQ0AIAMQAAsgACACOgC4ASAEQUBrJAAgAQ8LQbqjwABBFRCiBwALQbqjwABBFRCiBwALhA0CBX8BfCMAQaACayIBJAAgASAENgI4IAEgAzYCNCABQezCwQBBCRACIgY2AjwgAUGgAWoiByACEAEQggMgASgCoAEhBQJAAkACQAJ/IAEoAvQBIghBgICAgHhHBEAgAUFAa0EEciAHQQRyQdAAEPoCGiABIAg2ApQBIAEgBTYCQCABIAEpA/gBNwOYASABQShqIAIQASADEAEgBBDrAiABKAIsIQUCQCABKAIoIgkNACABIAU2AjggASgCYCEIIAFBIGogAUE4aiABQTxqEOMFIAEoAiQhBCABKAIgBEAgASAENgKIAiABQQE2AqQBIAFBmMTBADYCoAEgAUIBNwKsASABIAFBiAJqrUKAgICAMIQ3A5gCIAEgAUGYAmo2AqgBIAFBjAJqIAcQ4gIgASgCkAIiAyABKAKUAhACIQUgASgCjAIiBARAIAMgBEEBEPoGCyABKAKIAiIDQYQBSQ0BIAMQAAwBCyAEEANBAUYNAyABQRBqIAQQDAJAIAEoAhAEQCABKwMYIgpEAAAAAAAA4MFmIQNB/////wcCfyAKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAtBgICAgHggAxsgCkQAAMD////fQWQbQQAgCiAKYRsiAyAITg0FAkACQANAIAEgA0EBaiIDNgKAAiABKAI0EANBAUYEQCABQaABaiEFQcnNwwAtAAAaQR1BARDtBiIDRQRAQQFBHRDZBgALIAVBHTYCCCAFIAM2AgQgBUEdNgIAIANBFWpBpsPBACkAADcAACADQRBqQaHDwQApAAA3AAAgA0EIakGZw8EAKQAANwAAIANBkcPBACkAADcAACABKAKkASIDIAEoAqgBEAIhBSABKAKgASIGRQ0FIAMgBkEBEPoGDAULIAEgA7ciChAKNgKEAiABQQhqIAFBNGogAUGEAmoQ4wUgASgCDCEGIAEoAggEQCABIAY2AogCIAFBATYCpAEgAUHQxMEANgKgASABQgE3AqwBIAEgAUGIAmqtQoCAgIAwhDcDmAIgASABQZgCajYCqAEgAUGMAmogAUGgAWoQ4gIgASgCkAIiAyABKAKUAhACIQUgASgCjAIiBgRAIAMgBkEBEPoGCyABKAKIAiIDQYQBTwRAIAMQAAsgASgChAIiA0GEAUkNBSADEAAMBQsgASgChAIiBUGEAU8EQCAFEAALIAYQA0EBRg0CIAEgBjYCmAIgAUGBATYCjAIgASABQThqKAIAEHQ2AqABIAFBmAJqKAIAIAFBjAJqKAIAIAFBoAFqKAIAEI0BIQVBpM7DACgCACEGQaDOwwAoAgAhB0GgzsMAQgA3AgAgASAGIAUgB0EBRiIFGzYCBCABIAU2AgAgASgCBCEFIAEoAgBFBEAgASAFNgKIAiABKAKgASIFQYQBTwRAIAUQAAsgASgCjAIiBUGEAU8EQCAFEAALIAEoApgCIgVBhAFPBEAgBRAACyABIAoQCjYCjAIgAUGgAWogAUGIAmogAUE8aiABQYwCahCtBSABKAKMAiEGIAEtAKABDQIgBkGEAU8EQCAGEAALIAEoAogCIQUgASgCOCIGQYQBTwRAIAYQAAsgASAFNgI4IAMgCEcNAQwJCwsgASgCoAEiA0GEAU8EQCADEAALIAEoAowCIgNBhAFPBEAgAxAACyABKAKYAiIDQYQBSQ0DIAMQAAwDCyABKAKkASEFIAZBhAFPBEAgBhAACyABKAKIAiIDQYQBSQ0CIAMQAAwCCyABQQI2AqQBIAFB4MPBADYCoAEgAUIBNwKsASABIAFBgAJqrUKAgICA4ACENwOYAiABIAFBmAJqNgKoASABQYwCaiABQaABahCVBCABKAKQAiIDIAEoApQCEAIhBSABKAKMAiIHBEAgAyAHQQEQ+gYLIAZBhAFJDQEgBhAADAELQfXCwQBBHBACIQULIARBhAFJDQAgBBAACyABQUBrEPgCIAEoAjwhBiAJRQwBC0EBCyEDIAZBhAFPBEAgBhAACwJAIANFDQAgASgCOCIDQYQBSQ0AIAMQAAsgASgCNCIDQYQBTwRAIAMQAAtBASEGIAJBgwFLDQEMAgsgASgCOCEFIARBhAFPBEAgBBAACyABQUBrEPgCIAEoAjwiA0GEAU8EQCADEAALIAEoAjQiA0GEAU8EQCADEAALQQAhBiACQYMBTQ0BCyACEAALIAAgBTYCBCAAIAY2AgAgAUGgAmokAAvyDgINfwF+IwBB8ABrIgMkAAJ/AkACQAJAAn8CQAJAAkACQAJAIAEtAABBAWsOBQABAgMGBAtBggFBgwEgAS0AARsMBAsCQAJAAkAgASgCCEEBaw4CAQIACyABKQMQIRAjAEEwayIBJAAgASAQNwMIIAMCfyACLQACRQRAIBBCgICAgICAgBBaBEAgAUECNgIUIAFBzODBADYCECABQgE3AhwgASABQQhqrUKAgICAwCiENwMoIAEgAUEoajYCGEEBIQIgAUEQahDPAwwCC0EAIQIgELoQCgwBC0EAIQIgEBAeCzYCBCADIAI2AgAgAUEwaiQAIAMoAgQhAiADKAIADAkLIAEpAxAhECMAQTBrIgEkACABIBA3AwggA0EIaiIEAn8gAi0AAkUEQCAQQv////////8PfEL/////////H1oEQCABQQI2AhQgAUHM4MEANgIQIAFCATcCHCABIAFBCGqtQoCAgICwKIQ3AyggASABQShqNgIYQQEhAiABQRBqEM8DDAILQQAhAiAQuRAKDAELQQAhAiAQEBwLNgIEIAQgAjYCACABQTBqJAAgAygCDCECIAMoAggMCAsgA0EQaiICIAErAxAQCjYCBCACQQA2AgAgAygCFCECIAMoAhAMBwsgA0EYaiACIAEoAgggASgCDBDeBiADKAIcIQIgAygCGAwGCyABKAIIIQQgA0HYAGogAiABKAIMIgEQ1AYgAygCWEUNAyADQcgAaiADQeAAaigCADYCACADIAMpAlg3A0ACQCABBEAgAUEYbCEBIANBQGtBBHIhBSADKAJIIQcDQCADQSBqIAQgAygCQBC/ASADKAIkIQIgAygCIA0CIAUgByACEIAHIAMgAygCSEEBaiIHNgJIIARBGGohBCABQRhrIgENAAsLIAMoAkQMAgsgAygCRCIBQYQBTwRAIAEQAAtBAQwFC0GBAUGAASACLQAAGwshAkEADAMLIANB2ABqIAIgASgCDCIJEOcFIAMoAlhBAkYNASADQdAAaiIMIANB6ABqIg0oAgA2AgAgA0HIAGoiDiADQeAAaiIPKQIANwMAIAMgAykCWDcDQAJAIAlFDQAgASgCBCIFRQ0AIAVBAEchCiADQUBrQQRyIQsgASgCCCEGQQAhAQNAAkACQCABIApFckUEQEEBIQogBkUEQCAFIQEMAgsgBSEBIAYiBEEHcSICBEADQCAEQQFrIQQgASgCmAMhASACQQFrIgINAAsLIAZBCEkNAQNAIAEoApgDKAKYAygCmAMoApgDKAKYAygCmAMoApgDKAKYAyEBIARBCGsiBA0ACwwBCyAKDQFBzPfAABCIBwALQQAhBkEAIQULAkACQAJAIAEvAZIDIAZLBEAgASEEIAYhCAwBCwNAIAEoAogCIgRFDQIgBUEBaiEFIAEvAZADIQggCCAEIgEvAZIDTw0ACwsgCEEBaiEGAkAgBUUEQCAEIQEMAQsgBCAGQQJ0akGYA2ohAgJAIAVBB3EiBkUEQCAFIQcMAQsgBSEHA0AgB0EBayEHIAIoAgAiAUGYA2ohAiAGQQFrIgYNAAsLQQAhBiAFQQhJDQADQCACKAIAKAKYAygCmAMoApgDKAKYAygCmAMoApgDKAKYAyIBQZgDaiECIAdBCGsiBw0ACwsgA0E4aiADKAJQIAQgCEEMbGoiAkGQAmooAgAgAkGUAmooAgAQ3gYgAygCPCECAkAgAygCOA0AIAQgCEEYbGohBAJAIAMoAkhFDQAgAygCTCIFQYQBSQ0AIAUQAAsgAyACNgJMIANBADYCSCADIAI2AmwgA0EwaiAEIAMoAlAQvwEgAygCNCECAkAgAygCMEUEQCADIAI2AlggAygCQA0BIAsgA0HsAGogA0HYAGoQ5gYiAkGEAU8EQCACEAALIAMoAlgiAkGEAU8EQCACEAALIAMoAmwiAkGEAUkNBCACEAAMBAsgAygCbCIBQYQBSQ0BIAEQAAwBCyADKAJsIgQQFEEBRgRAIAsgBCADKAJYEP8GDAMLAn8jAEFAaiIBJAAgAUEANgIUIAFCgICAgBA3AgwgAUEDOgA4IAFBIDYCKCABQQA2AjQgAUGQocEANgIwIAFBADYCICABQQA2AhggASABQQxqNgIsQdz3wABBMyABQRhqEK8HRQRAIAEoAgwhAiABKAIQIgUgASgCFBAZIAIEQCAFIAJBARD6BgsgAUFAayQADAELQbihwQBBNyABQT9qQaihwQBBvKLBABDDBAALIQIgBEGEAU8EQCAEEAALIAMoAlgiAUGEAUkNACABEAALIAMoAkQiAUGEAU8EQCABEAALAkAgAygCSEUNACADKAJMIgFBhAFJDQAgARAAC0EBDAYLQbz3wAAQiAcAC0EAIQUgCUEBayIJDQALCyANIAwoAgA2AgAgDyAOKQMANwMAIAMgAykDQDcDWCADQShqIANB2ABqEJkGIAMoAiwhAiADKAIoDAILIAMoAlwhAkEBDAELIAMoAlwhAkEBCyEBIAAgAjYCBCAAIAE2AgAgA0HwAGokAAuCCwEJfyMAQfAAayICJABBASEGAkACQAJAAkAgASgCACIDEBZBAUYEQCACIAMQATYCICACIAJBIGoQwwc2AiQgAhBhNgIoIAJBJGoQvwciCQRAA0AgAkEYaiACQSRqIAcQoQciBRALAkACQCACKAIYIgMEQCACKAIcIgRBgICAgHhHDQELQQAhBCACQQA2AjQgAkKAgICAEDcCLEEBIQMMAQsgAiAENgIsIAIgA60gBK1CIIaENwIwCyAFQYQBTwRAIAUQAAsgAiADIAQQAjYCSCACQRBqIAEgAkHIAGoQ4wUgAigCFCEEAkACQAJAAkACQAJAAkAgAigCEEUEQCACIAQ2AjggAigCSCIDQYQBTwRAIAMQAAsgAigCMCEFIAIoAjQiCEEDaw4CAQIDCyACKAJIIgFBhAFJDQUgARAADAULIAVB0bHAAEEDEKkFDQEMAgsgBSgAAEGkwrmjBkYNAQsgAhBrNgJgIAIgBSAIEAI2AjwgAkHIAGogAkHgAGogAkE8aiACQThqEK0FIAItAEhFBEAgAigCPCIDQYQBTwRAIAMQAAsgAkEoaiACQeAAahCDByACKAJgIgNBhAFJDQQgAxAADAQLIAIoAkwhBCACKAI8IgFBhAFPBEAgARAACyACKAJgIgFBhAFJDQEgARAADAELIAJBOGoQggdFBEAgAkECNgJMIAJB6LHAADYCSCACQgE3AlQgAiACQSxqrUKAgICA0BOENwNgIAIgAkHgAGo2AlAgAkE8aiACQcgAahDiAiACKAJAIgEgAigCRBACIQQgAigCPCIDRQ0BIAEgA0EBEPoGDAELIAIgAkE4ahC+BzYCaCACEGE2AmwCQAJAIAJB6ABqEL8HIgoEQEEAIQMDQCACIAJB6ABqIAMQoQc2AjwgAkEIaiACQTxqEMABIAIoAgwhBCACKAIIDQIgAiAENgJIIAJB7ABqIAJByABqEIMHIAIoAkgiBEGEAU8EQCAEEAALIAIoAjwiBEGEAU8EQCAEEAALIAogA0EBaiIDRw0ACwsgAhBrNgJgIAIgBSAIEAI2AjwgAkHIAGogAkHgAGogAkE8aiACQewAahCtBSACLQBIBEAgAigCTCEEIAIoAjwiAUGEAU8EQCABEAALIAIoAmAiAUGEAUkNAiABEAAMAgsgAigCPCIDQYQBTwRAIAMQAAsgAkEoaiACQeAAahCDByACKAJgIgNBhAFPBEAgAxAACyACKAJsIgNBhAFPBEAgAxAACyACKAJoIgNBhAFJDQQgAxAADAQLIAIoAjwiAUGEAUkNACABEAALIAIoAmwiAUGEAU8EQCABEAALIAIoAmgiAUGEAUkNACABEAALIAIoAjgiAUGEAUkNACABEAALIAIoAiwiAUUNBSACKAIwIAFBARD6BgwFCyACKAI4IgNBhAFPBEAgAxAACyACKAIsIgMEQCAFIANBARD6BgsgB0EBaiIHIAlHDQALCyACQShqIgEQvwdBAUcNASABQQAQoQchAwwDC0H4scAAQRcQAiEDDAMLIAIQayIDNgIsIAJBzbHAAEEEEAIiATYCPCACQcgAaiACQSxqIAJBPGogAkEoahCtBSACLQBIRQRAIAFBhAFJDQIgARAAIAIoAiwhAwwCCyACKAJMIQQgAUGEAU8EQCABEAAgAigCLCEDCyADQYQBSQ0AIAMQAAsgAigCKCIBQYQBTwRAIAEQAAsgAigCJCIBQYQBTwRAIAEQAAsgAigCICIBQYQBTwRAIAEQAAsgBCEDDAELIAIoAigiAUGEAU8EQCABEAALIAIoAiQiAUGEAU8EQCABEAALIAIoAiAiAUGEAU8EQCABEAALQQAhBgsgACADNgIEIAAgBjYCACACQfAAaiQAC5sLARF/IwBB8ABrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACRQRAQcnNwwAtAAAaQZgDQQgQ7QYiBEUNCCAEQQA7AZIDIARBADYCiAIgAS8BkgMEQCAEQYwCaiELIAFBjAJqIQkgA0EgaiEKIANBGGpBBHIhByABIQIDQCADQQxqIAkQ+AQCQAJAAkACQAJAAkACQCACLQAAQQFrDgUBAgMEBQALIANBADoAGAwFCyADQQE6ABggAyACQQFqLQAAOgAZDAQLIApBCGogAkEQaikDADcDACAKIAJBCGopAwA3AwAgA0ECOgAYDAMLIAcgAkEEahD4BCADQQM6ABgMAgsgByACQQhqKAIAIAJBDGooAgAQmQIgA0EEOgAYDAELAkAgAkEMaigCAEUEQCADQQA2AmwgA0EANgJkDAELIAJBBGooAgAiBUUNBSADQeQAaiAFIAJBCGooAgAQwQELIAcgAykCZDcCACAHQQhqIANB7ABqKAIANgIAIANBBToAGAsgBC8BkgMiBUELTw0EIAQgBUEBajsBkgMgCyAFQQxsaiIGIAMpAgw3AgAgBkEIaiADQRRqKAIANgIAIAQgBUEYbGoiBSADKQMYNwMAIAVBCGogCikDADcDACAFQRBqIANBKGopAwA3AwAgCUEMaiEJIAJBGGohAiAIQQFqIgggAS8BkgNJDQALCyAAIAg2AgggAEEANgIEIAAgBDYCAAwMCyADQeQAaiABKAKYAyACQQFrIg8QwQEgAygCZCICRQ0KQcnNwwAtAAAaIAMoAmghDEHIA0EIEO0GIgRFDQIgBCACNgKYAyAEQQA7AZIDIARBADYCiAIgAkEAOwGQAyACIAQ2AogCIAMgBDYCZCADIAxBAWo2AmggAS8BkgNFDQkgBEGYA2ohEEGMAiEJIARBjAJqIREgA0HIAGohCiADQUBrQQRyIQdBnAMhCCADKAJsIQUDQCADQTRqIAEgCWoQ+AQCQAJAAkACQAJAAkACQCABIAtqIgItAABBAWsOBQECAwQFAAsgA0EAOgBADAULIANBAToAQCADIAJBAWotAAA6AEEMBAsgCkEIaiACQRBqKQMANwMAIAogAkEIaikDADcDACADQQI6AEAMAwsgByACQQRqEPgEIANBAzoAQAwCCyAHIAJBCGooAgAgAkEMaigCABCZAiADQQQ6AEAMAQsCQCACQQxqKAIARQRAIANBADYCICADQQA2AhgMAQsgAkEEaigCACIGRQ0GIANBGGogBiACQQhqKAIAEMEBCyAHIAMpAhg3AgAgB0EIaiADQSBqKAIANgIAIANBBToAQAsgA0HYAGogASAIaigCACAPEMEBIAMoAmAhEgJ/IAMoAlgiAgRAIAMoAlwMAQtByc3DAC0AABpBmANBCBDtBiICRQ0GIAJBADsBkgMgAkEANgKIAkEACyAMRw0GIAQvAZIDIgZBC08NByAEIAZBAWoiDjsBkgMgESAGQQxsaiITIAMpAjQ3AgAgE0EIaiADQTxqKAIANgIAIAQgBkEYbGoiBiADKQNANwMAIAZBCGogCikDADcDACAGQRBqIANB0ABqKQMANwMAIBAgDkECdGogAjYCACACIA47AZADIAIgBDYCiAIgCEEEaiEIIAlBDGohCSALQRhqIQsgBSASakEBaiEFIA1BAWoiDSABLwGSA0kNAAsMCAtBgKjAABCIBwALQdDzwABBIEHM9MAAENgFAAtBCEHIAxCsBwALQYCowAAQiAcAC0EIQZgDEKwHAAtB3PTAAEEwQYz1wAAQ2AUAC0HQ88AAQSBBnPXAABDYBQALQQhBmAMQrAcACyADIAU2AmwLIAAgAykCZDcCACAAQQhqIANB7ABqKAIANgIADAELQfCnwAAQiAcACyADQfAAaiQAC7sLAgl/AX4jAEHgAGsiAiQAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQDAAUEBaw4DCQIBAAsgAEEIaiAAQeQAakHcABD6AhoLAkACQAJAAkAgAC0AYEEBaw4DCgQBAAsgACgCCCIDRQ0LIAMoAgANDCADQX82AgAgACADNgIUIAAgA0EIaiIDNgIQIABBADoAJCAAIAM2AhggACAAKAIMIgQ2AhwgAEEkaiEHIABBGGohCAwBCyAAQRhqIQggAEEkaiEHAkAgAC0AJEEBaw4EBwMCDgALIAAoAhwhBCAAKAIYIQMLIAAgAzYCICADQdQAaigCACEFIANB2ABqKAIAIQYgAEEAOgA8IAAgBDYCNCAAIAY2AjAgACAFNgIsIAAgA0FAayIJNgIoIABBPGohAyAAQShqIQoMAwsgAEEoaiEKIABBPGohAyAALQA8QQFrDgMKAAMBCwALIAAoAjQhBCAAKAIwIQYgACgCLCEFIAAoAighCQsgACAJKAIAIAUgBiAEEBEQkQI2AjgLIAJBKGogAEE4aiIFIAEQigRBAiEEIAIoAigiBkECRw0BIAdBAzoAACADQQM6AAAMCgtB/JPAABCVBgALIAIoAiwhASAFEMQDIANBAToAACAGBEAgAiABNgIwIAJBATYCRCACQaiUwAA2AkAgAkIBNwJMIAJBAzYCXCACIAJB2ABqNgJIIAIgAkEwajYCWCACQTRqIAJBQGsQ4gIgAigCOCIBIAIoAjwQwAchAyACKAI0IgQEQCABIARBARD6BgsgAigCMCIBQYQBTwRAIAEQAAtBASEEDAgLIAAgATYCKCAAIAoQvgc2AiwgABBhNgIwIAJBQGsgAEEsahDWBiAAQTxqIAJByABqKAIANgIAIAAgAikCQDcCNEEADAYLQbCUwAAQlQYAC0G8h8AAEJUGAAsQowcACxCkBwALQZSWwAAQlQYAC0EBCyEDA0AgA0UEQCACQSBqIABBNGoQxwUgAigCICEBIAAgAigCJCIDNgJcIAAgATYCWCABRQRAIAAoAjAhAyAAKAIsIgFBhAFPBEAgARAAC0EAIQQgACgCKCIBQYQBSQ0DIAEQAAwDCyAAIAM2AkAgACgCICIBQdQAaikCACELIAMQASEDIABBgAI7AVQgACABNgJQIAAgAzYCTCAAIAs3AkRBASEDDAELIAJBGGogAEHEAGoQygEgAigCHCEDIAIoAhghAQJAIAAtAFQNACAAKAJMIgRBhAFJDQAgBBAACwJAIAFFBEAgAiADNgI0IABBMGogAkE0ahCDByACKAI0IgFBhAFPBEAgARAACyAAKAJAIgFBhAFJDQEgARAADAELIAAoAkAiAUGEAU8EQCABEAALIAAoAjAiAUGEAU8EQCABEAALIAAoAiwiAUGEAU8EQCABEAALQQEhBCAAKAIoIgFBhAFJDQIgARAADAILQQAhAwwACwALIAdBAToAAAsCQAJAIARBAkYEQEEDIQMgAEEDOgBgDAELIAgQjwQgAEEUaigCAEEANgIAIABBAToAYAJAIAQEQCACIAM2AjQgAkGAATYCQCACQRBqIABBBGogAkFAayACQTRqENQFIAIoAhBBAXFFBEACQCACKAIUIgFBhAFJDQAgARAAIAIoAkAiAUGEAUkNACABEAALIAIoAjQiAUGEAUkNAiABEAAMAgtBuqPAAEEVEKIHAAsgAiADNgI0IAJBgAE2AkAgAkEIaiAAIAJBQGsgAkE0ahDUBSACKAIIQQFxDQICQCACKAIMIgFBhAFJDQAgARAAIAIoAkAiAUGEAUkNACABEAALIAIoAjQiAUGEAUkNACABEAALIAAoAgAiAUGEAU8EQCABEAALQQEhAyAAKAIEIgFBhAFJDQAgARAACyAAIAM6AMABIAJB4ABqJAAgBEECRg8LQbqjwABBFRCiBwALhQwBBH8jAEGgAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAGRBAWsOBQABBAUCAwsgAEGAgICAeDYCACAAQQE6AAQMCgsgAEGAgICAeDYCACAAQQE6AAQMCQsgAkEVNgIMIAJBgLvBADYCCCACQQE2AhwgAkHAjsEANgIYIAJCATcCJCACIAJBCGqtQoCAgIDAAIQ3A4gBIAIgAkGIAWo2AiAgACACQRhqEOICIABBAjoADAwICyABKAIcQQAgASgCGBsiA0EASA0CIAEoAhRBfyABKAIQGyIBIANIIAFBAEpxRQRAIABBgICAgHg2AgAgAEEBOgAEDAgLIAJBEzYCDCACQae5wQA2AgggAkEBNgIcIAJBwI7BADYCGCACQgE3AiQgAiACQQhqrUKAgICAwACENwOIASACIAJBiAFqNgIgIAAgAkEYahDiAiAAQQI6AAwMBwsgAkEYaiABEPwBAkAgAigCcEGAgICAeEcEQCACKAJ0IQMgAigCcCEFIAIoAngNASACQRY2AoQBIAJB3rnBADYCgAEgAkEBNgKMASACQcCOwQA2AogBIAJCATcClAEgAiACQYABaq1CgICAgMAAhDcDCCACIAJBCGo2ApABIAAgAkGIAWoQ4gIgAEECOgAMDAYLIAJBDjYChAEgAkHQucEANgKAASACQQE2AowBIAJBwI7BADYCiAEgAkIBNwKUASACIAJBgAFqrUKAgICAwACENwMIIAIgAkEIajYCkAEgACACQYgBahDiAiAAQQI6AAwMBgsgAkEIaiIEIAMQwwEgAigCCEGAgICAeEcNAiACLQAMRQRAIAJBGDYChAEgAkH0ucEANgKAASACQQE2AowBIAJBwI7BADYCiAEgAkIBNwKUASACIAJBgAFqrUKAgICAwACENwMIIAIgBDYCkAEgACACQYgBahDiAiAAQQI6AAwMBQsgASgCDEEAIAEoAggbIgRBAEgNAyABKAIEQX8gASgCABsiASAESCABQQBKcUUEQCAAQYCAgIB4NgIAIABBAToABAwFCyAAQae5wQBBExDxBAwECyACQRhqIAEQ/AECQAJAAkACQCACKAJQBEAgAkHQAGohASACKAJcDQEgAkEQNgKEASACQfC6wQA2AoABIAJBATYCjAEgAkHAjsEANgKIASACQgE3ApQBIAIgAkGAAWqtQoCAgIDAAIQ3AwggAiACQQhqNgKQASAAIAJBiAFqEOICIABBAjoADAwCCyACQRA2AoQBIAJB8LrBADYCgAEgAkEBNgKMASACQcCOwQA2AogBIAJCATcClAEgAiACQYABaq1CgICAgMAAhDcDCCACIAJBCGo2ApABIAAgAkGIAWoQ4gIgAEECOgAMIAIoAnAiAEGAgICAeEYNAyACQfAAahDYAyAADQIMAwsgAEGAgICAeDYCACAAQQE6AAQLIAEQtwMgAigCcCIAQYCAgIB4Rg0BIAJB8ABqENgDIABFDQELIAIoAnQgAEHoAGxBCBD6BgsCQAJAAkAgAi0AOA4HCAgIAQIACAALIAJBPGoQ+wEMBwsgAigCPCIARQ0GIAIoAkAgAEEBEPoGDAYLIAJBPGoQuQQgAigCPCIARQ0FIAIoAkAgAEEYbEEIEPoGDAULIAJBFjYCDCACQbq5wQA2AgggAkEBNgIcIAJBwI7BADYCGCACQgE3AiQgAiACQQhqrUKAgICAwACENwOIASACIAJBiAFqNgIgIAAgAkEYahDiAiAAQQI6AAwMBAsgAkGQAWogAkEQaikCADcDACACIAIpAgg3A4gBQZy6wQBBKyACQYgBakGMusEAQeC6wQAQwwQACyAAQbq5wQBBFhDxBAsgAkHwAGoQ2AMgBUUNACADIAVB6ABsQQgQ+gYLIAIoAlAEQCACQdAAahC3AwsCQAJAAkAgAi0AOA4HAwMDAQIAAwALIAJBPGoQ+wEMAgsgAigCPCIARQ0BIAIoAkAgAEEBEPoGDAELIAJBPGoQuQQgAigCPCIARQ0AIAIoAkAgAEEYbEEIEPoGCyACQaABaiQAC64JARB/AkAgAUECTwRAAn8CQCADIAFBEGpPBEAgAUEBdiEMIAFBD0sNASACIAxBDGwiA2ohBCAAIANqIQMgAUEHSwRAIAAgAhCYAiADIAQQmAJBBAwDCyACIAApAgA3AgAgAkEIaiAAQQhqKAIANgIAIAQgAykCADcCACAEQQhqIANBCGooAgA2AgBBAQwCCwALIAAgAiACIAFBDGxqIgQQzgEgACAMQQxsIgNqIAIgA2ogBEHgAGoQzgFBCAsiByAMSQRAIAdBDGwhBCAHIQMDQCACIANBDGwiBmoiBSAAIAZqIgYpAgA3AgAgBUEIaiAGQQhqKAIAIgo2AgAgBUEEaigCACIOIAVBCGsoAgAgCiAFQQRrKAIAIgggCCAKSxsQqQUiBiAKIAhrIAYbQQBIBEAgBSgCACEFIAQhBgJ/A0AgAiAGaiIJIAlBDGsiCCkCADcCACAJQQhqIAhBCGooAgA2AgAgAiAGQQxGDQEaIAZBDGshBiAOIAlBFGsoAgAgCiAJQRBrKAIAIgsgCiALSRsQqQUiCCAKIAtrIAgbQQBIDQALIAIgBmoLIAU2AgAgCUEEayAKNgIAIAlBCGsgDjYCAAsgBEEMaiEEIANBAWoiAyAMRw0ACwsgDEEMbCEQIAEgDGsiCSAHSwRAIAAgEGohDiAHQQxsIREgAiAQaiISIQNBDCEGA0AgEiAHQQxsIgRqIgUgBCAOaiIEKQIANwIAIAVBCGogBEEIaigCACINNgIAIAVBBGooAgAiEyAFQQhrKAIAIA0gBUEEaygCACIIIAggDUsbEKkFIgQgDSAIayAEG0EASARAIAUoAgAhCyADIQQgBiEIAn8DQCAEIBFqIg8gD0EMayIFKQIANwIAIA9BCGogBUEIaigCADYCACASIAggEUYNARogBEEMayEEIAhBDGohCCATIA9BFGsoAgAgDSAPQRBrKAIAIgogCiANSxsQqQUiBSANIAprIAUbQQBIDQALIAQgEWoLIAs2AgAgD0EEayANNgIAIA9BCGsgEzYCAAsgA0EMaiEDIAZBDGshBiAHQQFqIgcgCUcNAAsLIAAgAUEMbEEMayIDaiEIIAIgA2ohBiACIBBqIgNBDGshBANAIAAgAiADIANBBGooAgAgAkEEaigCACADQQhqKAIAIgsgAkEIaigCACIFIAUgC0sbEKkFIgcgCyAFayAHGyIOQQBOIgsbIgcpAgA3AgAgAEEIaiAHQQhqKAIANgIAIAggBiAEIAZBBGooAgAgBEEEaigCACAGQQhqKAIAIgkgBEEIaigCACIFIAUgCUsbEKkFIgcgCSAFayAHGyIFQQBOGyIHKQIANwIAIAhBCGogB0EIaigCADYCACACIAtBDGxqIQIgAyAOQR92QQxsaiEDIAQgBUEfdSIHQQxsaiEEIAYgB0F/c0EMbGohBiAIQQxrIQggAEEMaiEAIAxBAWsiDA0ACyAEQQxqIQcgAUEBcQR/IAAgAiADIAIgB0kiBBsiASkCADcCACAAQQhqIAFBCGooAgA2AgAgAyACIAdPQQxsaiEDIAIgBEEMbGoFIAILIAdHIAMgBkEMakdyDQELDwsQlAYAC4oJAgV/A34CQAJAAkACQCABQQhPBEAgAUEHcSICRQ0CIAAoAqABIgNBKU8NAyADRQRAIABBADYCoAEMAwsgA0EBa0H/////A3EiBUEBaiIEQQNxIQYgAkECdEHAqMMAaigCACACdq0hCCAFQQNJBEAgACECDAILIARB/P///wdxIQUgACECA0AgAiACNQIAIAh+IAd8Igc+AgAgAkEEaiIEIAQ1AgAgCH4gB0IgiHwiBz4CACACQQhqIgQgBDUCACAIfiAHQiCIfCIHPgIAIAJBDGoiBCAENQIAIAh+IAdCIIh8Igk+AgAgCUIgiCEHIAJBEGohAiAFQQRrIgUNAAsMAQsgACgCoAEiA0EpTw0CIANFBEAgAEEANgKgAQ8LIAFBAnRBwKjDAGo1AgAhCCADQQFrQf////8DcSIBQQFqIgJBA3EhBgJAIAFBA0kEQCAAIQIMAQsgAkH8////B3EhBSAAIQIDQCACIAI1AgAgCH4gB3wiBz4CACACQQRqIgEgATUCACAIfiAHQiCIfCIHPgIAIAJBCGoiASABNQIAIAh+IAdCIIh8Igc+AgAgAkEMaiIBIAE1AgAgCH4gB0IgiHwiCT4CACAJQiCIIQcgAkEQaiECIAVBBGsiBQ0ACwsgBgRAA0AgAiACNQIAIAh+IAd8Igk+AgAgAkEEaiECIAlCIIghByAGQQFrIgYNAAsLAkAgACAJQoCAgIAQWgR/IANBKEYNASAAIANBAnRqIAc+AgAgA0EBagUgAws2AqABDwsMAwsgBgRAA0AgAiACNQIAIAh+IAd8Igk+AgAgAkEEaiECIAlCIIghByAGQQFrIgYNAAsLAkAgACAJQoCAgIAQWgR/IANBKEYNASAAIANBAnRqIAc+AgAgA0EBagUgAws2AqABDAELDAILAkAgAUEIcQRAAkACQCAAKAKgASIDQSlJBEAgA0UEQEEAIQMMAwsgA0EBa0H/////A3EiAkEBaiIFQQNxIQYgAkEDSQRAQgAhByAAIQIMAgsgBUH8////B3EhBUIAIQcgACECA0AgAiACNQIAQuHrF34gB3wiBz4CACACQQRqIgQgBDUCAELh6xd+IAdCIIh8Igc+AgAgAkEIaiIEIAQ1AgBC4esXfiAHQiCIfCIHPgIAIAJBDGoiBCAENQIAQuHrF34gB0IgiHwiCD4CACAIQiCIIQcgAkEQaiECIAVBBGsiBQ0ACwwBCwwECyAGBEADQCACIAI1AgBC4esXfiAHfCIIPgIAIAJBBGohAiAIQiCIIQcgBkEBayIGDQALCyAIQoCAgIAQVA0AIANBKEYNAiAAIANBAnRqIAc+AgAgA0EBaiEDCyAAIAM2AqABCyABQRBxBEAgAEHElcMAQQIQ4AELIAFBIHEEQCAAQcyVwwBBAxDgAQsgAUHAAHEEQCAAQdiVwwBBBRDgAQsgAUGAAXEEQCAAQeyVwwBBChDgAQsgAUGAAnEEQCAAQZSWwwBBExDgAQsgACABEKQCGg8LDAELIANBKEGQxcMAEOwEAAtBKEEoQZDFwwAQ6wQAC8QJAgp/AX4jAEGgAWsiAyQAIAMgAigCACIBEAE2AhwgA0EgaiICIANBHGoiBBDCBxCJBSADQSxqIgUgBBDBBxCJBSABEAEiCRBSIQcgA0ECNgJkIANBqO7BADYCYCADQgI3AmwgA0KAgICA4CoiDSAFrYQ3A1ggAyANIAKthDcDUCADIANB0ABqNgJoIANBOGogA0HgAGoQ4gIgA0EQaiAHEAsCQAJAIAMoAhAiBEUEQCAAIAMpAjg3AgAgAEEIaiADQUBrKAIANgIADAELIAMoAhQhAiADIAQ2AkggAyACNgJMIAMgAjYCRCADKAI8IQoCQAJAAkAgAygCQCIBRQ0AAkACQAJAAkACQAJAIAEgAkkEQCABQQFGDQYgA0HgAGogBCACIAogARC7ASADKAJgDQRBACEEIAMtAG4NAyADLQBsIQwgAygClAEhASADKAKQASEGIAMoAmQiAkUNAiABIAJLDQEgASACRg0CDAkLIAEgAkcNByAKIAQgAhCpBQ0HDAYLIAIgBmosAABBQEgNBwsCQCABIAJHBEACfyACIAZqIgUsAAAiBEEASARAIAUtAAFBP3EhCCAEQR9xIQsgC0EGdCAIciAEQWBJDQEaIAUtAAJBP3EgCEEGdHIhCCAIIAtBDHRyIARBcEkNARogC0ESdEGAgPAAcSAFLQADQT9xIAhBBnRycgwBCyAEQf8BcQshBEEBIQUgDEEBcQ0BAkAgBEGAAUkNAEECIQUgBEGAEEkNAEEDQQQgBEGAgARJGyEFCwJAIAIgBWoiAkUNACABIAJLBEAgAiAGaiwAAEG/f0wNCgwBCyABIAJHDQkLIAEgAkYNASACIAZqLAAAGgwBCyAMQQFxRQ0BC0EBIQQLIAMgBDYCUAwBCyADQegAaiEBIAMoApwBIQIgAygCmAEhBCADKAKUASEGIAMoApABIQUgAygChAFBf0cEQCADQdAAaiABIAUgBiAEIAJBABCuAgwBCyADQdAAaiABIAUgBiAEIAJBARCuAgsgAygCUEUNAgwBCyAKLQAAIQEgAkEHTQRAA0AgBC0AACABRg0CIARBAWohBCACQQFrIgINAAwDCwALIANBCGogASAEIAIQlQMgAygCCEEBRw0BCyAAIAMpAkQ3AgAgAEEIaiADQcwAaigCADYCACADKAI4IgBFDQIgCiAAQQEQ+gYMAgsgA0ECNgJkIANBvO7BADYCYCADQgI3AmwgAyANIANBxABqrYQ3A1ggAyANIANBOGqthDcDUCADIANB0ABqNgJoIAAgA0HgAGoQ4gIgAygCRCIABEAgAygCSCAAQQEQ+gYLIAMoAjgiAARAIAMoAjwgAEEBEPoGCyAHQYQBTwRAIAcQAAsgCUGEAU8EQCAJEAALIAMoAiwiAARAIAMoAjAgAEEBEPoGCyADKAIgIgAEQCADKAIkIABBARD6BgsgAygCHCIAQYQBSQ0CIAAQAAwCCyAGIAEgAiABQfjtwQAQ6QYACyAHQYQBTwRAIAcQAAsgCUGEAU8EQCAJEAALIAMoAiwiAARAIAMoAjAgAEEBEPoGCyADKAIgIgAEQCADKAIkIABBARD6BgsgAygCHCIAQYQBSQ0AIAAQAAsgA0GgAWokAAvICQIcfwR+IwBB4AFrIgIkAAJAAkAgASgCBCIKRQRAIABBCGpB2KzAACkCADcCACAAQdCswAApAgA3AgAMAQsCfwJAAn8CQAJAIApBAWqtQvgAfiIeQiCIpw0AIB6nIgQgCkEJaiIHaiIFIARJDQAgBUH5////B0kNAQsQswUgAigCAAwBC0HJzcMALQAAGiAFQQgQ7QYiCw0BIAUQwQYgAigCCAsiCkEJaiEHQQAMAQsgBCALagsgASgCACIEIAcQ+gIhECABKAIMIgsEQCAQQfgAayEUIARBCGohByAEKQMAQn+FQoCBgoSIkKDAgH+DIR4gAkHBAGohDSACQdwAaiEMIAJBwAFqIghBAXIhDiACQcgBaiERIAhBBHIhBiALIRIgBCEFA0AgHlAEQANAIAVBwAdrIQUgBykDACAHQQhqIQdCgIGChIiQoMCAf4MiHkKAgYKEiJCgwIB/UQ0ACyAeQoCBgoSIkKDAgH+FIR4LIAJBEGogBSAeeqdBA3ZBiH9saiIDQfgAaxD4BEGAgICAeCEIIANBBGstAAAhFSADQRBrIgkoAgBBgICAgHhHBEAgAkHAAWogCRDRASACKQLEASEfIAIoAsABIQgLIANB3ABrKAIAIRYgA0HgAGsoAgAhFyADQeQAaygCACEYIANB6ABrKAIAIRkgA0EwayIJKAIABH8gA0EYaykDACEgIANBIGspAwAhISACQcABaiAJEMcBIAIgITcD0AEgAkGQAWogBkEIaikCADcDACACICA3A9gBIAJBmAFqIAZBEGopAgA3AwAgAkGgAWogBkEYaigCADYCACACIAYpAgA3A4gBIAIoAsABBUEACyEJIANBzABrKAIAIRogA0HQAGsoAgAhGyADQdQAaygCACEcIANB2ABrKAIAIR0gA0HIAGstAAAiE0EGRwRAAkACQAJAAkACQAJAIBNBAWsOBQABAgMEBQsgAiADQccAay0AADoAwQEMBAsgESADQUBqIg8pAwA3AwAgEUEIaiAPQQhqKQMANwMADAMLIAYgA0HEAGsQ+AQMAgsgBiADQUBqKAIAIANBPGsoAgAQmQIMAQsgA0E8aygCAEUEQCACQQA2AswBIAJBADYCxAEMAQsgA0HEAGsoAgAiD0UNBSAGIA8gA0FAaigCABDBAQsgAkG3AWogDkEPaikAADcAACACQbABaiAOQQhqKQAANwMAIAIgDikAADcDqAELIB5CAX0gHoMhHiAMIAIpA4gBNwIAIAxBCGogAkGQAWopAwA3AgAgDEEQaiACQZgBaikDADcCACAMQRhqIAJBoAFqKAIANgIAIAIgHzcCfCACIAg2AnggAiAVOgCEASACIAk2AlggAiAWNgIsIAIgFzYCKCACIBg2AiQgAiAZNgIgIAIgEzoAQCACIBo2AjwgAiAbNgI4IAIgHDYCNCACIB02AjAgDUEPaiACQbcBaikAADcAACANQQhqIAJBsAFqKQMANwAAIA0gAikDqAE3AAAgFCAEIANrQYh/bUH4AGxqIAJBEGpB+AAQ+gIaIBJBAWsiEg0ACwsgASgCCCEBIAAgCzYCDCAAIAE2AgggACAKNgIEIAAgEDYCAAsgAkHgAWokAA8LQYCowAAQiAcAC54JAgp/AX4jAEGgAWsiAyQAIAMgAigCABABIgc2AhwgA0EgaiIBIANBHGoiAhDCBxCJBSADQSxqIgQgAhDBBxCJBSAHEFkhCCADQQI2AmQgA0GE/MEANgJgIANCAjcCbCADQoCAgIDQLSINIASthDcDWCADIA0gAa2ENwNQIAMgA0HQAGo2AmggA0E4aiADQeAAahDiAiADQRBqIAgQCwJAAkAgAygCECIERQRAIAAgAykCODcCACAAQQhqIANBQGsoAgA2AgAMAQsgAygCFCECIAMgBDYCSCADIAI2AkwgAyACNgJEIAMoAjwhCgJAAkACQCADKAJAIgFFDQACQAJAAkACQAJAAkAgASACSQRAIAFBAUYNBiADQeAAaiAEIAIgCiABELsBIAMoAmANBEEAIQQgAy0Abg0DIAMtAGwhDCADKAKUASEBIAMoApABIQYgAygCZCICRQ0CIAEgAksNASABIAJGDQIMCQsgASACRw0HIAogBCACEKkFDQcMBgsgAiAGaiwAAEFASA0HCwJAIAEgAkcEQAJ/IAIgBmoiBSwAACIEQQBIBEAgBS0AAUE/cSEJIARBH3EhCyALQQZ0IAlyIARBYEkNARogBS0AAkE/cSAJQQZ0ciEJIAkgC0EMdHIgBEFwSQ0BGiALQRJ0QYCA8ABxIAUtAANBP3EgCUEGdHJyDAELIARB/wFxCyEEQQEhBSAMQQFxDQECQCAEQYABSQ0AQQIhBSAEQYAQSQ0AQQNBBCAEQYCABEkbIQULAkAgAiAFaiICRQ0AIAEgAksEQCACIAZqLAAAQb9/TA0KDAELIAEgAkcNCQsgASACRg0BIAIgBmosAAAaDAELIAxBAXFFDQELQQEhBAsgAyAENgJQDAELIANB6ABqIQEgAygCnAEhAiADKAKYASEEIAMoApQBIQYgAygCkAEhBSADKAKEAUF/RwRAIANB0ABqIAEgBSAGIAQgAkEAEK8CDAELIANB0ABqIAEgBSAGIAQgAkEBEK8CCyADKAJQRQ0CDAELIAotAAAhASACQQdNBEADQCAELQAAIAFGDQIgBEEBaiEEIAJBAWsiAg0ADAMLAAsgA0EIaiABIAQgAhCVAyADKAIIQQFHDQELIAAgAykCRDcCACAAQQhqIANBzABqKAIANgIAIAMoAjgiAEUNAiAKIABBARD6BgwCCyADQQI2AmQgA0GY/MEANgJgIANCAjcCbCADIA0gA0HEAGqthDcDWCADIA0gA0E4aq2ENwNQIAMgA0HQAGo2AmggACADQeAAahDiAiADKAJEIgAEQCADKAJIIABBARD6BgsgAygCOCIABEAgAygCPCAAQQEQ+gYLIAhBhAFPBEAgCBAACyAHQYQBTwRAIAcQAAsgAygCLCIABEAgAygCMCAAQQEQ+gYLIAMoAiAiAEUNAiADKAIkIABBARD6BgwCCyAGIAEgAiABQdD7wQAQ6QYACyAIQYQBTwRAIAgQAAsgB0GEAU8EQCAHEAALIAMoAiwiAARAIAMoAjAgAEEBEPoGCyADKAIgIgBFDQAgAygCJCAAQQEQ+gYLIANBoAFqJAALjgoCCX8BfiMAQdAAayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AgAFBAWsOAwwCAQALIAAgACkCRDcCCCAAQUBrIABB/ABqKAIANgIAIABBOGogAEH0AGopAgA3AgAgAEEwaiAAQewAaikCADcCACAAQShqIABB5ABqKQIANwIAIABBIGogAEHcAGopAgA3AgAgAEEYaiAAQdQAaikCADcCACAAQRBqIABBzABqKQIANwIACwJAAkACQAJAIAAtAEBBAWsOAw0EAQALIAAoAggiA0UNCSADKAIAIgRBf0YNCiADIARBAWo2AgAgACADNgIUIAAgA0EIaiIDNgIQIABBADoAJCAAIAM2AhggACAAKAIMIgQ2AhwgAEEkaiEHIABBGGohCgwBCyAAQRhqIQogAEEkaiEHAkAgAC0AJEEBaw4EBwMCDwALIAAoAhwhBCAAKAIYIQMLIAAgAzYCICADQdQAaigCACEFIANB2ABqKAIAIQggAEEAOgA8IAAgBDYCNCAAIAg2AjAgACAFNgIsIAAgA0FAayIDNgIoIABBPGohCSAAQShqIQYMAwsgAEEoaiEGIABBPGohCSAALQA8QQFrDgMIAAMBCwALIAAoAjQhBCAAKAIwIQggACgCLCEFIAAoAighAwsgACADKAIAIAUgCCAEEAYQkQI2AjgLIAJBGGogAEE4aiIEIAEQigRBAiEDIAIoAhgiBUECRw0BIAdBAzoAACAJQQM6AAAMCwtB9JTAABCVBgALIAIoAhwhASAEEMQDIAlBAToAACAFBEAgAiABNgIgIAJBATYCNCACQaSVwAA2AjAgAkIBNwI8IAJBAzYCTCACIAJByABqNgI4IAIgAkEgajYCSCACQSRqIAJBMGoQ4gIgAigCKCIBIAIoAiwQwAchBCACKAIkIgMEQCABIANBARD6BgsgAigCICIBQYQBTwRAIAEQAAtBASEDDAkLIAYgATYCACABEANBAUcNBQwHCxCjBwALEKQHAAtBlJbAABCVBgALQbCUwAAQlQYAC0G8h8AAEJUGAAsgBigCABAEQQFGDQEgACgCICIBQdQAaikCACELIABBgAI7ATwgACABNgI4IAAgACgCKDYCNCAAIAs3AiwLIAJBEGogAEEsahDKASACKAIQIQMgAigCFCEEIAAtADwNASAAKAI0IgFBhAFJDQEgARAADAELIAYoAgAhBEEAIQMLIAdBAToAAAsCQCADQQJGBEBBAyEEIABBAzoAQAwBCyAKEPkEIABBFGooAgAiASABKAIAQQFrNgIAIABBAToAQAJAAkAgAwRAIAIgBDYCJCACQYABNgIwIAJBCGogAEEEaiACQTBqIAJBJGoQ1AUgAigCCEEBcUUEQAJAIAIoAgwiAUGEAUkNACABEAAgAigCMCIBQYQBSQ0AIAEQAAsgAigCJCIBQYQBSQ0CIAEQAAwCC0G6o8AAQRUQogcACyACIAQ2AiQgAkGAATYCMCACIAAgAkEwaiACQSRqENQFIAIoAgBBAXENAQJAIAIoAgQiAUGEAUkNACABEAAgAigCMCIBQYQBSQ0AIAEQAAsgAigCJCIBQYQBSQ0AIAEQAAsgACgCACIBQYQBTwRAIAEQAAtBASEEIAAoAgQiAUGEAUkNASABEAAMAQtBuqPAAEEVEKIHAAsgACAEOgCAASACQdAAaiQAIANBAkYLmBICHH8DfiMAQeAAayIFJAACQAJ/AkAgAS0AEEUEQCABKAIIIQYgASgCBCEUIAEoAgAhDyABLQARIRUgBUEUaiABKAIMIg5BxABqEKYDIAUoAhghDSAVQQFHIAUoAhwiAkECSXJFBEAgAkEBdiEJIAJBFGwgDWpBFGshAyANIQcDQCAHQQhqIgQpAgAhHiAEIANBCGoiBCkCADcCACAEIB43AgAgBykCACEeIAcgAykCADcCACADIB43AgAgA0EQaiIEKAIAIQggBCAHQRBqIgQoAgA2AgAgBCAINgIAIANBFGshAyAHQRRqIQcgCUEBayIJDQALCyACQRRsIRAgBSgCFCERIAJFBEAgBiECIA0MAwsgBUE4aiEWQQAhCSAFQShqIRcDQCAXIAkgDWoiEkEMaikCADcDACAFIBJBBGopAgA3AyAgEigCACICQYCAgIB4RgRAIAYhAgwDCyAWIAUpAyA3AgAgFkEIaiAXKQMANwIAIAUgAjYCNAJAIBVFBEAgBSgCQBABIQcgBSgCRBABIQIgBUHMAGogBUE0ahD4BCACQYQBTwRAIAIQAAsgBSgCTCICRQ0BIAUoAlAgAkEBEPoGDAELIAUoAkAQASECIAUoAkQQASEHIAVBzABqIAVBNGoQ+AQgAkGEAU8EQCACEAALIAUoAkwiAkUNACAFKAJQIAJBARD6BgsgBSAHNgJIIAVBCGohGCAGEAEhByAFQcgAaiEKIwBB4ABrIgQkACAEQSBqIA4gDyAUELYCAkACQAJ/IAQoAiQiGiAEKAIgDQAaIARBGGohC0EAIQwjAEFAaiIDJAAgAyAUIgI2AhAgAyAPNgIMAn9BACAOKAIsRQ0AGiAOQTBqIA8gAhCrAiEeIA4oAiAiE0EQayEbIA4oAiQiGSAep3EhCCAeQhmIQv8Ag0KBgoSIkKDAgAF+ISADQAJAIAggE2opAAAiHyAghSIeQn+FIB5CgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiHlBFBEADQCACIBsgHnqnQQN2IAhqIBlxIhxBBHRrIh0oAghGBEAgDyAdKAIEIAIQqQVFDQMLIB5CAX0gHoMiHlBFDQALC0EAIB8gH0IBhoNCgIGChIiQoMCAf4NQRQ0CGiAIIAxBCGoiDGogGXEhCAwBCwsgE0EAIBxrQQR0akEQawshDCADQQI2AiQgA0G8qcAANgIgIANCATcCLCADIANBDGqtQoCAgIDAAIQ3AzggAyADQThqNgIoIANBFGogA0EgahDiAiADKAIYIhMgAygCHBACIQICQCAMRQRAQQEhCAwBC0EAIQggAkGEAU8EQCACEAALIAxBDGohAgsgAygCFCIMBEAgEyAMQQEQ+gYLIAsgAjYCBCALIAg2AgAgA0FAayQAIAQoAhwhAyAEKAIYRQRAAkACQCAKKAIAIgIQE0EBRwRAIAIQA0EBRw0BC0EAIQggAhADQQFHDQEgByECDAULIARBFzYCPCAEQeKpwAA2AjggBEEBNgJEIARBpI7BADYCQCAEQgE3AkwgBCAEQThqrUKAgICAwACENwNYIAQgBEHYAGo2AkggBEEoaiICIARBQGsQ4gIgBEEAOgA0IAIQ+wIMAgsgAhATQQFHBEAgBEFAayICQcypwABBFhDwBCACEPsCDAILIARBgQE2AlggBEEANgJAIARBEGogGiAEQUBrIggQqQIgBCgCFCICIAQoAhANARogBCACNgIoIAQgBxABIgs2AkAgCigCACAEQdgAaigCACAEQShqKAIAIAMoAgAgCCgCABB7IQNBpM7DACgCACEIQaDOwwAoAgAhCkGgzsMAQgA3AgAgBEEIaiIMIAggAyAKQQFGIgMbNgIEIAwgAzYCACAEKAIMIQMgBCgCCCEIIAtBhAFPBEAgCxAAIAQoAighAgsgAkGEAU8EQCACEAALIAQoAlgiAkGEAU8EQCACEAALIAgEQCMAQdAAayICJAAgAiADNgIEIAJBATYCNCACQZiqwAA2AjAgAkIBNwI8IAIgAkEEaq1CgICAgDCENwMIIAIgAkEIaiIDNgI4IAJBHGogAkEwaiILEOICIAIoAiAhCiACIAIoAiQ2AiwgAiAKNgIoIAJBATYCNCACQaSOwQA2AjAgAkIBNwI8IAIgAkEoaq1CgICAgMAAhDcDSCACIAJByABqNgI4IAMgCxDiAiACQQA6ABQgAxD7AiEDIAIoAhwiCwRAIAogC0EBEPoGCyACKAIEIgpBhAFPBEAgChAACyACQdAAaiQACyADIQIgB0GDAUsNAgwDCyADCyECQQEhCCAHQYMBTQ0BCyAHEAALIBggAjYCBCAYIAg2AgAgBEHgAGokACAFKAIMIQcgBSgCCEUEQCAHEAEhAiAGQYQBTwRAIAYQAAsgB0GEAU8EQCAHEAALIAUoAkgiBkGEAU8EQCAGEAALIAUoAkAiBkGEAU8EQCAGEAALIAUoAkQiBkGEAU8EQCAGEAALIAUoAjQiBgRAIAUoAjggBkEBEPoGCyACIQYgECAJQRRqIglHDQEMAwsLIAUoAkgiAkGEAU8EQCACEAALIAUoAkAiAkGEAU8EQCACEAALIAUoAkQiAkGEAU8EQCACEAALIAUoAjQiAgRAIAUoAjggAkEBEPoGCyAQQRRrIAlHBEAgEkEUaiEDIBAgCWtBFGtBFG4hCQNAIANBDGooAgAiAkGEAU8EQCACEAALIANBEGooAgAiAkGEAU8EQCACEAALIAMoAgAiAgRAIANBBGooAgAgAkEBEPoGCyADQRRqIQMgCUEBayIJDQALCyARBEAgDSARQRRsQQQQ+gYLQQEhAyAGQYQBSQRAIAchAgwECyAGEAAgByECDAMLQaSTwAAQlQYACyASQRRqCyEDIA0gEGoiBiADa0EUbiEHIAMgBkcEQANAIANBDGooAgAiBkGEAU8EQCAGEAALIANBEGooAgAiBkGEAU8EQCAGEAALIAMoAgAiBgRAIANBBGooAgAgBkEBEPoGCyADQRRqIQMgB0EBayIHDQALC0EAIQMgEUUNACANIBFBFGxBBBD6BgsgAUEBOgAQIAAgAjYCBCAAIAM2AgAgBUHgAGokAAvUCQIGfwF+IwBB4AFrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAJgDQQFrDgMJAgEACyAAIABByAFqQcgBEPoCGgsCQAJAIAAtAMQBQQFrDgMIAgEACyAAKALAASIDRQ0FIAMoAgANBiACQfgAaiADQQhqQdgAEPoCGiADQeAAQQgQ+gYgACACQSBqQbwBEPoCIgNBADoAvAEgA0G8AWohBgwJCyAAQbwBaiEGAkAgAC0AvAFBAWsOAwQBAAkLIABBuAFqIQQgAC0AuAFBAWsOAwIACgELAAsgACgCsAEhBQwHC0GUlsAAEJUGAAtB2JnAABCVBgALEKMHAAsQpAcAC0GwmcAAEJUGAAtBvIfAABCVBgALIAAgAEHYAGpB2AAQ+gIhAyACQcCZwABBFxACIgQ2AtwBEPgBBEAgAkHcAWoQuAcLIARBhAFPBEAgBBAACyADQQA6ALgBIAMgA0FAayIFNgKwASADQbgBaiEECyAAIAUoAgAQCRCRAjYCtAELIAJBGGogAEG0AWoiAyABEIoEIAYCfyACKAIYIgVBAkcEQCACKAIcIQcgAxDEAyAAQQA6AFAgAEEBOgC4ASACQeiZwABBHRACIgE2AtwBEPgBBEAgAkHcAWoQuAcLIAFBhAFPBEAgARAACyAAKAJAIgFBhAFPBEAgARAACyAAKAJMIgEEQCAAKAJIIQMDQCADQQxqKAIAIgRBhAFPBEAgBBAACyADQRBqKAIAIgRBhAFPBEAgBBAACyADKAIAIgQEQCADQQRqKAIAIARBARD6BgsgA0EUaiEDIAFBAWsiAQ0ACwsgACgCRCIBBEAgACgCSCABQRRsQQQQ+gYLAkAgACgCBCIGRQ0AIAAoAgwiBARAIAAoAgAiAUEIaiEDIAEpAwBCf4VCgIGChIiQoMCAf4MhCANAIAhQBEADQCABQYAHayEBIAMpAwAgA0EIaiEDQoCBgoSIkKDAgH+DIghCgIGChIiQoMCAf1ENAAsgCEKAgYKEiJCgwIB/hSEICyABIAh6p0EDdkGQf2xqQfAAaxD9ASAIQgF9IAiDIQggBEEBayIEDQALCyAGIAZBAWpB8ABsIgFqQQlqIgNFDQAgACgCACABayADQQgQ+gYLIABBIGoQtgNBAQwBCyAEQQM6AABBAiEFQQMLOgAAAkAgBUECRgRAQQMhAyAAQQM6AMQBDAELIAAQtAIgAEEBOgDEAQJAAkAgBQRAIAIgBzYC3AEgAkGAATYCICACQRBqIABBlANqIAJBIGogAkHcAWoQ1AUgAigCEEEBcUUEQAJAIAIoAhQiAUGEAUkNACABEAAgAigCICIBQYQBSQ0AIAEQAAsgAigC3AEiAUGEAUkNAiABEAAMAgtBuqPAAEEVEKIHAAsgAiAHNgLcASACQYABNgIgIAJBCGogAEGQA2ogAkEgaiACQdwBahDUBSACKAIIQQFxDQECQCACKAIMIgFBhAFJDQAgARAAIAIoAiAiAUGEAUkNACABEAALIAIoAtwBIgFBhAFJDQAgARAACyAAKAKQAyIBQYQBTwRAIAEQAAtBASEDIAAoApQDIgFBhAFJDQEgARAADAELQbqjwABBFRCiBwALIAAgAzoAmAMgAkHgAWokACAFQQJGC5sJAgV/An4jAEHQAGsiAiQAIAIgATYCKAJAAkACQAJAAkACQCACQShqIgEQggcEQCACQSxqIAEQ1gZBACEBIAJBADYCOCACKAIsRQ0CQQQhAyACKAI0IgQgAigCMCIFSwRAQcnNwwAtAAAaQdWqBSAEIAVrIgFBACABIARNGyIBIAFB1aoFTxsiAUEMbCIEQQQQ7QYiA0UNAgsgAkEANgJEIAIgAzYCQCACIAE2AjwDQCACQRBqIAJBLGoQxwUgAigCEEUNBCACKAIUIQUgAiACKAI4QQFqNgI4IAIgBTYCSCACQQhqIAUQCyACKAIMIQECQCACKAIIIgQEQCABIgNBgICAgHhHDQELIAJByABqIAJBzwBqQdz4wAAQmgIhBEGAgICAeCEDCyAFQYQBTwRAIAUQAAsgBK0hBwJAAkAgA0GAgICAeEYEQCAHIAiEIQcMAQsgAa1CIIYiCCAHhCEHIANBgYCAgHhHDQELIABBgICAgHg2AgAgACAHPgIEIAIoAkQiAwRAIAIoAkAhAQNAIAEoAgAiAARAIAFBBGooAgAgAEEBEPoGCyABQQxqIQEgA0EBayIDDQALCyACKAI8IgBFDQYgAigCQCAAQQxsQQQQ+gYMBgsgAigCRCIBIAIoAjxGBEAgAkE8ahDBAwsgAigCQCABQQxsaiIEIAc3AgQgBCADNgIAIAIgAUEBajYCRCACKAIsDQALDAMLIAJBLGogAkEoahCZAyACKAIsIQECQAJAAkAgAi0AMCIFQQJrDgICAAELIABBgICAgHg2AgAgACABNgIEIAIoAigiAUGDAUsNBgwHCyACIAU6AEAgAiABNgI8IAJCgICAgMAANwIsQQAhAQJAA0ACQCACIAE2AjQgAkEgaiACQTxqEL8EIAIoAiQhAQJAAkAgAigCICIFBEAgBUECaw0BDAMLIAIgATYCSCACQRhqIAEQCwJAIAIoAhgiBgRAIAIoAhwiAyEFIANBgICAgHhHDQELIAJByABqIAJBzwBqQdz4wAAQmgIhBkGAgICAeCEDIAQhBQsgAUGEAU8EQCABEAALIANBgICAgHhHDQEgBiEBCyAAQYCAgIB4NgIAIAAgATYCBCACKAI0IgMEQCACKAIwIQEDQCABKAIAIgAEQCABQQRqKAIAIABBARD6BgsgAUEMaiEBIANBAWsiAw0ACwsgAigCLCIABEAgAigCMCAAQQxsQQQQ+gYLIAIoAjwiAUGDAUsNAwwICyACKAI0IgEgAigCLEYEQCACQSxqEMEDCyACKAIwIAFBDGxqIgQgBTYCCCAEIAY2AgQgBCADNgIAIAFBAWohASAFIQQMAQsLIAAgAikCLDcCACAAQQhqIAJBNGooAgA2AgAgAigCPCIBQYMBTQ0FCyABEAAMBAsgAkEoaiACQc8AakGs+cAAEJoCIQEgAEGAgICAeDYCACAAIAE2AgQMAwtBBCAEENkGAAsgAkEANgJEIAJCgICAgMAANwI8CyAAIAIpAjw3AgAgAEEIaiACQcQAaigCADYCAAsgAigCKCIBQYMBTQ0BCyABEAALIAJB0ABqJAAL7QgCBn8CfiMAQcACayIFJAACfkGg0sMAKAIAQQFGBEBBsNLDACkDACEMQajSwwApAwAMAQtCAiEMQbDSwwBCAjcDAEGg0sMAQgE3AwBCAQshCyAFQShqQfiHwQApAwA3AwAgBSALNwMwQajSwwAgC0IBfDcDACAFIAw3AzggBUHwh8EAKQMANwMgIAUgAhABNgLQASAFQcQAaiAFQdABahDDBxDNBiAFKALQASIGQYQBTwRAIAYQAAsgBUHYAGogBUHMAGooAgA2AgAgBSAFKQJENwNQIAVBGGogBUHQAGoQzwUCQAJAAkAgBSgCGEUNACAFQfAAakEEciEIIAVB0AFqQQRyIQkgBSgCHCEGAkADQCAFIAY2AmAgBUEQaiAGEAsgBSgCECIHRQRAQYCIwQBBFxACIQYgAEECNgIAIAAgBjYCBAwECyAFKAIUIQYgBSAHNgJoIAUgBjYCbCAFIAY2AmQgBSACEAE2AtABIAVBCGogBUHQAWogBUHgAGoQ4wUgBSgCDCEGIAUoAggEQCAAQQI2AgAgACAGNgIEIAUoAtABIgBBhAFJDQIgABAADAILIAUoAtABIgdBhAFPBEAgBxAACyAFQdABaiIKIAYQggMgBSgC0AEhBiAFKAKkAiIHQYCAgIB4RwRAIAggCUHQABD6AhogBSAHNgLEASAFIAY2AnAgBSAFKQOoAjcDyAEgBUG0AmoiBiAFQeQAahD4BCAKIAVBIGogBiAFQfAAahCKAiAFKAKkAkGAgICAeEcEQCAKEPgCCyAFKAJkIgYEQCAFKAJoIAZBARD6BgsgBSgCYCIGQYQBTwRAIAYQAAsgBSAFQdAAahDPBSAFKAIEIQYgBSgCAA0BDAMLCyAAQQI2AgAgACAGNgIECyAFKAJkIgBFDQEgBSgCaCAAQQEQ+gYMAQsgBSgCWCIGQYQBTwRAIAYQAAsgACAFKQMgNwMIIAAgBDYCBCAAIAM2AgAgACABKQIANwIoIABBMGogAUEIaigCADYCACAAQRBqIAVBKGopAwA3AwAgAEEYaiAFQTBqKQMANwMAIABBIGogBUE4aikDADcDACACQYQBSQ0BIAIQAAwBCyAFKAJgIgBBhAFPBEAgABAACyAFKAJYIgBBhAFPBEAgABAACwJAIAUoAiQiCEUNACAFKAIsIgkEQCAFKAIgIgBBCGohBiAAKQMAQn+FQoCBgoSIkKDAgH+DIQsDQCALUARAA0AgAEGAB2shACAGKQMAIAZBCGohBkKAgYKEiJCgwIB/gyILQoCBgoSIkKDAgH9RDQALIAtCgIGChIiQoMCAf4UhCwsgACALeqdBA3ZBkH9sakHwAGsQ/QEgC0IBfSALgyELIAlBAWsiCQ0ACwsgCCAIQQFqQfAAbCIAakEJaiIGRQ0AIAUoAiAgAGsgBkEIEPoGCyADRSAEQYQBSXJFBEAgBBAACyACQYQBTwRAIAIQAAsgASgCACIARQ0AIAEoAgQgAEEBEPoGCyAFQcACaiQAC9AHAQh/IAAgAhCYAiAAQTBqIAJBMGoiBBCYAiABIAIgBCACQTRqKAIAIAJBBGooAgAgAkE4aigCACIFIAJBCGooAgAiAyADIAVLGxCpBSIAIAUgA2sgABsiBUEATiIDGyIAKQIANwIAIAFBCGogAEEIaigCADYCACABIAJB1ABqIgkgAkEkaiIHIAJB2ABqKAIAIAJBKGooAgAgAkHcAGooAgAiBiACQSxqKAIAIgggBiAISRsQqQUiACAGIAhrIAAbIghBAE4bIgApAgA3AlQgAUHcAGogAEEIaigCADYCACABIAIgA0EMbGoiBiAEIAVBH3ZBDGxqIgQgBEEEaigCACAGQQRqKAIAIARBCGooAgAiAyAGQQhqKAIAIgIgAiADSxsQqQUiACADIAJrIAAbIgVBAE4iAxsiACkCADcCDCABQRRqIABBCGooAgA2AgAgByAIQR91IgBBDGxqIQogASAJIABBf3NBDGxqIgcgCiAHQQRqKAIAIApBBGooAgAgB0EIaigCACIIIApBCGooAgAiAiACIAhLGxCpBSIAIAggAmsgABsiAkEAThsiACkCADcCSCABQdAAaiAAQQhqKAIANgIAIAEgBiADQQxsaiIGIAQgBUEfdkEMbGoiCSAJQQRqKAIAIAZBBGooAgAgCUEIaigCACIFIAZBCGooAgAiAyADIAVLGxCpBSIAIAUgA2sgABsiBUEATiIDGyIAKQIANwIYIAFBIGogAEEIaigCADYCACAKIAJBH3UiAEEMbGohBCABIAcgAEF/c0EMbGoiByAEIAdBBGooAgAgBEEEaigCACAHQQhqKAIAIgggBEEIaigCACICIAIgCEsbEKkFIgAgCCACayAAGyICQQBOGyIAKQIANwI8IAFBxABqIABBCGooAgA2AgAgASAGIANBDGxqIgYgCSAFQR92QQxsaiIJIAlBBGooAgAgBkEEaigCACAJQQhqKAIAIgUgBkEIaigCACIDIAMgBUsbEKkFIgAgBSADayAAGyIFQQBOIgMbIgApAgA3AiQgAUEsaiAAQQhqKAIANgIAIAQgAkEfdSIAQQxsaiEEIAEgByAAQX9zQQxsaiIHIAQgB0EEaigCACAEQQRqKAIAIAdBCGooAgAiCCAEQQhqKAIAIgIgAiAISxsQqQUiACAIIAJrIAAbIgJBAE4bIgApAgA3AjAgAUE4aiAAQQhqKAIANgIAAkAgBiADQQxsaiAEIAJBH3UiAEEMbGpBDGpGBEAgCSAFQR92QQxsaiAHIABBf3NBDGxqQQxqRg0BCxCUBgALC+sJAQp/IwBBQGoiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAMgBQQFrDgMPAgEACyAAIABB6ABqQeAAEPoCGgsCQAJAAkACQCAALQBcQQFrDgMQBAEACyAAKAIAIgNFDRQgAygCACIEQX9GDRUgAyAEQQFqNgIAIAAgAzYCFCAAIANBCGoiAzYCECAAQQA6AFggACADNgIgIAAgACgCCCIENgIcIAAgACgCBCIFNgIYIAAgACgCDCIGNgIsIAAgBDYCKCAAIAU2AiQMAQsCQCAALQBYQQFrDgMOAwIACyAAKAIsIQYgACgCKCEEIAAoAiQhBSAAKAIgIQMLIABBADoAVCAAIAY2AjwgACAENgI4IAAgBTYCNCAAIAM2AjAgAEHUAGohByAAQTBqIQgMAwsgAEEwaiEIIABB1ABqIQcgAC0AVEEBaw4DCAADAQsACyAAKAI8IQYgACgCOCEEIAAoAjQhBSAAKAIwIQMLIAAgBjYCQCACQTBqIANBOGogBSAEEN0FIABBQGshBiACKAI0IQMgAigCMA0DIAAgAzYCRCACQShqIABBxABqIgkgBSAEENwFIAIoAiwhAyACKAIoDQIgACADNgJIIABByABqIgQoAgAgBigCABBEIQNBpM7DACgCACEFQaDOwwAoAgAhCkGgzsMAQgA3AgAgAkEgaiILIAUgAyAKQQFGIgMbNgIEIAsgAzYCACACKAIkIQMgAigCIA0BIAAgAzYCTCACIABBzABqNgI8IAAgAkE8akGojcAAEMQHEJECNgJQCyACQRhqIABB0ABqIgUgARCKBCACKAIYIgRBAkYNBSACKAIcIQMgBRDEAyAAKAJMIgFBhAFPBEAgARAACyAAKAJIIgFBhAFPBEAgARAACyAAKAJEIgFBhAFPBEAgARAACyAAKAJAIgFBhAFJDQMgARAADAMLIAQoAgAiAUGEAUkNACABEAALIAkoAgAiAUGEAUkNACABEAALQQEhBCAGKAIAIgFBhAFJDQAgARAACyAHQQE6AAAMAgtBvI3AABCVBgALIAdBAzoAAEECIQQLIARBAkYNAyAIENgEIABBAToAWCAAQRxqKAIAIgEEQCAAKAIYIAFBARD6BgsgAEEUaigCACIBIAEoAgBBAWs2AgAgAEEBOgBcIAQNBCACIAM2AjggAkGAATYCPCACQQhqIABB4ABqIAJBPGogAkE4ahDUBSACKAIIQQFxDQgCQCACKAIMIgFBhAFJDQAgARAAIAIoAjwiAUGEAUkNACABEAALIAIoAjgiAUGEAUkNBSABEAAMBQtB5JbAABCVBgALQbSWwAAQlQYAC0G8h8AAEJUGAAtBAyEFIABBAzoAXCAAQQM6AFgMBgsgAiADNgI4IAJBgAE2AjwgAkEQaiAAQeQAaiACQTxqIAJBOGoQ1AUgAigCEEEBcQ0EAkAgAigCFCIBQYQBSQ0AIAEQACACKAI8IgFBhAFJDQAgARAACyACKAI4IgFBhAFJDQAgARAACyAAKAJgIgFBhAFPBEAgARAAC0EBIQUgACgCZCIBQYQBSQ0EIAEQAAwECxCjBwALEKQHAAtBuqPAAEEVEKIHAAtBuqPAAEEVEKIHAAsgACAFOgDIASACQUBrJAAgBEECRguOCQIPfwF+IwBBIGsiCSQAIABBufPd8XlsIQ0gAC0AACEBA0AgBUEJSyEDAkADQCABQQFxRQRAIAFB/wFxIQIgACABQQFyIAAtAAAiASABIAJGIgIbOgAAIAJFDQEMAgsgAUECcSICIANyRQRAIAVBAWohBSAALQAAIQEMAwsgAkUEQCABQf8BcSECIAAgAUECciAALQAAIgEgASACRhs6AAAgASACRw0BCwsgCUEANgIIQdTNwwAoAgBFBEAjAEEwayIDJABBzM3DAEHMzcMAKAIAQQFqIgg2AgAgCEEDbCEGAkACQAJAA0BB0M3DACgCACIBRQRAEKQFIQELIAEoAgQiAiAGTw0BIAIEQCABKAIAIQQgAkEGdCEFA0AgBCAEKAIAIgJBASACGzYCACACBEAgBBCgBAsgBEFAayEEIAVBQGoiBQ0ACwsCQCABQdDNwwAoAgBGBEAgCCABEPUCIQcgASgCBCIKRQ0BIAEoAgAiASAKQQZ0aiEOIAEhBQNAIAVBBGooAgAiBARAQQAgBygCCGtBH3EhDyAHKAIAIQggBygCBCELA0AgBCgCAEG5893xeWwgD3YiBiALTw0HIAQoAgQgCCAGQQZ0aiIMKAIIIgYgDCAGGyAENgIEIAwgBDYCCCAEQQA2AgQiBA0ACwsgBUFAayIFIA5HDQALQdDNwwAgBzYCACAKQQZ0IQQDQCABIAEoAgAiAkEBazYCACACQQJxIAJBBElyRQRAIAEQkQMLIAFBQGshASAEQUBqIgQNAAsMAwsgASgCBCICRQ0BIAEoAgAhBCACQQZ0IQUDQCAEIAQoAgAiAkEBazYCACACQQJxIAJBBElyRQRAIAQQkQMLIARBQGshBCAFQUBqIgUNAAsMAQsLQdDNwwAgBzYCAAsgA0IANwIAIANBEGpBADoAACADQQhqQgA3AgAMAQsgBiALQbTbwQAQ6wQAC0HUzcMAKQIAIRBB1M3DAEEBNgIAIANBKGpB5M3DACkCADcDACADQSBqQdzNwwApAgA3AwBB2M3DACADKQMANwIAQeDNwwAgA0EIaikDADcCAEHozcMAIANBEGooAgA2AgAgAyAQNwMYIBCnBEAQ7wYLIANBMGokAAsCQAJAA0BB0M3DACgCACIBRQRAEKQFIQELIA1BACABKAIIa3YiAyABKAIEIgJPDQEgASgCACADQQZ0aiIDIAMoAgAiAkEBIAIbNgIAIAIEQCADEKAECyABQdDNwwAoAgBHBEAgAyADKAIAIgJBAWs2AgAgAkECcSACQQRJcg0BIAMQkQMMAQsLIAAtAABBA0cEQCADIAMoAgAiAkEBazYCACACQQJxIAJBBElyDQIgAxCRAwwCC0HczcMAQQA2AgBB6M3DAEEAOgAAQeTNwwBBADYCAEHYzcMAIAA2AgAjAEEgayIAJAAgAEEANgIYIABBATYCDCAAQezbwQA2AgggAEIENwIQIABBCGpB6NzBABC0BQALIAMgAkGo2sEAEOsEAAsgCSgCCARAEO8GC0EAIQUgAC0AACEBDAELCyAJQSBqJAALoQgCGn8DfiMAQfAAayIDJAAgASgCCCIIrULoAH4iHKchBgJAAkAgHEIgiKcgBkH4////B0tyDQACQCAGRQRAQQghCgwBCyABKAIEIQ9Byc3DAC0AABpBCCEEIAZBCBDtBiIKRQ0BIAhFDQAgA0HQAGoiAUEBciELIANB2ABqIQkgAUEEciEFQQAhBCAIIQEDQCAEIAZGDQFBgICAgHghDSAEIA9qIgJB5ABqLQAAIRAgAkHYAGoiBygCAEGAgICAeEcEQCADQdAAaiAHENEBIAMoAlAhDSADKQJUIRwLIAJBDGooAgAhESACQQhqKAIAIRIgAkEEaigCACETIAIoAgAhFCACQThqIgcoAgAEfyACQdAAaikDACEdIAJByABqKQMAIR4gA0HQAGogBxDHASADIB43A2AgA0EgaiAFQQhqKQIANwMAIAMgHTcDaCADQShqIAVBEGopAgA3AwAgA0EwaiAFQRhqKAIANgIAIAMgBSkCADcDGCADKAJQBUEACyEHIAJBHGooAgAhFSACQRhqKAIAIRYgAkEUaigCACEXIAJBEGooAgAhGCACQSBqLQAAIg5BBkcEQAJAAkACQAJAAkACQCAOQQFrDgUAAQIDBAULIAMgAkEhai0AADoAUQwECyAJQQhqIAJBMGopAwA3AwAgCSACQShqKQMANwMADAMLIAUgAkEkahD4BAwCCyAFIAJBKGooAgAgAkEsaigCABCZAgwBCyACQSxqKAIARQRAIANBADYCXCADQQA2AlQMAQsgAkEkaigCACIMRQ0FIAUgDCACQShqKAIAEMEBCyADQccAaiALQQ9qKQAANwAAIANBQGsgC0EIaikAADcDACADIAspAAA3AzgLIANB6ABqIgwgA0EwaigCADYCACADQeAAaiIZIANBKGopAwA3AwAgCSADQSBqKQMANwMAIAMgAykDGDcDUCADQQ9qIhogA0HHAGopAAA3AAAgA0EIaiIbIANBQGspAwA3AwAgAyADKQM4Ih03AwAgBCAKaiICQSBqIA46AAAgAkEcaiAVNgIAIAJBGGogFjYCACACQRRqIBc2AgAgAkEQaiAYNgIAIAJBDGogETYCACACQQhqIBI2AgAgAkEEaiATNgIAIAIgFDYCACACQSFqIB03AAAgAkEpaiAbKQMANwAAIAJBMGogGikAADcAACACQThqIAc2AgAgAkE8aiADKQNQNwIAIAJBxABqIAkpAwA3AgAgAkHMAGogGSkDADcCACACQdQAaiAMKAIANgIAIAJB5ABqIBA6AAAgAkHcAGogHDcCACACQdgAaiANNgIAIARB6ABqIQQgAUEBayIBDQALCyAAIAg2AgggACAKNgIEIAAgCDYCACADQfAAaiQADwsgBCAGENkGAAtBgKjAABCIBwAL1ggCDX8BfiMAQYABayIFJAAgBUEIaiABQegDaikCADcDACAFQRBqIAEpAvADNwMAIAVBGGogAUH4A2opAgA3AwAgBSABKQLgAzcDACAEQRBPBEAgBEFwcSEHIAMhAQNAIAVB+ABqIgggAUEIaikAADcDACAFIAEpAAAiEjcDcCAFIAUtAH86AHAgBSASPAB/IAUtAHEhBiAFIAUtAH46AHEgBSAGOgB+IAUtAHIhBiAFIAUtAH06AHIgBSAGOgB9IAUtAHwhBiAFIAUtAHM6AHwgBSAGOgBzIAUtAHshBiAFIAUtAHQ6AHsgBSAGOgB0IAUtAHohBiAFIAUtAHU6AHogBSAGOgB1IAUtAHkhBiAFIAUtAHY6AHkgBSAGOgB2IAgtAAAhBiAIIAUtAHc6AAAgBSAGOgB3IAFBEGohASAFIAVB8ABqELsEIAdBEGsiBw0ACwsgBEEPcSIBBEAgBUHgAGoiByABakEAQRAgAWsQ+QMaIAcgAyAEQXBxaiABEPoCGiAFQfgAaiIBIAVB6ABqKQAANwMAIAUgBSkAYCISNwNwIAUgBS0AfzoAcCAFIBI8AH8gBS0AcSEDIAUgBS0AfjoAcSAFIAM6AH4gBS0AciEDIAUgBS0AfToAciAFIAM6AH0gBS0AfCEDIAUgBS0AczoAfCAFIAM6AHMgBS0AeyEDIAUgBS0AdDoAeyAFIAM6AHQgBS0AeiEDIAUgBS0AdToAeiAFIAM6AHUgBS0AeSEDIAUgBS0AdjoAeSAFIAM6AHYgAS0AACEDIAEgBS0AdzoAACAFIAM6AHcgBSAFQfAAahC7BAsgBUH4AGpCADcAACAFQQA2AHUgBSAErSISQgOGPABwIAUgEkIFiDwAcSAFIBJCDYg8AHIgBSASQhWIPABzIAUgEkIdiDwAdCAFIAVB8ABqIgEQuwQgBUHIAGogBUEIaikDADcDACAFQdAAaiAFQRBqKQMANwMAIAVB2ABqIAVBGGopAwA3AwAgBSAFKQMANwNAIAEgBUFAayIDKQIYNwAIIAEgAykCEDcAACAFLQB/IQEgBS0AfiEDIAUtAH0hBCAFLQB8IQcgBS0AeyEIIAUtAHohBiAFLQB5IQkgBS0AeCEKIAUtAHchCyAFLQB2IQwgBS0AdSENIAUtAHQhDiAFLQBzIQ8gBS0AciEQIAUtAHEhESAAIAUtAHAgAi0AD3M6AA8gACARIAItAA5zOgAOIAAgECACLQANczoADSAAIA8gAi0ADHM6AAwgACAOIAItAAtzOgALIAAgDSACLQAKczoACiAAIAwgAi0ACXM6AAkgACALIAItAAhzOgAIIAAgCiACLQAHczoAByAAIAkgAi0ABnM6AAYgACAGIAItAAVzOgAFIAAgCCACLQAEczoABCAAIAcgAi0AA3M6AAMgACAEIAItAAJzOgACIAAgAyACLQABczoAASAAIAEgAi0AAHM6AAAgBUGAAWokAAu6CAEGfyMAQdAAayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AeEEBaw4DCQIBAAsgACAAKQJANwIAIABBMGogAEHwAGopAgA3AgAgAEEoaiAAQegAaikCADcCACAAQSBqIABB4ABqKQIANwIAIABBGGogAEHYAGopAgA3AgAgAEEQaiAAQdAAaikCADcCACAAQQhqIABByABqKQIANwIACwJAAkACQAJAIAAtADRBAWsOAwoEAQALIAAoAgAiAkUNDyACKAIAIgRBf0YNECACIARBAWo2AgAgACACNgIMIAAgAkEIaiICNgIIIABBADoAMCAAIAI2AhAgACAAKAIEIgQ2AhQMAQsCQCAALQAwQQFrDgMHAwIACyAAKAIUIQQgACgCECECCyACQdQAaigCACEFIAJB2ABqKAIAIQYgAEEAOgAsIAAgBDYCJCAAIAY2AiAgACAFNgIcIAAgAkFAayICNgIYIABBLGohBwwDCyAAQSxqIQcgAC0ALEEBaw4DDgADAQsACyAAKAIkIQQgACgCICEGIAAoAhwhBSAAKAIYIQILIAAgAigCACAFIAYgBBANEJECNgIoCyADQRhqIABBKGoiBCABEIoEIAMoAhgiAUECRg0EIAMoAhwhAiAEEMQDIAdBAToAACABDQEgAEEBOgAwIABBDGooAgAiBCAEKAIAQQFrNgIAIABBAToANCADIAI2AiQgA0GAATYCMCADQQhqIABBOGogA0EwaiADQSRqENQFIAMoAghBAXFFDQVBuqPAAEEVEKIHAAtBwJTAABCVBgALIAMgAjYCICADQQE2AjQgA0HslMAANgIwIANCATcCPCADQQM2AkwgAyADQcgAajYCOCADIANBIGo2AkggA0EkaiADQTBqEOICIAMoAigiAiADKAIsEMAHIQQgAygCJCIFBEAgAiAFQQEQ+gYLIAMoAiAiAkGEAU8EQCACEAALIABBAToAMCAAQQxqKAIAIgIgAigCAEEBazYCACAAQQE6ADQgAyAENgIkIANBgAE2AjAgA0EQaiAAQTxqIANBMGogA0EkahDUBSADKAIQQQFxRQ0EQbqjwABBFRCiBwALQbCUwAAQlQYAC0G8h8AAEJUGAAtBAyEEIABBAzoANCAAQQM6ADAgAEEDOgAsDAYLAkAgAygCDCICQYQBSQ0AIAIQACADKAIwIgJBhAFJDQAgAhAACyADKAIkIgJBhAFJDQEgAhAADAELAkAgAygCFCICQYQBSQ0AIAIQACADKAIwIgJBhAFJDQAgAhAACyADKAIkIgJBhAFJDQAgAhAACyAAKAI4IgJBhAFPBEAgAhAAC0EBIQQgACgCPCICQYQBSQ0DIAIQAAwDCxCjBwALEKQHAAtBlJbAABCVBgALIAAgBDoAeCADQdAAaiQAIAFBAkYLsysDEH8EfgF8IwBBkAFrIgUkACAFIAE2AkwCQAJAAkACQCAFQcwAahDwBkUEQEEAIQECQAJAAkAgBSgCTBAaDgIBAAILQQEhAQsgACABOgABIABBAToAAAwCCyAFKAJMEBggBSgCTCEBQQFGDQIgBUE4aiABEAwCQCAFKAI4RQRAIAVBMGogBSgCTBALAkAgBSgCMCIDRQ0AIAUoAjQhASAFIAM2AmwgBSABNgJwIAUgATYCaCAFQShqIAVB6ABqENYEIAUoAiwiAUGAgICAeEYNACAFKAIoIQMgACABNgIMIAAgAzYCCCAAIAE2AgQgAEEDOgAADAQLIAVBzABqIgQQggcNASAFQegAaiEDIwBBEGsiASQAAkAgBBCGBwRAIAFBBGogBBCfBCADQQhqIAFBDGooAgA2AgAgAyABKQIENwIADAELIAQQhAdFBEAgA0GAgICAeDYCAAwBCyABIAQQxQciBDYCACABQQRqIAEQnwQgA0EIaiABQQxqKAIANgIAIAMgASkCBDcCACAEQYQBSQ0AIAQQAAsgAUEQaiQAIAUoAmhBgICAgHhHBEAgBUHYAGogBUHwAGooAgA2AgAgBSAFKQJoNwNQIwBBIGsiAyQAIAVB0ABqIgQoAgQhAiADIAQoAgg2AhAgAyACNgIMIANBBjoACCMAQTBrIgEkACABQYypwAA2AgQgASADQR9qNgIAIAFBAjYCDCABQeyiwQA2AgggAUICNwIUIAEgAa1CgICAgNAihDcDKCABIANBCGqtQoCAgIDgIoQ3AyAgASABQSBqNgIQIAFBCGoQzgMhBiABQTBqJAAgAEEGOgAAIAAgBjYCBCAEKAIAIgAEQCACIABBARD6BgsgA0EgaiQADAQLAkACQCAFKAJMEBZBAUcNABBoIgEgBSgCTBAbQQFHDQEgAUGEAUkNACABEAALIAVBzABqIAVBjwFqQcz5wAAQmgIhASAAQQY6AAAgACABNgIEDAQLIAFBhAFPBEAgARAACyAFKAJMIQQjAEEwayIDJAAgAyAENgIQIANBGGogA0EQahCZAyADKAIYIQECQAJAAkACQAJAAkAgAy0AHCICQQJrDgICAAELIABBBjoAACAAIAE2AgQgBEGDAUsNAwwECyADIAI6ACQgAyABNgIgIANBADYCGCMAQfABayIBJAAgAUEIaiEGIwBBIGsiAiQAIAJBEGogA0EYaiIEQQhqEL8EIAIoAhQhBwJAAkACQAJAIAIoAhBBAWsOAgEAAgsgBkGAgICAeDYCAAwCCyAGQYGAgIB4NgIAIAYgBzYCBAwBCyACQQhqIAcQlQUgAigCDCEIIAIoAgghBwJAIAQoAgBFDQAgBCgCBCIJQYQBSQ0AIAkQAAsgBCAINgIEIARBATYCACACIAc2AhggAiAHEAsgAigCBCEIAn8gAigCACIJBEAgCCAIQYCAgIB4Rw0BGgsgAkEYaiACQR9qQez4wAAQmgIhCUGAgICAeAshCyAHQYQBTwRAIAcQAAsgC0GAgICAeEcEQCAGIAg2AgggBiAJNgIEIAYgCzYCAAwBCyAGQYGAgIB4NgIAIAYgCTYCBAsgAkEgaiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAggiAkGAgICAeGsOAgIAAQsgACABKAIMNgIEIABBBjoAAAwKCyABKQIMIRIgAUEANgIcIAFBADYCFCABIBI3AmQgASACNgJgIAQoAgAgBEEANgIARQ0FIAFBOGogBCgCBBDUASABLQA4QQZGDQcgAUEwaiABQcgAaikDADcDACABQShqIAFBQGsiESkDADcDACABIAEpAzg3AyAgAUHQAWogAUEUaiABQeAAaiABQSBqEOYBIAEtANABDgcEBAQCAwEEAQsgAEEANgIMIABBADYCBCAAQQU6AAAMCAsgAUHQAWpBBHIQ+wEMAgsgASgC1AEiAkUNASABKALYASACQQEQ+gYMAQsgAUHQAWpBBHIQuQQgASgC1AEiAkUNACABKALYASACQRhsQQgQ+gYLIAFB5ABqIQkgAUHEAGohByABQdQBaiELIAFB0AFqQQRyIQ8DQAJAIAFBrAFqIQYjAEEgayICJAAgAkEQaiAEQQhqEL8EIAIoAhQhCAJAAkACQAJAIAIoAhBBAWsOAgEAAgsgBkGAgICAeDYCAAwCCyAGQYGAgIB4NgIAIAYgCDYCBAwBCyACQQhqIAgQlQUgAigCDCEMIAIoAgghCAJAIAQoAgBFDQAgBCgCBCINQYQBSQ0AIA0QAAsgBCAMNgIEIARBATYCACACIAg2AhggAiAIEAsgAigCBCEMAn8gAigCACINBEAgDCAMQYCAgIB4Rw0BGgsgAkEYaiACQR9qQdz4wAAQmgIhDUGAgICAeAshECAIQYQBTwRAIAgQAAsgEEGAgICAeEcEQCAGIAw2AgggBiANNgIEIAYgEDYCAAwBCyAGQYGAgIB4NgIAIAYgDTYCBAsgAkEgaiQAAkACQAJAAkAgASgCrAEiAkGAgICAeGsOAgQAAQsgASgCsAEhBgwBCyABKQKwASESIAEoArABIAQoAgAgBEEANgIARQ0FIAFBuAFqIAQoAgQQ1AEgAS0AuAFBBkcNASABKAK8ASEGIAJFDQAgAkEBEPoGCyAAQQY6AAAgACAGNgIEDAYLIAsgASkDuAE3AgAgC0EQaiABQcgBaikDADcCACALQQhqIAFBwAFqKQMANwIAIAFB6ABqIAFB2AFqKQIAIhM3AwAgAUHwAGogAUHgAWopAgAiFDcDACABQfgAaiIGIAFB6AFqKAIANgIAIAEgASkC0AEiFTcDYCAHQRBqIBQ3AgAgB0EIaiATNwIAIAcgFTcCACAHQRhqIAYoAgA2AgAgASASpyIONgI8IAEgAjYCOCARIBJCIIinIgo2AgAgAUGIAWogCjYCACABIAEpAzg3A4ABIAFBoAFqIAlBEGopAgA3AwAgAUGYAWogCUEIaikCADcDACABIAkpAgA3A5ABIAFB0AFqIAFBFGogAUGAAWogAUGQAWoQ5gECQAJAAkAgAS0A0AEOBwQEBAECAAQACyAPEPsBDAMLIAEoAtQBIgJFDQIgASgC2AEgAkEBEPoGDAILIA8QuQQgASgC1AEiAkUNASABKALYASACQRhsQQgQ+gYMAQsLIAEgCjYCQCABIA42AjwgAUGAgICAeDYCOCABQThqENMEIAFBwwBqIAFBHGooAgA2AAAgAEEFOgAAIAEgASkCFDcAOyAAIAEpADg3AAEgAEEIaiABQT9qKQAANwAADAQLQeH5wABBFRCiBwALQeH5wABBFRCiBwALIAAgASgCPDYCBCAAQQY6AAAgAkUNACASpyACQQEQ+gYLIAFBFGoQ+wELIAQoAggiAEGEAU8EQCAAEAALAkAgBCgCAEUNACAEKAIEIgBBgwFNDQAgABAACyABQfABaiQADAELIANBCGogA0EQahCYBiADKAIIBEAgAyADKAIMNgIUIANBIGogA0EUahDWBiADQQA2AiwgA0EANgIYIwBBsAFrIgEkACABQQxqIQYjAEEgayICJAACQAJAAkAgA0EYaiIEKAIIRQ0AIAJBEGogBEEIahDHBSACKAIQIgdFDQAgAkEIaiACKAIUEJUFIAdBAXENAQsgBkGAgICAeDYCAAwBCyACKAIMIQggAigCCCEHIAQgBCgCFEEBajYCFAJAIAQoAgBFDQAgBCgCBCIKQYQBSQ0AIAoQAAsgBCAINgIEIARBATYCACACIAc2AhggAiAHEAsgAigCBCEIAn8gAigCACIKBEAgCCAIQYCAgIB4Rw0BGgsgAkEYaiACQR9qQez4wAAQmgIhCkGAgICAeAshCSAHQYQBTwRAIAcQAAsgCUGAgICAeEcEQCAGIAg2AgggBiAKNgIEIAYgCTYCAAwBCyAGQYGAgIB4NgIAIAYgCjYCBAsgAkEgaiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCDCICQYCAgIB4aw4CAgABCyAAIAEoAhA2AgQgAEEGOgAADAoLIAEpAhAhEiABQQA2AiAgAUEANgIYIAEgEjcCKCABIAI2AiQgBCgCACAEQQA2AgBFDQogAUHIAGogBCgCBBDUASABLQBIQQZGDQUgAUFAayABQdgAaiICKQMANwMAIAFBOGogAUHQAGopAwA3AwAgASABKQNINwMwIAFBmAFqIAFBGGogAUEkaiABQTBqEOYBIAEtAJgBDgcEBAQCAwEEAQsgAEEANgIMIABBADYCBCAAQQU6AAAMCgsgAUGYAWpBBHIQ+wEMAgsgASgCnAEiBkUNASABKAKgASAGQQEQ+gYMAQsgAUGYAWpBBHIQuQQgASgCnAEiBkUNACABKAKgASAGQRhsQQgQ+gYLIAFByABqIAQQ1wIgASgCSEGBgICAeEYNAiABQZgBakEEciEGDAELIAAgASgCTDYCBCAAQQY6AAAgAkUNAiASpyACQQEQ+gYMAgsDQCABKAJIQYCAgIB4RwRAIAFB+ABqIAFB0ABqKAIANgIAIAFBiAFqIAJBCGopAwA3AwAgAUGQAWogAkEQaikDADcDACABIAEpA0g3A3AgASACKQMANwOAASABQZgBaiABQRhqIAFB8ABqIAFBgAFqEOYBAkACQAJAAkAgAS0AmAEOBwMDAwECAAMACyAGEPsBDAILIAEoApwBIgdFDQEgASgCoAEgB0EBEPoGDAELIAYQuQQgASgCnAEiB0UNACABKAKgASAHQRhsQQgQ+gYLIAFByABqIAQQ1wIgASgCSEGBgICAeEcNAQwCCwsgAUHIAGoQ0wQgAUHTAGogAUEgaigCADYAACAAQQU6AAAgASABKQIYNwBLIAAgASkASDcAASAAQQhqIAFBzwBqKQAANwAADAQLIAAgASgCTDYCBCAAQQY6AAALIAFBGGoQ+wELIAQoAgBFDQMgBCgCBCIAQYMBSw0CDAMLQfCMwQBBLEH8jcEAEIwFAAsgBCgCAEUNASAEKAIEIgBBgwFNDQELIAAQAAsgAUGwAWokACADKAIUIgBBhAFJDQEgABAADAELIANBEGogA0EYakHM+cAAEJoCIQEgAEEGOgAAIAAgATYCBAsgAygCECIEQYQBSQ0BCyAEEAALIANBMGokAAwFCyAFKwNAIRYgBUHMAGoQhQdFBEAgACAWOQMQIABCAjcDCCAAIBa9Qv///////////wCDQoCAgICAgID4/wBUQQF0OgAADAMLIABBAjoAACAWRAAAAAAAAODDZiEBIABC////////////AAJ+IBaZRAAAAAAAAOBDYwRAIBawDAELQoCAgICAgICAgH8LQoCAgICAgICAgH8gARsgFkT////////fQ2QbQgAgFiAWYRsiEjcDECAAIBJCP4g3AwgMAgsgBSgCTCEDIwBBgAFrIgEkACABIAM2AhgCQCABQRhqIgMQggcEQCABQRxqIAMQ1gYgAUEANgIoIAFBADYCNCABQoCAgICAATcCLAJAIAEoAhxFDQAgAUHwAGohBCABQegAakEBciECA0AgAUEIaiABQRxqEMcFIAEoAghFDQEgASgCDCEDIAEgASgCKEEBajYCKCABQegAaiADENQBIAEtAGgiB0EGRgRAIAEoAmwhAyAAQQY6AAAgACADNgIEIAFBLGoQuQQgASgCLCIARQ0EIAEoAjAgAEEYbEEIEPoGDAQLIAFBzgBqIgggAkECai0AADoAACABQUBrIgogBEEIaikDADcDACABIAIvAAA7AUwgASAEKQMANwM4IAEoAmwhCSABKAI0IgYgASgCLEYEQCABQSxqEL0DCyABKAIwIAZBGGxqIgMgASkDODcACCADIAc6AAAgAyABLwFMOwABIAMgCTYABCADQQNqIAgtAAA6AAAgA0EQaiAKKQMANwAAIAEgBkEBajYCNCABKAIcDQALCyABQfMAaiABQTRqKAIANgAAIABBBDoAACABIAEpAiw3AGsgACABKQBoNwAB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QAJAIAQEQCAELQAADQkgAUEoakHyzMAAQcYBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQbjOwABBNBDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQezOwABB4AAQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG80MAAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQazQwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQZzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQfzPwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQezPwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQdzPwAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQczPwAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGy3MAAQcgBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQfrdwABB8gAQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakH63cAAQfIAEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAACyABQZABahDvAiAEQQE6AAACQCAAKAIEIgAoAgAiAkEBSyACRXINACAAQQRqKAIAIgJBhAFJDQAgAhAACyAAQQA2AgAgAUGgAmokAA8LQbixwABBFRCiBwALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABB3N/AABDDBAALIAEgASgCkAE2AjBB8LnAAEErIAFBMGpBnLnAAEHM38AAEMMEAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG838AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGs38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGc38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGM38AAEMMEAAsgASADNgKIAkHwucAAQSsgAUGIAmpBnLnAAEH83sAAEMMEAAsgAUEANgKIAiABQYACaiABQYQCaiABQYgCakHs3sAAEPQFAAtByK3AABCVBgALpgYBBX8jAEGgAmsiASQAIAAoAgAiAigCACEEIAJBADYCAAJAAkACQAJAAkACQAJAAkACQCAEBEAgBC0AAA0JIAFBKGpBruDAAEGdAhDuBSABKAIsIQIgASgCKA0BIAFBkAFqIgMgAhCCAyABKALkAUGAgICAeEYNAiABQTBqIgUgA0HgABD6AhogAUEgakHL4sAAQf4BEO4FIAEoAiQhAiABKAIgDQMgAyAFQeAAEPoCGiABIAI2AvABIAFBGGogAUHwAWoQwAEgASgCHCECIAEoAhgNBCABIAI2AvgBIAFBEGpByeTAAEGGAxDuBSABKAIUIQIgASgCEA0FIAEgAjYC/AEgAUEIaiABQfgBahDvBSABKAIMIQIgASgCCA0GIAEgAjYCgAIgASABQfwBahDvBSABKAIEIQMgASgCAA0HIAEgAzYChAIgAUGAAmogAUGEAmoQ5wZFDQggA0GEAU8EQCADEAAgASgCgAIhAgsgAkGEAU8EQCACEAALIAEoAvwBIgJBhAFPBEAgAhAACyABKAL4ASICQYQBTwRAIAIQAAsgAUGQAWoQ7wIgBEEBOgAAAkAgACgCBCIAKAIAIgJBAUsgAkVyDQAgAEEEaigCACICQYQBSQ0AIAIQAAsgAEEANgIAIAFBoAJqJAAPC0G4scAAQRUQogcACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQcDowAAQwwQACyABIAEoApABNgIwQfC5wABBKyABQTBqQZy5wABBsOjAABDDBAALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABBoOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBkOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBgOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABB8OfAABDDBAALIAEgAzYCiAJB8LnAAEErIAFBiAJqQZy5wABB4OfAABDDBAALIAFBADYCiAIgAUGAAmogAUGEAmogAUGIAmpB0OfAABD0BQALQcitwAAQlQYAC6YGAQV/IwBBoAJrIgEkACAAKAIAIgIoAgAhBCACQQA2AgACQAJAAkACQAJAAkACQAJAAkAgBARAIAQtAAANCSABQShqQY3XwABB8wEQ7gUgASgCLCECIAEoAigNASABQZABaiIDIAIQggMgASgC5AFBgICAgHhGDQIgAUEwaiIFIANB4AAQ+gIaIAFBIGpBgNnAAEHlARDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQYDZwABB5QEQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEHY28AAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQcjbwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQbjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQajbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQZjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYjbwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQfjawAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQejawAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGW0cAAQcUBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQdvSwABBggEQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakHd08AAQeIBEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAA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IAIgA0YNARogAkEBaiECIAEgCCAHKAIQEQEARQ0ACyACQQFrCyADSQshAiAAIAk6ACAgACAKNgIQDAELQQEhAgsgBEEQaiQAIAILrwQBBX8CQAJAAkAgAiADTwRAQQEhBgJAIANBAEwNACABIANqIQQCQCADQQNNBEADQCABIARPDQMgBEEBayIELQAAQQpHDQAMAgsAC0GAgoQIIARBBGsoAAAiB0GKlKjQAHNrIAdyQYCBgoR4cUGAgYKEeEcEQANAIAEgBE8NAyAEQQFrIgQtAABBCkcNAAwCCwALIAMgBEEDcWshBCADQQlPBEADQAJAIAQiB0EISA0AQYCChAggASAEaiIIQQhrKAIAIgRBipSo0ABzayAEckGAgYKEeHFBgIGChHhHDQAgB0EIayEEQYCChAggCEEEaygCACIIQYqUqNAAc2sgCHJBgIGChHhxQYCBgoR4Rg0BCwsgASAHaiEEA0AgASAETw0DIARBAWsiBC0AAEEKRw0ACwwBCyABIARqIQQDQCABIARPDQIgBEEBayIELQAAQQpHDQALCyAEIAFrIgRBAWohBSACIARNDQILIAEgBWogAU0NAyAFQQNxIQYgBUEBa0EDSQRAQQAhBAwDCyAFQXxxIQJBACEEA0AgBCABLQAAQQpGaiABLQABQQpGaiABLQACQQpGaiABLQADQQpGaiEEIAFBBGohASACQQRrIgINAAsMAgsgAyACQYiNwgAQ7AQACyAFIAJBmI3CABDsBAALIAYEQANAIAQgAS0AAEEKRmohBCABQQFqIQEgBkEBayIGDQALCyAEQQFqIQYLIAAgBjYCACAAIAMgBWs2AgQLhgcCCH8BfiMAQSBrIggkAAJAAkACQAJAAkACQANAIAEoAgghBwJAIAEoAggiAyABKAIEIgVGDQAgAyAFSQRAIAEoAgAiBiADai0AACIEQSJGIARB3ABGciAEQSBJcg0BIAZBAWohBEEAIAUgA0EBaiIGa0F4cSIJayEFA0AgBUUEQCABIAYgCWo2AggCQCABKAIIIgMgASgCBCIETw0AIAEoAgAhBgNAIAMgBmotAAAiBUEiRiAFQdwARnIgBUEgSXINASABIANBAWoiAzYCCCADIARHDQALCwwDCyADIARqIAVBCGohBSADQQhqIQMpAAAiC0J/hSALQty48eLFi5eu3ACFQoGC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IAuncSEBIAtCGYhC/wCDQoGChIiQoMCAAX4hDQNAAkAgASAFaikAACIMIA2FIgtCf4UgC0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyILUEUEQANAIAMgCEEAIAt6p0EDdiABaiAGcWsiCUHwAGxqIgooAghGBEAgAiAKKAIEIAMQqQVFDQMLIAtCAX0gC4MiC1BFDQALC0EAIAwgDEIBhoNCgIGChIiQoMCAf4NQRQ0CGiABIAdBCGoiB2ogBnEhAQwBCwsgBSAJQfAAbGpB8ABrCyEBIARBAjYCJCAEQbypwAA2AiAgBEIBNwIsIAQgBEEMaq1CgICAgMAAhDcDOCAEIARBOGo2AiggBEEUaiAEQSBqEOICIAQoAhgiBSAEKAIcEAIhAwJAIAFFBEBBASEBDAELIAFBEGpBACEBIANBhAFPBEAgAxAACyEDCyAEKAIUIgIEQCAFIAJBARD6BgsgACADNgIEIAAgATYCACAEQUBrJAALqwMBAn8CQAJAAkACQCABQQdqIgNB+ABPDQAgAUEPaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQZqIgNB+ABPDQAgAUEOaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQVqIgNB+ABPDQAgAUENaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQRqIgNB+ABPDQAgAUEMaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQNqIgNB+ABPDQAgAUELaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQJqIgNB+ABPDQAgAUEKaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQFqIgNB+ABPDQAgAUEJaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQfgASQ0BIAEhAwsgA0H4AEGo0sEAEOsEAAsgAUEIaiICQfgASQ0BCyACQfgAQbjSwQAQ6wQACyAAIAJBAnRqIAAgAUECdGooAgA2AgALuAMCBH8BfiMAQeAAayIBJAACQCAABEAgACgCAA0BIAFBCGogAEEIakHYABD6AhogAEHgAEEIEPoGIAEoAkgiAEGEAU8EQCAAEAALIAEoAlAhAyABKAJUIgQEQCADIQAD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AUF/czYC9AEgAyADKAL4AUF/czYC+AEgAyADKAKAAkF/czYCgAIgAyADKAKEAkF/czYChAIgAyADKAKUAkF/czYClAIgAyADKAKYAkF/czYCmAIgAyADKAKgAkF/czYCoAIgAyADKAKkAkF/czYCpAIgAyADKAK0AkF/czYCtAIgAyADKAK4AkF/czYCuAIgAyADKALAAkF/czYCwAIgAyADKALEAkF/czYCxAIgAyADKALUAkF/czYC1AIgAyADKALYAkF/czYC2AIgAyADKALgAkF/czYC4AIgAyADKALkAkF/czYC5AIgAyADKAL0AkF/czYC9AIgAyADKAL4AkF/czYC+AIgAyADKAKAA0F/czYCgAMgAyADKAKEA0F/czYChAMgAyADKAKUA0F/czYClAMgAygCmAMhBCADIAYgBiAGQQR2c0GAmLwYcUERbHMiBkECdiAGc0GA5oCYA3FBBWwgBnNBf3M2ArgDIAMgAiACIAJBBHZzQYCYvBhxQRFscyICQQJ2IAJzQYDmgJgDcUEFbCACc0F/czYCtAMgAyAHIAcgB0EEdnNBgJi8GHFBEWxzIgdBAnYgB3NBgOaAmANxQQVsIAdzQX9zNgKkAyADIAEgASABQQR2c0GAmLwYcUERbHMiAUECdiABc0GA5oCYA3FBBWwgAXNBf3M2AqADIAMgBEF/czYCmAMgAyADKALAA0F/czYCwAMgAyADKALEA0F/czYCxAMgAyADKALUA0F/czYC1AMgAyADKALYA0F/czYC2AMgDCADQeADEPoCGiADQeADaiQABSADIAYQtwIgAUHgAGoiBBD1ASAEIAQoAgBBf3M2AgAgAUHkAGoiBCAEKAIAQX9zNgIAIAFB9ABqIgQgBCgCAEF/czYCACABQfgAaiIBIAEoAgBBf3M2AgAgAyAGQQhqIgZBBhDVASACQcQAaiECIAdBQGshBwwBCwsgBUH4B2pCADcDACAFQfAHakIANwMAIAVB6AdqQgA3AwAgBUIANwPgByAFIAwgBUHgB2oiAxCnASAFMQAHISQgBTEABiElIAUxAAUhJiAFMQAEIScgBTEAAyEoIAUxAAEhKSAFMQACISogBSAFMQAAIiJCB4giIyAFMQAOQgmGIAUxAA8gBTEACEI4hiIrIAUxAAlCMIaEIAUxAApCKIaEIAUxAAtCIIaEIAUx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KAIUIgQEQCABKAIYIARBARD6BgsgACADNgIAIAAgAjYCBCAFQRBqJAALiAEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUHoAGoQwAEgAigCDCEDIAIoAgghBCABIAEoAgBBAWs2AgAgACAENgIIIAAgA0EAIARBAXEiARs2AgQgAEEAIAMgARs2AgAgAkEQaiQADwsQowcACxCkBwALhwEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUEIahDrASACKAIMIQMgAigCCCEEIAEgASgCAEEBazYCACAAIAQ2AgggACADQQAgBEEBcSIBGzYCBCAAQQAgAyABGzYCACACQRBqJAAPCxCjBwALEKQHAAvyIwIofwt+IwBBEGsiHCQAAkAgAQRAIAEoAgAiAkF/Rg0BIAEgAkEBajYCACAcQQhqISIgAUEIaiESIwBBwANrIgMkACADQZyewQBBGRACIgI2AtgCEPgBBEAgA0HYAmoQuAcLIAJBhAFPBEAgAhAACwJ+QaDSwwAoAgBBAUYEQEGw0sMAKQMAIStBqNLDACkDAAwBC0ICIStBsNLDAEICNwMAQaDSwwBCATcDAEIBCyEqIANBCGpByJ7BACkDADcDACADICo3AxBBqNLDACAqQgF8NwMAIAMgKzcDGCADQcCewQApAwA3AwAgEigCDCIbBEAgEkEgaiEXIBJBxABqISUgA0HUAmqtQoCAgIAQhCEwIANB+AJqISYgA0HQAWohJyADQdAAaiEVIANB9ABqISggEigCQCEpIBIoAgAiHUEIaiEOIB0pAwBCf4VCgIGChIiQoMCAf4MhKyASKQM4ITEgEikDMCEyIBIpAxghMyASKQMQITQDQCArUARAA0AgHUGAB2shHSAOKQMAIA5BCGohDkKAgYKEiJCgwIB/gyIrQoCBgoSIkKDAgH9RDQALICtCgIGChIiQoMCAf4UhKwsgAyAdICt6p0EDdkGQf2xqQfAAazYC1AIgA0EBNgLcAiADQYyfwQA2AtgCIANCATcC5AIgAyAwNwPgASADIANB4AFqNgLgAiADQSRqIANB2AJqEOICIAMoAiQhBCADIAMoAigiAiADKAIsEAI2AtgCIAQEQCACIARBARD6BgsQ+AEEQCAD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hAFPBEAgARAACyAAKAIUIgFBhAFPBEAgARAACyAAKAIQIgBBgwFNDQELIAAQAAsLeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEPQDIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARCLAiABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAt4AQJ/IAAoAgAiAigCACEBIAJBADYCAAJAIAEEQCABLQAADQEQywMgAUEBOgAAAkAgACgCBCIAKAIAIgFBAUsgAUVyDQAgAEEEaigCACIBQYQBSQ0AIAEQAAsgAEEANgIADwtBuLHAAEEVEKIHAAtByK3AABCVBgALeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEO4CIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARDgAyABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAtsAQF/IwBBMGsiAyQAIAMgAjYCBCADIAE2AgAgA0ECNgIMIANBjKPBADYCCCADQgI3AhQgAyADrUKAgICA0CKENwMoIAMgAK1CgICAgOAihDcDICADIANBIGo2AhAgA0EIahDOAyADQTBqJAALbAEBfyMAQTBrIgMkACADIAI2AgQgAyABNgIAIANBAjYCDCADQfjfwQA2AgggA0ICNwIUIAMgA61CgICAgKAohDcDKCADIACtQoCAgIDgIoQ3AyAgAyADQSBqNgIQIANBCGoQzwMgA0EwaiQAC2UBAn8jAEEQayICJAAgACgCCCEDIAAoAgQhACACQQRqIAEQqwYgAwRAA0AgAiAANgIMIAJBBGogAkEMakGQsMEAEJoDIABBAWohACADQQFrIgMNAAsLIAJBBGoQngYgAkEQaiQAC28BAX8jAEFAaiICJAAgAkEAOgA4IAIgATYCDCACIAA2AgggAiACQQhqNgI8IAJBPGpB6ILAABDEByACLQA4QQNGBEAgAigCHCIBIAEoAgBBAWs2AgAgAigCFCIBIAEoAgBBAWs2AgALIAJBQGskAAuLAQIBfAJ+IAEQhQcEfiABKAIAEEgiAkQAAAAAAADgw2YhAUL///////////8AAn4gAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwtCgICAgICAgICAfyABGyACRP///////99DZBtCACACIAJhGyEDQgEFQgALIQQgACADNwMIIAAgBDcDAAtlAQN/IAAoAgwiAiAAKAIEIgFrQQxuIQMgASACRwRAA0AgASgCACICBEAgAUEEaigCACACQQEQ+gYLIAFBDGohASADQQFrIgMNAAsLIAAoAggiAQRAIAAoAgAgAUEMbEEEEPoGCwtkAQN/IwBBEGsiAiQAIAIgACgCADYCDCACQQxqIAEQugIgAigCDCIABEAgAEEEaigCACEBIAAoAgAiBEGEAU8EQCAEEAALIAFBhAFPBEAgARAACyAAQQhBBBD6BgsgAkEQaiQAC2kBBH8CQCAABEAgACgCAA0BIAAoAhQhASAAKAIIIQQgACgCBCECIAAoAhAhAyAAQRhBBBD6BiADQYQBTwRAIAMQAAsgAUGEAU8EQCABEAALIAIEQCAEIAJBARD6BgsPCxCjBwALEKQHAAt4AQF/IwBBsAFrIgMkACADQQA6AKQBIAMgAjYCoAEgAyABNgKcASADIAA2ApgBIAMgAzYCrAEgA0GsAWpB+IDAABDEBwJAIAMtAKQBQQNHDQAgA0EIahCMAyADKAIEIgFFDQAgAygCACABQQEQ+gYLIANBsAFqJAALaQEEfwJAIAAoAgAiAUGAgICAeEYNACAAKAIEIQIgACgCCCIDBEAgAiEAA0AgACgCACIEBEAgAEEEaigCACAEQQEQ+gYLIABBDGohACADQQFrIgMNAAsLIAFFDQAgAiABQQxsQQQQ+gYLC2oBAX8jAEEQayIGJAAgAUUEQEH/+8AAQSMQogcACyAGQQhqIAEgAyAEIAUgAigCFBEHACAGKAIMIQEgACAGKAIIIgI2AgggAEEAIAEgAkEBcSICGzYCACAAIAFBACACGzYCBCAGQRBqJAALZAECfyMAQRBrIgIkACACIAAoAgA2AgwgAkEMaiABEJACIAIoAgwiAARAIABBBGooAgAhASAAKAIAIgNBhAFPBEAgAxAACyABQYQBTwRAIAEQAAsgAEEIQQQQ+gYLIAJBEGokAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0Gss8MANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQYytwwA2AgggA0ICNwIUIANCgICAgPAiIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhC0BQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIMIANBzLPDADYCCCADQgI3AhQgA0KAgICA8CIiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACELQFAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0GAtMMANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD5ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD3ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2gBAX8jAEEwayIDJAAgAyACNgIMIAMgATYCCCADQQE2AhQgA0GkjsEANgIQIANCATcCHCADIANBCGqtQoCAgIDAAIQ3AyggAyADQShqNgIYIAAgA0EQahDiAiAAQQA6AAwg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IAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAAPCyMAQYABayIEJAAgAC0AACEAA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAALOAAjAEEQayIBJAAgAUEIaiACIAMgBBDrAiABKAIMIQIgACABKAIINgIAIAAgAjYCBCABQRBqJAALPAEBfwJ/IAEtAAFFBEAQYyECQQAMAQsQayECQQELIQMgACABNgIQIABBADYCCCAAIAI2AgQgACADNgIACzkBAX8gACgCACEAIAEoAhwiAkEQcUUEQCACQSBxRQRAIAAgARCHBw8LIAAgARCaBA8LIAAgARCZBAs6AQF/IwBBEGsiAiQAIAIgASgCABCSASACKAIAIQEgACACKQMINwMIIAAgAUEAR603AwAgAkEQaiQAC450AyN/Gn4BfCABKAIcQQFxIQIgACsDACE/AkAgASgCCEEBRgRAAn8gASEIIAEoAgwhE0EAIQAjAEHwCGsiCSQAID+9IScCf0ECID8gP2INABogJ0L/////////B4MiKUKAgICAgICACIQgJ0IBhkL+////////D4MgJ0I0iKdB/w9xIgEbIiVCAYMhKCAnQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJUIBhiAlQoCAgICAgIAIUSIAGyElQgJCASAAGyEmQct3Qcx3IAAbIAFqIQAgKFAMAQsgAUGzCGshAEIBISYgKFALIQEgCSAAOwHoCCAJICY3A+AIIAlCATcD2AggCSAlNwPQCCAJIAE6AOoIAkACfwJAAkACQAJAIAFBAmsiBARAQQEhAUHbqsMAQdyqwwAgJ0IAUyIFG0HbqsMAQQEgBRsgAhshGSAnQj+IpyACciEcQQMgBCAEQQNP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AEGAAWsiAyQAID+9ISUCf0ECID8gP2INABogJUL/////////B4MiKUKAgICAgICACIQgJUIBhkL+////////D4MgJUI0iKdB/w9xIgAbIidCAYMhKCAlQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJ0IBhiAnQoCAgICAgIAIUSIBGyEnQgJCASABGyEmQct3Qcx3IAEbIABqIQAgKFAMAQsgAEGzCGshAEIBISYgKFALIQEgAyAAOwF4IAMgJjcDcCADQgE3A2ggAyAnNwNgIAMgAToAegJ/AkACQAJAIAFBAmsiAQRAQQEhAEHbqsMAQdyqwwAgJUIAUyIEG0HbqsMAQQEgBBsgAhshGEEBICVCP4inIAIbIRlBAyABIAFBA08bQQJrDgIDAgELIANBAzYCKCADQd2qwwA2AiQgA0ECOwEgQQEhGEEBIQAgA0EgagwDCyADQQM2AiggA0HgqsMANgIkIANBAjsBICADQSBqDAILIANBIGohBSADQQ9qIg4hCCMAQTBrIgQkAAJAAkACfwJAAkACQAJAAkACQAJAAkAgA0HgAGoiDCIAKQMAIiVQRQRAIAApAwgiJ1ANASAAKQMQIiZQDQIgJSAmfCImICVUDQMgJSAnVA0EICZCgICAgICAgIAgWg0FIAQgAC8BGCIAOwEIIAQgJSAnfSInNwMAIAAgAEEgayAAICZCgICAgBBUIgEbIgJBEGsgAiAmQiCGICYgARsiJkKAgICAgIDAAFQiARsiAkEIayACICZCEIYgJiABGyImQoCAgICAgICAAVQiARsiAkEEayACICZCCIYgJiABGyImQoCAgICAgICAEFQiARsiAkECayACICZCBIYgJiABGyImQoCAgICAgICAwABUIgEbICZCAoYgJiABGyIsQgBZIgJrIgFrwSIKQQBIDQYgBCAnIAqtIiaGIiggJogiKTcDECAnIClSDQogBCAAOwEIIAQgJTcDACAEICUgJkI/gyInhiImICeIIic3AxAgJSAnUg0KQaB/IAFrwUHQAGxBsKcFakHOEG0iAEHRAE8NByAAQQR0IgBBsJvDAGopAwAiJ0L/////D4MiJSAmQiCIIjN+IipCIIgiOyAnQiCIIikgM34iPHwgKSAm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DBAAEwAAAJUAAAA/AAAARGF0YWJhc2Ugc3RhcnRlZCBzdWNjZXNzZnVsbHkuAAA8DBAAEwAAAJIAAAABAAAAQ2xvc2luZyB0aGUgZGF0YWJhc2UuLi4APAwQABMAAACiAAAAPgAAAERhdGFiYXNlIGNsb3NlZCBzdWNjZXNzZnVsbHkuQ3JlYXRpbmcgZGF0YWJhc2U6IAUNEAATAAAAVXNpbmcgcHJvdmlkZWQgc3RvcmFnZS5DcmVhdGluZyBJbk1lbW9yeSBzdG9yYWdlLgAAADwMEAATAAAA3AAAACQAAAA8DBAAEwAAAOYAAAAfAAAAUGx1Z2lucyBhcHBsaWVkLkFkZGluZyBkZWZhdWx0cyBwbHVnaW4uQWRkaW5nIG1pZ3JhdGlvbiBwbHVnaW4uQWRkaW5nIGludGVncml0eSBwbHVnaW4uQWRkaW5nIGVuY3J5cHRpb24gcGx1Z2luLkNyZWF0aW5nIHN0b3JhZ2Ugd2l0aCBzY2hlbWFzIGFuZCBtaWdyYXRpb25zLkRhdGFiYXNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LkludmFsaWQgY29sbGVjdGlvbiBuYW1lUHJvY2Vzc2luZyBzY2hlbWEgZm9yIGNvbGxlY3Rpb246IEYOEAAiAAAATWlncmF0aW9uIHBhdGggdW5kZWZpbmVkIGZvciBjb2xsZWN0aW9uOiAsIHZlcnNpb246IHAOEAApAAAAmQ4QAAsAAABSZXF1aXJlZCBTY2hlbWEgIG1pZ3JhdGlvbiBwYXRoICB0byBub3QgYmUgdW5kZWZpbmVktA4QABAAAADEDhAAEAAAANQOEAAUAAAAdQAAAAgAAAAEAAAAdgAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAEA8QAGcAAAAWAgAAHgAAABAPEABnAAAA+AEAACcAAAAQDxAAZwAAAO8BAAAoAAAAdQAAAAgAAAAEAAAAdwAAAHUAAAAIAAAABAAAAHgAAAB1AAAACAAAAAQAAAB5AAAAdQAAAAgAAAAEAAAAegAAAHUAAAAIAAAABAAAAHsAAAB1AAAACAAAAAQAAAB8AAAAdQAAAAgAAAAEAAAAfQAAAHUAAAAIAAAABAAAAH4AAAB1AAAACAAAAAQAAAB/AAAAdQAAAAgAAAAEAAAAgAAAAHUAAAAIAAAABAAAAIEAAAB1AAAACAAAAAQAAACCAAAAdQAAAAgAAAAEAAAAgwAAAHUAAAAIAAAABAAAAIQAAAB1AAAACAAAAAQAAACFAAAAdQAAAAgAAAAEAAAAhgAAAHUAAAAIAAAABAAAAIcAAAB1AAAACAAAAAQAAACIAAAAdQAAAAgAAAAEAAAAiQAAAHUAAAAIAAAABAAAAIoAAAB1AAAACAAAAAQAAACLAAAAdQAAAAgAAAAEAAAAjAAAAHUAAAAIAAAABAAAAI0AAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzABgREABPAAAAyAUAABQAAAAYERAATwAAAMgFAAAhAAAAGBEQAE8AAAC8BQAAIQAAABgREABPAAAATAQAACQAAABpbnZhbGlkIHBvbGwgc3RhdGVgdW53cmFwX3Rocm93YCBmYWlsZWQAQdijwAALsQUBAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAAJhIQAE8AAAAEAQAAGgAAAAAAAAAEAAAABAAAAI8AAAAAAAAABAAAAAQAAACQAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJIAAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAlAAAAAAAAAAEAAAABAAAAJUAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwD4EhAAXwAAABYCAAAvAAAA+BIQAF8AAAChAAAAJAAAAE5vbmVTb21lAAAAAAQAAAAEAAAAlgAAAEVycm9yL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwLnJzAJUTEABaAAAA+gAAAD8AAACVExAAWgAAAB8BAAAuAAAAY29kZZcAAAAEAAAABAAAAAMAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlc3JjL2Vycm9yLnJzAE8UEAAMAAAAWwAAAGUAAACYAAAABAAAAAQAAACZAAAATxQQAAwAAABbAAAAWwBBlKnAAAu/AwEAAACcAAAASW52YWxpZCBjb2xsZWN0aW9uICwgbm90IGZvdW5kAACcFBAAEwAAAK8UEAALAAAASG9vayBpcyBub3QgYSBmdW5jdGlvbkhvb2sgbXVzdCBiZSBhIGZ1bmN0aW9uRXJyb3IgZXhlY3V0aW5nIHBsdWdpbiBob29rOiAAAPkUEAAdAAAASW52YWxpZCBTY2hlbWEgY2Fubm90IGZpbmQgcHJpbWFyeUtleSBmaWVsZDEyMzQ1VW5leHBlY3RlZCBwcmltYXJ5IGtleSBzaG91bGQgYmUgYSBzdHJpbmdVbmV4cGVjdGVkIHByaW1hcnkga2V5IHNob3VsZCBiZSBudW1iZXJGaWVsZCAgaXMgcmVxdWlyZWQAAKAVEAAGAAAAphUQAAwAAAAgc2hvdWxkIG1hdGNoIHR5cGUgAKAVEAAGAAAAxBUQABMAAABTdHJpbmdOdW1iZXJCb29sZWFuQXJyYXlPYmplY3RfX05vbmV4aGF1c3RpdmUAAAAGAAAABgAAAAcAAAAFAAAABgAAAA8AAADoFRAA7hUQAPQVEAD7FRAAABYQAAYWEAD//////////0gWEABB4KzAAAu7BS9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAYBYQAGcAAADOAQAAHAAAAAAAAAAMAAAABAAAAJ4AAACfAAAAAAAAAAwAAAAEAAAAoAAAAKEAAAAAAAAADAAAAAQAAACiAAAAowAA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OiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgIm5vbmV4aXN0ZW50IjogInZhbHVlIgogICAgfQogICAgYXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAAAALBkQABAAAAA4AQAABQAAACwZEAAQAAAAOgEAACsAAABJbnZhbGlkIHByb3BlcnR5OiBub25leGlzdGVudAAAALQeEAAdAAAALBkQABAAAAA5AQAABQAAACwZEAAQAAAANgEAADMAAAAsGRAAEAAAADQBAAAyAAAALBkQABAAAAAyAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF90eXBlCiAgICB7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIHsKICAgICAgICAiYWdlIjogInRoaXJ0eSIKICAgIH0KICAgIAAsGRAAEAAAAFUBAAAFAAAALBkQABAAAABXAQAAKwAAANsaEAARAAAALBkQABAAAABWAQAABQAAACwZEAAQAAAAUwEAADMAAAAsGRAAEAAAAFIBAAAyAAAALBkQABAAAABQAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfbG9naWNhbF9vcGVyYXRvcnMKICAgIHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJuYW1lIjogIkFsaWNlIiB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkZ3RlIjogMjUgfSB9CiAgICAgICAgXQogICAgfQogICAgAAAALBkQABAAAAB2AQAABQAAACwZEAAQAAAAdAEAADMAAAAsGRAAEAAAAHMBAAAyAAAALBkQABAAAABxAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF9vcGVyYXRvcgogICAgewogICAgICAgICJhZ2UiOiB7ICIkdW5rbm93biI6IDMwIH0KICAgIH0KICAgIAAALBkQABAAAACPAQAABQAAACwZEAAQAAAAkQEAACsAAABJbnZhbGlkIG9wZXJhdG9yOiAkdW5rbm93bgAAyCIQABoAAAAsGRAAEAAAAJABAAAFAAAALBkQABAAAACNAQAAMwAAACwZEAAQAAAAjAEAADIAAAAsGRAAEAAAAIoBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRndCI6ICJ0aGlydHkiIH0KICAgIH0KICAgIAAALBkQABAAAACsAQAABQAAACwZEAAQAAAArgEAACsAAAAsGRAAEAAAAK0BAAAFAAAALBkQABAAAACqAQAAMwAAACwZEAAQAAAAqQEAADIAAAAsGRAAEAAAAKcBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcgogICAgewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgInN0YXR1cyI6IHsgIiRpbiI6IFsiYWN0aXZlIiwgInBlbmRpbmciXSB9CiAgICB9CiAgICAsGRAAEAAAAMkBAAAFAAAALBkQABAAAADHAQAAMwAAACwZEAAQAAAAxgEAADIAAAAsGRAAEAAAAMQBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRpbiI6IFsidGhpcnR5IiwgImZvcnR5Il0gfQogICAgfQogICAgLBkQABAAAADiAQAABQAAACwZEAAQAAAA5AEAACsAAAAsGRAAEAAAAOMBAAAFAAAALBkQABAAAADgAQAAMwAAACwZEAAQAAAA3wEAADIAAAAsGRAAEAAAAN0BAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9zaW1wbGVfYXR0cmlidXRlc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiaWQiOiAiMTIzIiwKICAgICAgICAibmFtZSI6ICJBbGljZSIKICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgImlkIjogIjEyMyIgfSwKICAgICAgICAgICAgeyAibmFtZSI6ICJBbGljZSIgfQogICAgICAgIF0KICAgIH0sGRAAEAAAAAYCAAAFAAAALBkQABAAAAAIAgAAKgAAACwZEAAQAAAABwIAACwAAAAsGRAAEAAAAAQCAAA0AAAALBkQABAAAAD9AQAALgAAACwZEAAQAAAA+gEAAC4AAAAsGRAAEAAAAPkBAAAvAAAALBkQABAAAAD4AQAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH17CiAgICAgICAgImlkIjogIjEyMyIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkbHQiOiAyMCB9IH0KICAgICAgICBdCiAgICB9ewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJpZCI6ICIxMjMiIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDIwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQAsGRAAEAAAADECAAAFAAAALBkQABAAAAAzAgAAKgAAACwZEAAQAAAAMgIAACwAAAAsGRAAEAAAAC8CAAA0AAAALBkQABAAAAAjAgAALgAAACwZEAAQAAAAIAIAAC4AAAAsGRAAEAAAAB8CAAAvAAAALBkQABAAAAAeAgAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fbmVzdGVkX2xvZ2ljYWxfb3BlcmF0b3JzewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJyb2xlIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkYW5kIjogWwogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0ZSI6IDMwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7ICJyb2xlIjogImFkbWluIiB9CiAgICAgICAgXQogICAgfQAAACwZEAAQAAAAYQIAAAUAAAAsGRAAEAAAAGMCAAAqAAAALBkQABAAAABiAgAALAAAACwZEAAQAAAAXwIAADQAAAAsGRAAEAAAAFMCAAAuAAAALBkQABAAAABQAgAALgAAACwZEAAQAAAATwIAAC8AAAAsGRAAEAAAAE4CAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3J7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJzY29yZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMTggfSB9LAogICAgICAgICAgICB7ICJzY29yZSI6IHsgIiRsdGUiOiAxMDAgfSB9CiAgICAgICAgXQogICAgfSwZEAAQAAAAhgIAAAUAAAAsGRAAEAAAAIgCAAAqAAAALBkQABAAAACHAgAALAAAACwZEAAQAAAAhAIAADQAAAAsGRAAEAAAAH0CAAAuAAAALBkQABAAAAB6AgAALgAAACwZEAAQAAAAeQIAAC8AAAAsGRAAEAAAAHgCAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9jb21wbGV4X21peGVkewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgImFnZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9LAogICAgICAgICAgICAiY2l0eSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAic3RhdHVzIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICJuYW1lIjogIkJvYiIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiY2l0eSI6ICJOZXcgWW9yayIgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGx0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgIm5hbWUiOiAiQm9iIiB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiJG9yIjogWwogICAgICAgICAgICAgICAgICAgIHsgImNpdHkiOiAiTmV3IFlvcmsiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDMwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH0ALBkQABAAAAC9AgAABQAAACwZEAAQAAAAvwIAACoAAAAsGRAAEAAAAL4CAAAsAAAALBkQABAAAAC7AgAANAAAACwZEAAQAAAAqgIAAC4AAAAsGRAAEAAAAKcCAAAuAAAALBkQABAAAACmAgAALwAAACwZEAAQAAAApQIAADAAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X3F1ZXJ5ewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9e30sGRAAEAAAANECAAAFAAAALBkQABAAAADPAgAAMwAAACwZEAAQAAAAzgIAAEMAAAAsGRAAEAAAAM4CAAA5AAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5bm90IGFuIG9iamVjdCwZEAAQAAAA4QIAAAUAAAAsGRAAEAAAAOMCAAArAAAA+BgQABcAAAAsGRAAEAAAAOICAAAFAAAALBkQABAAAADeAgAAQwAAACwZEAAQAAAA3gIAADkAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAg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N2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnMAAAC9RBAAXAAAAFcAAAAKAAAAvUQQAFwAAABQAAAAMwAAAFZlYyBpcyBzaXplZCBjb25zZXJ2YXRpdmVseQA8RRAAGwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAYEUQACoAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9tb2QucnOURRAAYAAAAAEBAAAZAAAAaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIGJ1ZmZlciBzaXplAAAAlEUQAGAAAAB5AAAAEgAAAA0BAAAUAAAABAAAAA4BAABJbnZhbGlkIFVURjiURRAAYAAAAH8AAAAkAAAATWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZvcmUgbmV4dF9rZXkvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLTEuMC4yMTYvc3JjL2RlL3ZhbHVlLnJzAACcRhAAXgAAAGYFAAAbAAAAU2VyaWFsaXphdGlvbiBFcnJvcjogAAAADEcQABUAAABWYWxpZGF0aW9uIEVycm9yOiAAACxHEAASAAAAU2VyaWFsaXphdGlvbiAAAEhHEAAOAAAAY29kZW1lc3NhZ2UADwEAAAQAAAAEAAAAAwAAAEludmFsaWQgSlMgRXJyb3Igbm8gbWVzc2FnZSBpcyBhdmFpbGFibGVzcmMvZXJyb3IucnOkRxAADAAAADUAAABFAAAAc3RyaW5nbnVtYmVyYm9vbGVhbmFycmF5b2JqZWN0V3Jvbmcga2V5YW4gUHJvcGVydHlUeXBlIChTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgT2JqZWN0IG9yIEFycmF5KQBBrJDBAAuXDgEAAADWAAAAEAEAABQAAAAEAAAAEQEAABIBAAASAQAAQ3JlYXRpbmcgZG9jdW1lbnQgd2l0aCBkZWZhdWx0c0RvY3VtZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5RmFpbGVkIHRvIGNyZWF0ZSBkb2N1bWVudEFkZGluZyBkZWZhdWx0cyB0byBkb2N1bWVudERlZmF1bHRzIGFkZGVkIHN1Y2Nlc3NmdWxseVNldHRpbmcgZGVmYXVsdCBmb3Iga2V5OiDXSBAAGQAAAGRvY0NyZWF0ZUhvb2tkb2NSZWNvdmVySG9va0Vycm9yc0Vycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yABlJEAAFAAAAHkkQABIAAAAwSRAADwAAAHZhcmlhbnQgaWRlbnRpZmllcmVudW0gRXJyb3JzYXR0ZW1wdGVkIHRvIGNvbnZlcnQgaW52YWxpZCBQcm9wZXJ0eVR5cGUgaW50byBKU1ZhbHVlc3JjL3NjaGVtYS9wcm9wZXJ0eV90eXBlLnJzAACrSRAAGwAAAAcAAAABAAAAU3RyaW5nTnVtYmVyQm9vbGVhbkFycmF5T2JqZWN0X19Ob25leGhhdXN0aXZlU2NoZW1hdmVyc2lvbnByaW1hcnlLZXl0eXBlcHJvcGVydGllc2luZGV4ZXNyZXF1aXJlZGVuY3J5cHRlZHN0cnVjdCBTY2hlbWFGaWVsZCAnJyBpcyByZXF1aXJlZABPShAABwAAAFZKEAANAAAAJyBzaG91bGQgYmUgb2YgdHlwZSAnJwAAT0oQAAcAAAB0ShAAFQAAAIlKEAABAAAARmFpbGVkIHRvIGdldCBwcm9wZXJ0eSAnJzogAKRKEAAYAAAAvEoQAAMAAADYRxAABgAAAFNjaGVtYSB0eXBlIGlzIGludmFsaWQgKCIiKQDYShAAGQAAAPFKEAACAAAAC0oQAAcAAAASShAACgAAABxKEAAEAAAAIEoQAAoAAAAqShAABwAAADFKEAAIAAAAOUoQAAkAAABtYXhMZW5ndGhyaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfY3JlYXRpb257CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0sCiAgICAgICAgICAgICJuYW1lIjogeyJ0eXBlIjogInN0cmluZyJ9LAogICAgICAgICAgICAiYWdlIjogeyJ0eXBlIjogIm51bWJlciJ9CiAgICAgICAgfQogICAgfQAAAAEAAABpZAAAXEwQAAIAAABzcmMvc2NoZW1hL21vZC5ycwAAAGhMEAARAAAAVwEAAAUAAABoTBAAEQAAAFgBAAAFAAAAaEwQABEAAABWAQAABQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAaEwQABEAAABVAQAALwAAAGhMEAARAAAAVAEAADAAAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfdmFsaWRhdGlvbnsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsidHlwZSI6ICJzdHJpbmcifQogICAgICAgIH0KICAgIH1hc3NlcnRpb24gZmFpbGVkOiBzY2hlbWEuaXNfdmFsaWQoKS5pc19vaygpAABoTBAAEQAAAGcBAAAFAAAAaEwQABEAAABmAQAALwAAAGhMEAARAAAAZQEAAC8AAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9pbnZhbGlkX3NjaGVtYXsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogImludmFsaWQiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0KICAgICAgICB9CiAgICB9YXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAABoTBAAEQAAAHgBAAAFAAAAaEwQABEAAAB1AQAALwAAAFJldHJpZXZpbmcgY29sbGVjdGlvbnMuLi4AAAD//////////zhPEABB0J7BAAvVAkNvbGxlY3Rpb25zIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuUHJvY2Vzc2luZyBjb2xsZWN0aW9uOiAAAHNPEAAXAAAABgAAAAYAAAAHAAAABQAAAAYAAAAPAAAA2EkQAN5JEADkSRAA60kQAPBJEAD2SRAABgAAAAYAAAAHAAAABQAAAAYAAAAGAAAAwEcQAMZHEADMRxAA00cQANhHEADYRxAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIucnMA9E8QAF8AAACuAAAAFAAAADAxMjM0NTY3ODlhYmNkZWYAAAAACAAAAAQAAAAZAQAAGgEAABsBAAAcAQAAHQEAAAwAAAAEAAAAHgEAAB8BAABkAEGwocEAC/MgAQAAACABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAADvUBAASwAAAAYKAAAOAAAARXJyb3JpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAABRURAADgAAAF9REAALAAAAaW52YWxpZCB2YWx1ZTogAHxREAAPAAAAX1EQAAsAAABtaXNzaW5nIGZpZWxkIGBgnFEQAA8AAACrURAAAQAAAGludmFsaWQgbGVuZ3RoIAC8URAADwAAAF9REAALAAAAZHVwbGljYXRlIGZpZWxkIGAAAADcURAAEQAAAKtREAABAAAAdW5rbm93biB2YXJpYW50IGBgLCB0aGVyZSBhcmUgbm8gdmFyaWFudHMAAAAAUhAAEQAAABFSEAAYAAAAYCwgZXhwZWN0ZWQgAFIQABEAAAA8UhAADAAAACEBAAAEAAAABAAAAAMAAABFcnJvciBnZXR0aW5nIHByb3BlcnR5c3JjL3V0aWxzLnJzAAB+UhAADAAAAAoAAABMAAAAUGFzc3dvcmQgY2Fubm90IGJlIGVtcHR5RW5jcnlwdGlvbgAAIgEAACAAAAAEAAAAIwEAACQBAAAkAQAAIgEAACAAAAAEAAAAJQEAACYBAAAmAQAAU2NoZW1hIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZENvbnRlbnQgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkRmFpbGVkIHRvIHN0cmluZ2lmeSBlbmNyeXB0ZWQgZGF0YUZhaWxlZCB0byBjb252ZXJ0IHNlcmlhbGl6ZWQgZGF0YSB0byBzdHJpbmdGYWlsZWQgdG8gY3JlYXRlIGNpcGhlckVuY3J5cHRpb24gZmFpbGVkAQABQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////////////////////////////////////////////////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9fX2VuY3J5cHRlZGVuY3J5cHRlZCBmaWVsZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbW9kZWxwcmltYXJ5IGtleSBtdXN0IG5vdCBiZSBlbmNyeXB0ZWRDb250ZW50IG11c3QgYmUgYW4gb2JqZWN0SW52YWxpZCBlbmNyeXB0ZWQgZGF0YTogZXhwZWN0ZWQgc3RyaW5nRW5jcnlwdGVkIGRhdGEgaXMgZW1wdHlJbnZhbGlkIGJhc2U2NCBkYXRhRGVjcnlwdGlvbiBmYWlsZWRJbnZhbGlkIFVURi04IGRhdGFGYWlsZWQgdG8gcGFyc2UgZGVjcnlwdGVkIGRhdGFJbnZhbGlkIGVuY3J5cHRlZCBkYXRhIGxlbmd0aEZhaWxlZCB0byByZWFkIGVuY3J5cHRlZCBkYXRhREVCVUdyaWRiOiovVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAAA0VhAAagAAAJUAAAAOAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMzQvc3JjL3Nlci5ycwAAsFYQAF4AAAAwCAAAMwAAALBWEABeAAAAIwgAAEAAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlsFYQAF4AAAANBgAAEgAAAGZhbHNlXCJcXFxiXGZcblxyXHRdbWlkID4gbGVuAAAAfFcQAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5ycwCQVxAAXwAAAK4AAAAUAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJYAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwAgWBAAXwAAAEwAAAAfAAAAIFgQAF8AAABGAAAAFwAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwAAy1gQAF8AAAAWAgAALwAAAHNyYy9wbHVnaW4vaW50ZWdyaXR5L21vZC5ycwA8WRAAGwAAAA8AAABIAAAASW50ZWdyaXR5AAAAKAEAABQAAAAEAAAAKQEAACoBAAAqAQAAKAEAABQAAAAEAAAAKwEAACwBAAAsAQAAX19pbnRlZ3JpdHkAPFkQABsAAABDAAAATgAAAEVycm9yIGNvbnZlcnRpbmcgdG8gc2VyZGVfanNvbjo6VmFsdWU6IADAWRAAJwAAAEVycm9yIHNlcmlhbGl6aW5nIHNvcnRlZCBKU09OOiAA8FkQAB8AAAA8WRAAGwAAAFwAAAAzAAAALQEAAAQAAAAEAAAAAwAAADxZEAAbAAAAXQAAADQAAAA8WRAAGwAAAFsAAAA0AAAARXJyb3IgcmV0cmlldmluZyBpbnRlZ3JpdHkgdmFsdWU8WRAAGwAAAHAAAABOAAAASW50ZWdyaXR5IGNoZWNrIGZhaWxlZDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5AAAAAAAABAAAAAQAAAAuAQAAAAAAAAQAAAAEAAAALwEAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAAAAAAAQAAAAEAAAAlAAAAEVycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yAAAAAAAAAQAAAAEAAAAwAQAAAAAAAAQAAAAEAAAAkQAAAFJJREJFcnJvcmNvZGVtZXNzYWdlUHJvcGVydHl0eXBlaXRlbXNtYXhJdGVtc21pbkl0ZW1zcHJvcGVydGllc21heExlbmd0aG1pbkxlbmd0aGRlZmF1bHQcXBAABAAAACBcEAAFAAAAJVwQAAgAAAAtXBAACAAAADVcEAAKAAAAP1wQAAkAAABIXBAACQAAAFFcEAAHAAAAc3RydWN0IFByb3BlcnR5TWluIGhpZ2hlciB0aGFuIG1heE1pbiBwcm9wZXJ0eSBub3QgdmFsaWRJdGVtcyBpcyBlbXB0eUludmFsaWQgcHJvcGVydHkgaXRlbXNJdGVtcyBwcm9wZXJ0eSBub3QgdmFsaWQxAQAAEAAAAAQAAAAyAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXNyYy9zY2hlbWEvcHJvcGVydHkucnMAAABHXRAAFgAAAJIAAAA5AAAAUHJvcGVydGllcyBlbXB0eVByb3BlcnR5IHR5cGUgaW52YWxpZHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV9jcmVhdGlvbnsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiA1MCwKICAgICAgICAibWluTGVuZ3RoIjogMQogICAgfQAAAEddEAAWAAAAHgIAAAUAAABHXRAAFgAAAB8CAAAFAAAAMwEAAAQAAAAEAAAAAwAAAEddEAAWAAAAHwIAACYAAABHXRAAFgAAAB4CAAAmAAAAR10QABYAAAAdAgAABQAAADQBAAAEAAAABAAAADUBAABHXRAAFgAAABsCAABPAAAAR10QABYAAAAaAgAAMwAAAHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV92YWxpZGF0aW9uYXNzZXJ0aW9uIGZhaWxlZDogcHJvcGVydHkuaXNfdmFsaWQoKS5pc19vaygpAABHXRAAFgAAACwCAAAFAAAAR10QABYAAAAqAgAATwAAAEddEAAWAAAAKQIAADMAAAByaWRiX3dhc206OnNjaGVtYTo6cHJvcGVydHk6OnRlc3RfaW52YWxpZF9wcm9wZXJ0eXsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiAxMCwKICAgICAgICAibWluTGVuZ3RoIjogMjAKICAgIH1hc3NlcnRpb24gZmFpbGVkOiBwcm9wZXJ0eS5pc192YWxpZCgpLmlzX2VycigpAABHXRAAFgAAADkCAAAFAAAAR10QABYAAAA3AgAATwAAAEddEAAWAAAANgIAADMAAABGYWlsZWQgdG8gc2V0IG91dGVyIG9iamVjdCBwcm9wZXJ0eUZhaWxlZCB0byBzZXQgaW5uZXIgb2JqZWN0IHByb3BlcnR5AAAFAAAAEgAAAA8AAAC4WxAAvVsQAM9bEABBcmMgY291bnRlciBvdmVyZmxvd4RgEAAUAAAAL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAAKBgEABJAAAAfwYAAA0AAAABAAAAAAAAAKBgEABJAAAAhQsAAA0AAAAAAAAA//////////8YYRAAQbDCwQAL2R1NaWdyYXRpb24AAAA3AQAAFAAAAAQAAAA4AQAAOQEAADkBAAA3AQAAFAAAAAQAAAA6AQAAOwEAADsBAABfX3ZlcnNpb25fX3ZlcnNpb24gc2hvdWxkIGJlIGEgbnVtYmVyTWlncmF0aW9uIE9iamVjdCBpcyB1bmRlZmluZWRNaWdyYXRpbmcgZnVuY3Rpb24gIHRvIHNjaGVtYSB2ZXJzaW9uIG5vdCBmb3VuZAAAAK5hEAATAAAAwWEQABwAAABFcnJvciBnZXR0aW5nIHRoZSBkb2N1bWVudCB2ZXJzaW9uLCBlcnIg8GEQACgAAABFcnJvciByZWNvdmVyaW5nIG1pZ3JhdGlvbiBmdW5jdGlvbiBmb3IgdmVyc2lvbiAgYhAAMAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbGF6eV9zdGF0aWMtMS40LjAvc3JjL2lubGluZV9sYXp5LnJzAAAAWGIQAGUAAAAeAAAAEAAAACRvciRvciBtdXN0IGJlIGFuIGFycmF5JGFuZCBtdXN0IGJlIGFuIGFycmF5RmFpbGVkIHRvIGdldCB0aGUgcXVlcnkgdmFsdWUsIGVyciAA/GIQACMAAABGYWlsZWQgdG8gZ2V0IHRoZSBkb2N1bWVudCBrZXksIGVyciAoYxAAJAAAACRndCRsdCRpblVuc3VwcG9ydGVkIG9wZXJhdG9yOiAAXWMQABYAAAAkaW4gdmFsdWUgbXVzdCBiZSBhbiBhcnJheURvY3VtZW50IHZhbHVlIGlzIG5vdCBhIG51bWJlckNvbmRpdGlvbiB2YWx1ZSBpcyBub3QgYSBudW1iZXIvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9nZW5lcmFsX3B1cnBvc2UvZGVjb2RlLnJzAADTYxAAcwAAAI0AAAAZAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZV9zdWZmaXgucnMAAFhkEAB6AAAAVAAAAAkAAABYZBAAegAAAB8AAAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnP0ZBAAXAAAAIoAAAAJAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZS5ycwBgZRAAcwAAADgAAAAmAAAAYGUQAHMAAABeAAAALgAAAGBlEABzAAAAYQAAAA0AAABgZRAAcwAAAGUAAAA4AAAAYGUQAHMAAAA9AAAAJwAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjIuMS9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9tb2QucnMkZhAAcAAAAJYAAAANAAAAJGYQAHAAAACYAAAAQAAAACRmEABwAAAAlwAAAA0AAAAkZhAAcAAAAJoAAAANAAAAJGYQAHAAAACeAAAADQAAACRmEABwAAAAnwAAAA0AAAAkZhAAcAAAAIcAAAAlAAAAJGYQAHAAAACIAAAAKwAAACRmEABwAAAAQAAAABsAAAAkZhAAcAAAAEIAAAAgAAAAAAAAAAEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYva2VjY2FrLTAuMS41L3NyYy9saWIucnNBIHJvdW5kX2NvdW50IGdyZWF0ZXIgdGhhbiBLRUNDQUtfRl9ST1VORF9DT1VOVCBpcyBub3Qgc3VwcG9ydGVkIQAAAPhnEABYAAAA7gAAAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguNC9zcmMvc29mdC9maXhzbGljZTMyLnJzAAAApGgQAGEAAACJBAAAEgAAAKRoEABhAAAAiQQAAD0AAACkaBAAYQAAABQFAAAiAAAApGgQAGEAAAAUBQAACQAAAEVycm9yOiAASGkQAAcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhbmRfY29yZS0wLjYuNC9zcmMvb3MucnMAAFhpEABaAAAAPwAAAA0AAABnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZXVuZXhwZWN0ZWQgc2l0dWF0aW9uU2VjUmFuZG9tQ29weUJ5dGVzOiBpT1MgU2VjdXJpdHkgZnJhbWV3b3JrIGZhaWx1cmVSdGxHZW5SYW5kb206IFdpbmRvd3Mgc3lzdGVtIGZ1bmN0aW9uIGZhaWx1cmVSRFJBTkQ6IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogQ1BVIGlzc3VlIGxpa2VseVJEUkFORDogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZFdlYiBDcnlwdG8gQVBJIGlzIHVuYXZhaWxhYmxlQ2FsbGluZyBXZWIgQVBJIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgZmFpbGVkcmFuZFNlY3VyZTogVnhXb3JrcyBSTkcgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZE5vZGUuanMgY3J5cHRvIENvbW1vbkpTIG1vZHVsZSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgTm9kZS5qcyBBUEkgY3J5cHRvLnJhbmRvbUZpbGxTeW5jIGZhaWxlZE5vZGUuanMgRVMgbW9kdWxlcyBhcmUgbm90IGRpcmVjdGx5IHN1cHBvcnRlZCwgc2VlIGh0dHBzOi8vZG9jcy5ycy9nZXRyYW5kb20jbm9kZWpzLWVzLW1vZHVsZS1zdXBwb3J0VW5rbm93biBFcnJvcjogEWwQAA8AAABPUyBFcnJvcjogAAAobBAACgAAAGNyeXB0bwAAxGkQAOtpEAARahAAJWoQAFdqEACEahAAs2oQANRqEADxahAAxGkQAMRpEAAeaxAAT2sQAHxrEACsaxAAJwAAACYAAAAUAAAAMgAAAC0AAAAvAAAAIQAAAB0AAAAtAAAAJwAAACcAAAAxAAAALQAAADAAAABlAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvcGFya2luZ19sb3QucnMAvGwQAGsAAABrAQAAFwAAALxsEABrAAAAhgEAABcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcmtpbmdfbG90X2NvcmUtMC45LjEwL3NyYy9wYXJraW5nX2xvdC5ycwBIbRAAawAAAEoBAAAMAAAAUGFya2luZyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AAMRtEAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAAD0bRAAcgAAABoAAAAJAAAA9G0QAHIAAAAeAAAACQAAAPRtEAByAAAAIgAAAAkAAAD0bRAAcgAAACYAAAAJAAAA9G0QAHIAAAAqAAAACQAAAAAAAAAIAAAABAAAAD0BAAByZWFkb25seXJlYWR3cml0ZXJlYWR3cml0ZWZsdXNoY2xlYW51cHZlcnNpb25jaGFuZ2VhdHRlbXB0ZWQgdG8gY29udmVydCBpbnZhbGlkIElkYlRyYW5zYWN0aW9uTW9kZSBpbnRvIEpTVmFsdWUvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dlYi1zeXMtMC4zLjY5L3NyYy9mZWF0dXJlcy9nZW5fSWRiVHJhbnNhY3Rpb25Nb2RlLnJzAAAAN28QAHYAAAAEAAAAAQAAAAAAAAAIAAAABAAAAD4BAAA/AQAAQAEAAEEBAABpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAAAA3G8QAA4AAADqbxAACwAAAAEAQZjgwQALwwEBAAAARQEAACBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyAQAAAAAAAAAgcBAALAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi4zL3NyYy9saWIucnNccBAAZAAAADUAAAAOAAAA///////////QcBAAQejhwQAL1gcvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAOhwEABPAAAAyAUAABQAAADocBAATwAAAMgFAAAhAAAA6HAQAE8AAAC8BQAAIQAAAOhwEABPAAAATAQAACQAAABva0ZBSUxpZ25vcmVkaWdub3JlZCwgAACFcRAACQAAAAAAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzAJxxEABnAAAAUQIAACoAAACccRAAZwAAAE4CAAAJAAAAnHEQAGcAAAArAgAAJwAAAJxxEABnAAAALwIAACAAAACccRAAZwAAACYCAAAuAAAAnHEQAGcAAAAlAgAAKgAAAJxxEABnAAAAYQIAAB4AAACccRAAZwAAAF0CAAAlAAAAAQAAgAAAAAAAAAAAnHEQAGcAAABtAgAAFgAAAJxxEABnAAAAdQIAADUAAAAKZmFpbHVyZXM6CmZhaWx1cmVzOgpGQUlMRUR0ZXN0IHJlc3VsdDogLiAgcGFzc2VkOyAgZmFpbGVkOyAgaWdub3JlZDsgIGZpbHRlcmVkIG91dArLchAADQAAANhyEAACAAAA2nIQAAkAAADjchAACQAAAOxyEAAKAAAA9nIQAA4AAAAgICAgNHMQAAQAAACccRAAZwAAAHwCAAAmAAAAIG91dHB1dDoKbm90ZTogIGRpZCBub3QgcGFuaWMgYXMgZXhwZWN0ZWQKCgBZcxAABgAAAF9zEAAcAAAAbm90ZTogcGFuaWMgZGlkIG5vdCBjb250YWluIGV4cGVjdGVkIHN0cmluZwogICAgICBwYW5pYyBtZXNzYWdlOiBgIiJgLAoAuHMQABcAAADPcxAABAAAAJxxEABnAAAAsAIAACcAAACccRAAZwAAALACAAAwAAAAIGV4cGVjdGVkIHN1YnN0cmluZzogYCIiYAoKAAR0EAAXAAAAG3QQAAQAAABkZWJ1Z2xvZ2luZm93YXJuZXJyb3JKUyBleGNlcHRpb24gdGhhdCB3YXMgdGhyb3duOgotLS0tICBvdXRwdXQgLS0tLQoAAABjdBAABQAAAGh0EAANAAAAnHEQAGcAAACiAgAAIgAAAJxxEABnAAAABgEAABIAAABKAQAABAAAAAQAAABLAQAATAEAAE0BAEHI6cEACw4BAAAATgEAAE8BAABQAQBB4OnBAAudBgEAAABRAQAAUgEAAFMBAACccRAAZwAAADMBAAAnAAAALS1pbmNsdWRlLWlnbm9yZWQtLXNraXAtLXNraXA9bW9yZSB0aGFuIG9uZSBmaWx0ZXIgYXJndW1lbnQgY2Fubm90IGJlIHBhc3NlZJxxEABnAAAAQgEAABEAAABmbGFnICBub3Qgc3VwcG9ydGVkAFx1EAAFAAAAYXUQAA4AAACccRAAZwAAAEABAAARAAAAQXJndW1lbnQgdG8gb3B0aW9uICdza2lwJyBtaXNzaW5nAAAAnHEQAGcAAAA5AQAAGgAAAJxxEABnAAAAOwEAABoAAACccRAAZwAAAC4BAAAoAAAAnHEQAGcAAAAtAQAALAAAAHRlc3R0ZXN0c3J1bm5pbmcgIAAA/XUQAAgAAAAFdhAAAQAAAGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY3JlYXRpbmcgYSB0ZXN0OiAYdhAAKAAAAJxxEABnAAAAYgEAABUAAABUAQAAWHYQAC9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAYHYQAE8AAADIBQAAFAAAAGB2EABPAAAAyAUAACEAAABgdhAATwAAALwFAAAhAAAAVwEAAAwAAAAEAAAAWAEAAFkBAABaAQAAYHYQAE8AAABMBAAAJAAAAHRlc3QgIC4uLiAAAAh3EAAFAAAADXcQAAUAAAA6IAAAAQAAAAAAAAAkdxAAAgAAAAoAAAABAAAAAAAAADh3EAABAAAAYHVud3JhcF90aHJvd2AgZmFpbGVkAAAAAAAAAAQAAAAEAAAAWwEAAFwBAABdAQAAJAAAAAQAAABeAQAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwCIdxAAZwAAAN0AAAAVAEGI8MEAC4IGAQAAAI4AAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAAAFZ4EABPAAAABAEAABoAAAB0ZXN0ICAuLi4gAAC4eBAABQAAAL14EAAFAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tdGVzdC0wLjMuNDIvc3JjL3J0L21vZC5ycwDUeBAAZwAAAG4BAAAbAAAAY2Fubm90IGFjY2VzcyBhIHNjb3BlZCB0aHJlYWQgbG9jYWwgdmFyaWFibGUgd2l0aG91dCBjYWxsaW5nIGBzZXRgIGZpcnN0L1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zY29wZWQtdGxzLTEuMC4xL3NyYy9saWIucnOUeRAAXAAAAKgAAAAJAAAAAAAAAAQAAAAEAAAAXwEAAEVycm9yAAAAAAAAAAQAAAAEAAAAYAEAAGEBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzACx6EABnAAAApgEAAB4AAAAAAAAABAAAAAQAAABgAQAAYQEAAAAAAAAEAAAABAAAAGABAABhAQAAAAAAAAQAAAAEAAAAYAEAAGEBAAAAAAAABAAAAAQAAABgAQAAYQEAAGIBAAAMAAAABAAAAGMBAABkAQAAWgEAQZT2wQALoQQBAAAAZQEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAFN7EABLAAAABgoAAA4AAAAsehAAZwAAAAkBAAAtAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTyexAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5JHwQADgAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzZHwQAEwAAACeAAAAMgAAAAAAAAAIAAAABAAAAGYBAABnAQAAaAEAAGkBAAAAAAAACAAAAAQAAABqAQAARGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZQBBwPrBAAuSAgEAAABrAQAAbAEAAGwBAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAFB9EABPAAAAyAUAABQAAABQfRAATwAAAMgFAAAhAAAAUH0QAE8AAAC8BQAAIQAAAFB9EABPAAAATAQAACQAAABvdXRwdXR0ZXN0ICAuLi4g5n0QAAUAAADrfRAABQAAADogAAABAAAAAAAAAAB+EAACAAAACgAAAAEAAAAAAAAAFH4QAAEAAABFcnJvcgAAAG4BAAAMAAAABAAAAG8BAABwAQAAcQEAAAoKU3RhY2s6CgoAQdz8wQALmQEBAAAAcgEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAJt+EABLAAAABgoAAA4AQYD+wQALtQ0BAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAATn8QAE8AAAAEAQAAGgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAAB3AQAABAAAAAQAAAB4AQAAeQEAAHoBAAAEAAAABAAAAHsBAAB8AQAAegEAAAQAAAAEAAAAfQEAAH4BAABGbk9uY2UgY2FsbGVkIG1vcmUgdGhhbiBvbmNlL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL3F1ZXVlLnJzAAAAPIAQAGkAAAAoAAAAKQAAADyAEABpAAAAJQAAAC4AAAA8gBAAaQAAAD4AAAAaAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwDYgBAAZwAAAKgAAAAPAAAA2IAQAGcAAACIAAAAJwAAANiAEABnAAAAsgAAACQAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC40Mi9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAAB/AQAAgAEAAIEBAACCAQAAcIEQAHUAAABmAAAAJQAAAHJldHVybiB0aGlzYHVud3JhcF90aHJvd2AgZmFpbGVkY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRKc1ZhbHVlKCkAWoIQAAgAAABighAAAQAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3RFcnJvci9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5yc0VPRiB3aGlsZSBwYXJzaW5nIGEgbGlzdEVPRiB3aGlsZSBwYXJzaW5nIGFuIG9iamVjdEVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nRU9GIHdoaWxlIHBhcnNpbmcgYSB2YWx1ZWV4cGVjdGVkIGA6YGV4cGVjdGVkIGAsYCBvciBgXWBleHBlY3RlZCBgLGAgb3IgYH1gZXhwZWN0ZWQgaWRlbnRleHBlY3RlZCB2YWx1ZWV4cGVjdGVkIGAiYGludmFsaWQgZXNjYXBlaW52YWxpZCBudW1iZXJudW1iZXIgb3V0IG9mIHJhbmdlaW52YWxpZCB1bmljb2RlIGNvZGUgcG9pbnRjb250cm9sIGNoYXJhY3RlciAoXHUwMDAwLVx1MDAxRikgZm91bmQgd2hpbGUgcGFyc2luZyBhIHN0cmluZ2tleSBtdXN0IGJlIGEgc3RyaW5naW52YWxpZCB2YWx1ZTogZXhwZWN0ZWQga2V5IHRvIGJlIGEgbnVtYmVyIGluIHF1b3Rlc2Zsb2F0IGtleSBtdXN0IGJlIGZpbml0ZSAoZ290IE5hTiBvciArLy1pbmYpbG9uZSBsZWFkaW5nIHN1cnJvZ2F0ZSBpbiBoZXggZXNjYXBldHJhaWxpbmcgY29tbWF0cmFpbGluZyBjaGFyYWN0ZXJzdW5leHBlY3RlZCBlbmQgb2YgaGV4IGVzY2FwZXJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZAAAkQEAAAwAAAAEAAAAkgEAAJMBAACUAQAARXJyb3IoLCBsaW5lOiAsIGNvbHVtbjogKQAAAHyFEAAGAAAAgoUQAAgAAACKhRAACgAAAJSFEAABAEHAi8IAC5sLAQAAAJUBAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AOOCEABLAAAABgoAAA4AAACWAQAADAAAAAQAAACXAQAAmAEAAJQBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjEzNC9zcmMvcmVhZC5ycwAohhAAXwAAAKABAABFAAAAKIYQAF8AAAClAQAAPQAAACiGEABfAAAArQEAABoAAAAohhAAXwAAAPoBAAATAAAAKIYQAF8AAAD/AQAAMwAAACiGEABfAAAAAwIAAD4AAAAohhAAXwAAAAkCAAA6AAAAKIYQAF8AAABoAgAAGQAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAQACAAMABAAFAAYABwAIAAkA//////////////////8KAAsADAANAA4ADwD/////////////////////////////////////////////////////////////////////CgALAAwADQAOAA8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAQACAAMABAAFAAYABwAIAAkAD//////////////////6AAsADAANAA4ADwAP////////////////////////////////////////////////////////////////////+gALAAwADQAOAA8AD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9hbnkgdmFsaWQgSlNPTiB2YWx1ZWEgc3RyaW5nIGtleTAxMjM0NTY3ODlhYmNkZWZ1dXV1dXV1dWJ0bnVmcnV1dXV1dXV1dXV1dXV1dXV1dQAAIgBBlJfCAAsB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bHVlT3B0aW9uIHZhbHVlbmV3dHlwZSBzdHJ1Y3RzZXF1ZW5jZW1hcGVudW11bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnRleHBsaWNpdCBwYW5pYy9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtMS4wLjIxNi9zcmMvZGUvbW9kLnJzAL/BEABcAAAA6wgAABIAAADPwBAAAQAAAM/AEAABAAAAYCBvciBgAADPwBAAAQAAADzCEAAGAAAAz8AQAAEAAABvbmUgb2YgLCAAAAABAAAAAAAAAC4waTMyAAAAqwEAAAwAAAAEAAAArAEAAK0BAACuAQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAJDCEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAACQwhAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3IAAQAAAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZp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OiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAWNYQACAAAAB41hAAEgAAAAAAAAAEAAAABAAAAMYBAAA9PSE9bWF0Y2hlc2Fzc2VydGlvbiBgbGVmdCAgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IAogcmlnaHQ6IAC31hAAEAAAAMfWEAAXAAAA3tYQAAkAAAAgcmlnaHRgIGZhaWxlZDogCiAgbGVmdDogAAAAt9YQABAAAAAA1xAAEAAAABDXEAAJAAAA3tYQAAkAAAA6IAAAAQAAAAAAAAA81xAAAgAAAAAAAAAMAAAABAAAAMcBAADIAQAAyQEAACAgICAgeyAsICB7CiwKfSB9KCgKLApdY29yZS9zcmMvZm10L251bS5ycwAAf9cQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY29yZS9zcmMvZm10L21vZC5yc2ZhbHNldHJ1ZQAArtgQABMAAACWCQAAJgAAAK7YEAATAAAAnwkAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVy7NgQAEwAAABjb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAQNkQACcAAABbAwAABQAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCB42RAAEgAAAIrZEAAiAAAAcmFuZ2UgZW5kIGluZGV4ILzZEAAQAAAAitkQACIAAABzbGljZSBpbmRleCBzdGFydHMg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", "base64"); + +// src/index.ts +init_ridb_wasm(); +var internal; +var StorageType = /* @__PURE__ */ ((StorageType2) => { + StorageType2["InMemory"] = "InMemory"; + StorageType2["IndexDB"] = "IndexDB"; + return StorageType2; +})(StorageType || {}); +var RIDB = class _RIDB { + schemas; + migrations; + plugins = []; + _db; + dbName; + /** + * Creates an instance of RIDB. + * @param options + */ + constructor(options) { + const { + dbName, + schemas, + migrations = {}, + plugins = [] + } = options; + this.schemas = schemas; + this.plugins = plugins; + this.migrations = migrations; + this.dbName = dbName; + } + getStorageType(storageType) { + return storageType === "InMemory" /* InMemory */ ? internal.InMemory : internal.IndexDB; + } + /** + * Gets the database instance. Throws an error if the database has not been started. + * @throws Will throw an error if the database is not started. + * @private + */ + get db() { + if (!this._db) { + throw new Error("Start the database first"); + } + return this._db; + } + get started() { + return this._db?.started ?? false; + } + /** + * Gets the collections from the database. + * @returns The collections object. + */ + get collections() { + return this.db.collections; + } + /** + * Loads the RIDB Rust module. + * @returns {Promise} A promise that resolves to the RIDB Rust module. + * @private + */ + static async load() { + internal ??= await Promise.resolve().then(() => (init_ridb_wasm(), ridb_wasm_exports)).then(async (module2) => { + const wasmInstance = module2.initSync(ridb_wasm_bg_default); + await module2.default(wasmInstance); + return module2; + }); + return internal; + } + /** + * Starts the database. + * @returns {Promise>} A promise that resolves to the database instance. + * @param options + */ + async start(options) { + if (!this._db) { + const { storageType, password } = options ?? {}; + const { Database: Database2 } = await _RIDB.load(); + const StorageClass = typeof storageType === "string" ? this.getStorageType(storageType) : storageType ?? void 0; + if (StorageClass && !StorageClass.create) { + throw new Error("Your storage does not have an async create function, please check documentation"); + } + const storage = StorageClass ? await StorageClass.create(this.dbName, this.schemas, options) : void 0; + this._db ??= await Database2.create( + this.dbName, + this.schemas, + this.migrations, + this.plugins, + { + apply: (plugins = []) => plugins.map((Plugin) => new Plugin()) + }, + password, + storage + ); + } else { + await this.db.start(); + } + return this.db; + } + async close() { + await this.db.close(); + this._db = void 0; + debugger; + } +}; +var SchemaFieldType = { + string: "string", + number: "number", + boolean: "boolean", + array: "array", + object: "object" +}; +export { + BasePlugin, + BaseStorage, + Collection, + Database, + OpType, + Operation, + Property, + Query, + RIDB, + Schema, + SchemaFieldType, + StorageType +}; diff --git a/packages/ridb/build/index.d.ts b/packages/ridb/build/index.d.ts new file mode 100644 index 0000000..f2a8b65 --- /dev/null +++ b/packages/ridb/build/index.d.ts @@ -0,0 +1,586 @@ +// Generated by dts-bundle-generator v9.5.1 + +/** +* Represents the type of operation to be performed on the collection. +*/ +export enum OpType { + /** + * Create operation. + */ + CREATE = 0, + /** + * Update operation. + */ + UPDATE = 1, + /** + * Delete operation. + */ + DELETE = 2, + /** + * Query Operation. + */ + QUERY = 3, + /** + * Count Operation. + */ + COUNT = 4 +} +export type Operators = { + $gte?: number; + $gt?: number; + $lt?: number; + $lte?: number; +}; +export type InOperator = { + $in?: T[]; +}; +export type OperatorOrType = T extends number ? T | Operators | InOperator : T | InOperator; +export type LogicalOperators = { + $and?: Partial>[]; + $or?: Partial>[]; +}; +export type QueryType = Partial<{ + [K in keyof T["properties"]]: OperatorOrType>; +}> & LogicalOperators | LogicalOperators[]; +export class Query { + constructor(query: QueryType, schema: Schema); + readonly query: QueryType; +} +//test +export type BaseStorageOptions = { + [name: string]: string | boolean | number; +}; +export class BaseStorage extends StorageInternal { + static create(dbName: string, schemas: SchemasCreate, options?: BaseStorageOptions): Promise>; + constructor(dbName: string, schemas: Schemas, options?: BaseStorageOptions); + readonly dbName: string; + readonly schemas: Record>; + readonly options: BaseStorageOptions; + readonly core: CoreStorage; + start(): Promise; + close(): Promise; + count(colectionName: keyof Schemas, query: QueryType): Promise; + findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; + find(collectionName: keyof Schemas, query: QueryType): Promise[]>; + write(op: Operation): Promise>; + getOption(name: string): string | boolean | number | undefined; + getSchema(name: string): Schema; +} +/** + * Represents the type definition for a schema. + */ +export type SchemaType = { + /** + * The version of the schema. + */ + readonly version: number; + /** + * The primary key of the schema. + */ + readonly primaryKey: string; + /** + * The type of the schema. + */ + readonly type: string; + /** + * An optional array of required fields. + */ + readonly required?: string[]; + /** + * An optional array of indexes. + */ + readonly indexes?: string[]; + readonly encrypted?: string[]; + /** + * The properties defined in the schema. + */ + readonly properties: { + [name: string]: Property; + }; +}; +/** + * Represents a schema, including its definition and related methods. + * + * @template T - The schema type. + */ +export class Schema { + /** + * The schema definition. + */ + schema: Schema; + /** + * Creates a new `Schema` instance from the provided definition. + * + * @template TS - The schema type. + * @param {TS} defi, Debugnition - The schema definition. + * @returns {Schema} The created `Schema` instance. + */ + static create(definition: TS): Schema; + /** + * The version of the schema. + */ + readonly version: number; + /** + * The primary key of the schema. + */ + readonly primaryKey: string; + /** + * The type of the schema. + */ + readonly type: string; + /** + * An optional array of indexes. + */ + readonly indexes?: string[]; + readonly required?: string[]; + readonly encrypted?: string[]; + /** + * The properties defined in the schema. + */ + readonly properties: { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: T["properties"][K]; + } & { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: T["properties"][K]; + }; + /** + * Converts the schema to a JSON representation. + * + * @returns {SchemaType} The JSON representation of the schema. + */ + toJSON(): SchemaType; +} +/** + * Represents a database containing collections of documents. + * RIDB extends from this class and is used to expose collections. + * + * So if you specify: + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 0, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * } + * } + * } + * } as const + * } + * ) + * ``` + * + * The collection will be available as `db.collections.demo` and all the methods for the collection (find, count, findById, update, create, delete) will be available. + * + * @template T - A record of schema types. + */ +export class Database { + /** + * Creates a new `Database` instance with the provided schemas and storage module. + * + * @template TS - A record of schema types. + * @param {TS} schemas - The schemas to use for the collections. + * @param migrations + * @param plugins + * @param options + * @param password + * @returns {Promise>} A promise that resolves to the created `Database` instance. + */ + static create(db_name: string, schemas: TS, migrations: MigrationPathsForSchemas | MigrationPathsForSchema, plugins: Array, options: RIDBModule, password?: string, storage?: BaseStorage): Promise>; + /** + * The collections in the database. + * + * This is a read-only property where the key is the name of the collection and the value is a `Collection` instance. + */ + readonly collections: { + [name in keyof T]: Collection>; + }; + readonly started: boolean; + /** + * Starts the database. + * + * @returns {Promise} A promise that resolves when the database is started. + */ + start(): Promise; + /** + * Closes the database. + * + * @returns {Promise} A promise that resolves when the database is closed. + */ + close(): Promise; +} +/** + * Represents a function type for creating storage with the provided schema type records. + * + * @template T - The schema type record. + * @param {T} records - The schema type records. + * @returns {Promise} A promise that resolves to the created internals record. + */ +export type CreateStorage = (records: T) => Promise>; +/** + * Represents a storage module with a method for creating storage. + */ +export type RIDBModule = { + /** + * Plugin constructors array + */ + apply: (plugins: Array) => Array; +}; +/** + * Represents an operation to be performed on a collection. + * + * @template T - The schema type of the collection. + */ +export type Operation = { + /** + * The name of the collection on which the operation will be performed. + */ + collection: string; + /** + * The type of operation to be performed (e.g., CREATE, UPDATE, DELETE). + */ + opType: OpType; + /** + * The data involved in the operation, conforming to the schema type. + */ + data: Doc; + /** + * An array of indexes related to the operation. + */ + indexes: Array; +}; +export type Hook = (schema: Schema, migration: MigrationPathsForSchema, doc: Doc) => Doc; +export type BasePluginOptions = { + docCreateHook?: Hook; + docRecoverHook?: Hook; +}; +export class BasePlugin implements BasePluginOptions { + docCreateHook?: Hook; + docRecoverHook?: Hook; +} +/** + * Represents a property within a schema, including various constraints and nested properties. + */ +export class Property { + /** + * The type of the property. + */ + readonly type: string; + /** + * The version of the property, if applicable. + */ + readonly version?: number; + /** + * The primary key of the property, if applicable. + */ + readonly primaryKey?: string; + /** + * An optional array of nested properties for array-type properties. + */ + readonly items?: Property[]; + /** + * The maximum number of items for array-type properties, if applicable. + */ + readonly maxItems?: number; + /** + * The minimum number of items for array-type properties, if applicable. + */ + readonly minItems?: number; + /** + * The maximum length for string-type properties, if applicable. + */ + readonly maxLength?: number; + /** + * The minimum length for string-type properties, if applicable. + */ + readonly minLength?: number; + /** + * An optional array of required fields for object-type properties. + */ + readonly required?: boolean; + /** + * An optional default value for the property. + */ + readonly default?: any; + /** + * An optional map of nested properties for object-type properties. + */ + readonly properties?: { + [name: string]: Property; + }; +} +export type InternalsRecord = { + [name: string]: BaseStorage; +}; +/** + * ExtractType is a utility type that maps a string representing a basic data type to the actual TypeScript type. + * + * @template T - A string literal type representing the basic data type ('string', 'number', 'boolean', 'object', 'array'). + * + * @example + * type StringType = ExtractType<'string'>; // StringType is string + * type NumberType = ExtractType<'number'>; // NumberType is number + * type BooleanType = ExtractType<'boolean'>; // BooleanType is boolean + * type ObjectType = ExtractType<'object'>; // ObjectType is object + * type ArrayType = ExtractType<'array'>; // ArrayType is Array + */ +export type ExtractType = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "object" ? object : T extends "array" ? Array : never; +/** + * Doc is a utility type that transforms a schema type into a document type where each property is mapped to its extracted type. + * + * @template T - A schema type with a 'properties' field where each property's type is represented as a string. + * + * type Document = Doc; // Document is { name: string; age: number; } + */ +export type Doc = { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: ExtractType; +} & { + [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: ExtractType; +} & { + __version?: number; +}; +/** + * Collection is a class that represents a collection of documents in a database. + * @template T - A schema type defining the structure of the documents in the collection. + */ +export class Collection { + /** + * Finds all documents in the collection. + * + * @returns A promise that resolves to an array of documents. + */ + find(query: QueryType): Promise[]>; + /** + * count all documents in the collection. + * + * @returns A promise that resolves to an array of documents. + */ + count(query: QueryType): Promise; + /** + * Finds a single document in the collection by its ID. + * + * @param id - The ID of the document to find. + * @returns A promise that resolves to the found document. + */ + findById(id: string): Promise>; + /** + * Updates a document in the collection by its ID. + * + * @param id - The ID of the document to update. + * @param document - A partial document containing the fields to update. + * @returns A promise that resolves when the update is complete. + */ + update(document: Partial>): Promise; + /** + * Creates a new document in the collection. + * + * @param document - The document to create. + * @returns A promise that resolves to the created document. + */ + create(document: Doc): Promise>; + /** + * Deletes a document in the collection by its ID. + * + * @param id - The ID of the document to delete. + * @returns A promise that resolves when the deletion is complete. + */ + delete(id: string): Promise; +} +/** + * Represents a record of schema types, where each key is a string and the value is a `SchemaType`. + */ +export type SchemaTypeRecord = { + [name: string]: SchemaType; +}; +export abstract class StorageInternal { + constructor(name: string, schemas: Schemas); + abstract start(): Promise; + abstract close(): Promise; + abstract count(colectionName: keyof Schemas, query: QueryType): Promise; + abstract findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; + abstract find(collectionName: keyof Schemas, query: QueryType): Promise[]>; + abstract write(op: Operation): Promise>; +} +declare class CoreStorage { + /** + * @param {any} document + * @param {Query} query + * @returns {boolean} + */ + matchesQuery(document: any, query: Query): boolean; +} +export type EnumerateUpTo = Acc["length"] extends N ? Acc[number] : EnumerateUpTo; +export type EnumerateFrom1To = Exclude, 0> | (N extends 0 ? never : N); +export type IsVersionGreaterThan0 = V extends 0 ? false : true; +export type AnyVersionGreaterThan1> = true extends { + [K in keyof T]: IsVersionGreaterThan0; +}[keyof T] ? true : false; +export type MigrationFunction = (doc: Doc) => Doc; +export type MigrationPathsForSchema = T["version"] extends 0 ? {} : { + [K in EnumerateFrom1To]: MigrationFunction; +}; +export type MigrationPathsForSchemas = { + [K in keyof T]: MigrationPathsForSchema; +}; +export type MigrationsParameter = AnyVersionGreaterThan1 extends true ? { + migrations: MigrationPathsForSchemas; +} : { + migrations?: never; +}; +/** + * Represents a RIDB (Rust IndexedDB) instance. + * This is the main class exposed by the RIDB Storage sdk and is used to create a database instance. + * + * ### Usage: + * + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 0, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * } + * } + * } + * } as const + * } + * ) + * ``` + * + * ### Starting the database + * ```typescript + * await db.start({dbName: "demo"}) + * ``` + * + * ### Using with encryption plugin + * You can also optionally specify storageType with a compatible storage of your choice and an optional password to enable encryption plugin + * ```typescript + * await db.start({ + * password: "my-password" + * db + * }) + * ``` + * + * A compatible storage should be a class implementing [StorageInternal ](../docs/namespaces/RIDBTypes/classes/StorageInternal.md) and its methods. + * + * ### Using with migration plugin + * The migration plugin will automatically migrate your documents for you as you upgrade and change your schemas over the time. + * + * ```typescript + * const db = new RIDB( + * { + * schemas: { + * demo: { + * version: 1, + * primaryKey: 'id', + * type: SchemaFieldType.object, + * required:['id', 'age'], + * properties: { + * id: { + * type: SchemaFieldType.string, + * maxLength: 60 + * }, + * age: { + * type: SchemaFieldType.number, + * } + * } + * } + * } as const, + * migrations: { + * demo: { + * 1: function (doc) { + * return doc + * } + * } + * } + * } + * ) + * + * await db.start({dbName: "demo"}) + * ``` + * + * @class + * @template T - The type of the schema record. + */ +export type StorageClass = { + create: (name: string, schemas: T, options: any) => Promise>; +}; +export declare enum StorageType { + InMemory = "InMemory", + IndexDB = "IndexDB" +} +export type StartOptions = { + storageType?: StorageClass | StorageType; + password?: string; + [name: string]: any; +}; +export declare class RIDB { + private schemas; + private migrations; + private plugins; + private _db; + private dbName; + /** + * Creates an instance of RIDB. + * @param options + */ + constructor(options: { + dbName: string; + schemas: T; + plugins?: Array; + } & MigrationsParameter); + private getStorageType; + /** + * Gets the database instance. Throws an error if the database has not been started. + * @throws Will throw an error if the database is not started. + * @private + */ + private get db(); + get started(): boolean; + /** + * Gets the collections from the database. + * @returns The collections object. + */ + get collections(): { + [name in keyof T]: Collection>; + }; + /** + * Loads the RIDB Rust module. + * @returns {Promise} A promise that resolves to the RIDB Rust module. + * @private + */ + static load(): Promise; + /** + * Starts the database. + * @returns {Promise>} A promise that resolves to the database instance. + * @param options + */ + start(options?: StartOptions): Promise>; + close(): Promise; +} +/** + * An enumeration of schema field types. + */ +export declare const SchemaFieldType: { + string: "string"; + number: "number"; + boolean: "boolean"; + array: "array"; + object: "object"; +}; + +export {}; diff --git a/esbuild.config.mjs b/packages/ridb/esbuild.config.mjs similarity index 100% rename from esbuild.config.mjs rename to packages/ridb/esbuild.config.mjs diff --git a/examples/node/index.mjs b/packages/ridb/examples/node/index.mjs similarity index 100% rename from examples/node/index.mjs rename to packages/ridb/examples/node/index.mjs diff --git a/examples/node/node_modules/.package-lock.json b/packages/ridb/examples/node/node_modules/.package-lock.json similarity index 100% rename from examples/node/node_modules/.package-lock.json rename to packages/ridb/examples/node/node_modules/.package-lock.json diff --git a/examples/node/node_modules/@trust0/ridb b/packages/ridb/examples/node/node_modules/@trust0/ridb similarity index 100% rename from examples/node/node_modules/@trust0/ridb rename to packages/ridb/examples/node/node_modules/@trust0/ridb diff --git a/examples/node/package-lock.json b/packages/ridb/examples/node/package-lock.json similarity index 100% rename from examples/node/package-lock.json rename to packages/ridb/examples/node/package-lock.json diff --git a/examples/node/package.json b/packages/ridb/examples/node/package.json similarity index 100% rename from examples/node/package.json rename to packages/ridb/examples/node/package.json diff --git a/examples/web/.gitignore b/packages/ridb/examples/web/.gitignore similarity index 100% rename from examples/web/.gitignore rename to packages/ridb/examples/web/.gitignore diff --git a/examples/web/README.md b/packages/ridb/examples/web/README.md similarity index 100% rename from examples/web/README.md rename to packages/ridb/examples/web/README.md diff --git a/examples/web/eslint.config.mjs b/packages/ridb/examples/web/eslint.config.mjs similarity index 100% rename from examples/web/eslint.config.mjs rename to packages/ridb/examples/web/eslint.config.mjs diff --git a/examples/web/next.config.ts b/packages/ridb/examples/web/next.config.ts similarity index 100% rename from examples/web/next.config.ts rename to packages/ridb/examples/web/next.config.ts diff --git a/examples/web/package-lock.json b/packages/ridb/examples/web/package-lock.json similarity index 100% rename from examples/web/package-lock.json rename to packages/ridb/examples/web/package-lock.json diff --git a/examples/web/package.json b/packages/ridb/examples/web/package.json similarity index 100% rename from examples/web/package.json rename to packages/ridb/examples/web/package.json diff --git a/examples/web/postcss.config.mjs b/packages/ridb/examples/web/postcss.config.mjs similarity index 100% rename from examples/web/postcss.config.mjs rename to packages/ridb/examples/web/postcss.config.mjs diff --git a/examples/web/public/file.svg b/packages/ridb/examples/web/public/file.svg similarity index 100% rename from examples/web/public/file.svg rename to packages/ridb/examples/web/public/file.svg diff --git a/examples/web/public/globe.svg b/packages/ridb/examples/web/public/globe.svg similarity index 100% rename from examples/web/public/globe.svg rename to packages/ridb/examples/web/public/globe.svg diff --git a/examples/web/public/next.svg b/packages/ridb/examples/web/public/next.svg similarity index 100% rename from examples/web/public/next.svg rename to packages/ridb/examples/web/public/next.svg diff --git a/examples/web/public/vercel.svg b/packages/ridb/examples/web/public/vercel.svg similarity index 100% rename from examples/web/public/vercel.svg rename to packages/ridb/examples/web/public/vercel.svg diff --git a/examples/web/public/window.svg b/packages/ridb/examples/web/public/window.svg similarity index 100% rename from examples/web/public/window.svg rename to packages/ridb/examples/web/public/window.svg diff --git a/examples/web/src/app/favicon.ico b/packages/ridb/examples/web/src/app/favicon.ico similarity index 100% rename from examples/web/src/app/favicon.ico rename to packages/ridb/examples/web/src/app/favicon.ico diff --git a/examples/web/src/app/globals.css b/packages/ridb/examples/web/src/app/globals.css similarity index 100% rename from examples/web/src/app/globals.css rename to packages/ridb/examples/web/src/app/globals.css diff --git a/examples/web/src/app/layout.tsx b/packages/ridb/examples/web/src/app/layout.tsx similarity index 100% rename from examples/web/src/app/layout.tsx rename to packages/ridb/examples/web/src/app/layout.tsx diff --git a/examples/web/src/app/page.tsx b/packages/ridb/examples/web/src/app/page.tsx similarity index 100% rename from examples/web/src/app/page.tsx rename to packages/ridb/examples/web/src/app/page.tsx diff --git a/examples/web/tailwind.config.ts b/packages/ridb/examples/web/tailwind.config.ts similarity index 100% rename from examples/web/tailwind.config.ts rename to packages/ridb/examples/web/tailwind.config.ts diff --git a/examples/web/tsconfig.json b/packages/ridb/examples/web/tsconfig.json similarity index 100% rename from examples/web/tsconfig.json rename to packages/ridb/examples/web/tsconfig.json diff --git a/packages/ridb/node_modules/.vite/deps/_metadata.json b/packages/ridb/node_modules/.vite/deps/_metadata.json new file mode 100644 index 0000000..70348aa --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/_metadata.json @@ -0,0 +1,79 @@ +{ + "hash": "3e7d26d0", + "configHash": "2785a279", + "lockfileHash": "19689253", + "browserHash": "7f95c2ee", + "optimized": { + "vitest > @vitest/utils > pretty-format": { + "src": "../../../../../node_modules/pretty-format/build/index.js", + "file": "vitest___@vitest_utils___pretty-format.js", + "fileHash": "ccbdf8ae", + "needsInterop": true + }, + "vitest > @vitest/snapshot > pretty-format": { + "src": "../../../../../node_modules/pretty-format/build/index.js", + "file": "vitest___@vitest_snapshot___pretty-format.js", + "fileHash": "8b12dc80", + "needsInterop": true + }, + "vitest > @vitest/snapshot > magic-string": { + "src": "../../../../../node_modules/magic-string/dist/magic-string.es.mjs", + "file": "vitest___@vitest_snapshot___magic-string.js", + "fileHash": "1415ee1c", + "needsInterop": false + }, + "vitest > diff-sequences": { + "src": "../../../../../node_modules/diff-sequences/build/index.js", + "file": "vitest___diff-sequences.js", + "fileHash": "b139d3bb", + "needsInterop": true + }, + "vitest > pretty-format": { + "src": "../../../../../node_modules/pretty-format/build/index.js", + "file": "vitest___pretty-format.js", + "fileHash": "371b2a76", + "needsInterop": true + }, + "vitest > pretty-format > ansi-styles": { + "src": "../../../../../node_modules/ansi-styles/index.js", + "file": "vitest___pretty-format___ansi-styles.js", + "fileHash": "0b82a3e7", + "needsInterop": true + }, + "vitest > pretty-format > ansi-regex": { + "src": "../../../../../node_modules/ansi-regex/index.js", + "file": "vitest___pretty-format___ansi-regex.js", + "fileHash": "594d2a68", + "needsInterop": false + }, + "vitest > chai": { + "src": "../../../../../node_modules/chai/index.mjs", + "file": "vitest___chai.js", + "fileHash": "a66f93aa", + "needsInterop": false + }, + "buffer": { + "src": "../../../../../node_modules/buffer/index.js", + "file": "buffer.js", + "fileHash": "b6aa9621", + "needsInterop": true + }, + "uuid": { + "src": "../../../../../node_modules/uuid/dist/esm-browser/index.js", + "file": "uuid.js", + "fileHash": "459bf568", + "needsInterop": false + } + }, + "chunks": { + "chunk-UCU27OGC": { + "file": "chunk-UCU27OGC.js" + }, + "chunk-UJ726J2L": { + "file": "chunk-UJ726J2L.js" + }, + "chunk-5WRI5ZAA": { + "file": "chunk-5WRI5ZAA.js" + } + } +} \ No newline at end of file diff --git a/packages/ridb/node_modules/.vite/deps/buffer.js b/packages/ridb/node_modules/.vite/deps/buffer.js new file mode 100644 index 0000000..c848375 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/buffer.js @@ -0,0 +1,1793 @@ +import { + __commonJS +} from "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/base64-js/index.js +var require_base64_js = __commonJS({ + "../../node_modules/base64-js/index.js"(exports) { + "use strict"; + exports.byteLength = byteLength; + exports.toByteArray = toByteArray; + exports.fromByteArray = fromByteArray; + var lookup = []; + var revLookup = []; + var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; + var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + for (i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + var i; + var len; + revLookup["-".charCodeAt(0)] = 62; + revLookup["_".charCodeAt(0)] = 63; + function getLens(b64) { + var len2 = b64.length; + if (len2 % 4 > 0) { + throw new Error("Invalid string. Length must be a multiple of 4"); + } + var validLen = b64.indexOf("="); + if (validLen === -1) validLen = len2; + var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; + return [validLen, placeHoldersLen]; + } + 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; + var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; + var i2; + for (i2 = 0; i2 < len2; i2 += 4) { + tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)]; + arr[curByte++] = tmp >> 16 & 255; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 2) { + tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 1) { + tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + return arr; + } + function tripletToBase64(num) { + return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; + } + function encodeChunk(uint8, start, end) { + var tmp; + var output = []; + for (var i2 = start; i2 < end; i2 += 3) { + tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255); + output.push(tripletToBase64(tmp)); + } + return output.join(""); + } + function fromByteArray(uint8) { + var tmp; + var len2 = uint8.length; + var extraBytes = len2 % 3; + var parts = []; + var maxChunkLength = 16383; + for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) { + parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength)); + } + if (extraBytes === 1) { + tmp = uint8[len2 - 1]; + parts.push( + lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" + ); + } else if (extraBytes === 2) { + tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; + parts.push( + lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" + ); + } + return parts.join(""); + } + } +}); + +// ../../node_modules/ieee754/index.js +var require_ieee754 = __commonJS({ + "../../node_modules/ieee754/index.js"(exports) { + exports.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); + }; + exports.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 & 255, i += d, m /= 256, mLen -= 8) { + } + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) { + } + buffer[offset + i - d] |= s * 128; + }; + } +}); + +// ../../node_modules/buffer/index.js +var require_buffer = __commonJS({ + "../../node_modules/buffer/index.js"(exports) { + var base64 = require_base64_js(); + var ieee754 = require_ieee754(); + var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; + exports.Buffer = Buffer; + exports.SlowBuffer = SlowBuffer; + exports.INSPECT_MAX_BYTES = 50; + var K_MAX_LENGTH = 2147483647; + exports.kMaxLength = K_MAX_LENGTH; + 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() { + 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 void 0; + return this.buffer; + } + }); + Object.defineProperty(Buffer.prototype, "offset", { + enumerable: true, + get: function() { + if (!Buffer.isBuffer(this)) return void 0; + return this.byteOffset; + } + }); + function createBuffer(length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"'); + } + const buf = new Uint8Array(length); + Object.setPrototypeOf(buf, Buffer.prototype); + return buf; + } + function Buffer(arg, encodingOrOffset, length) { + 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; + 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 + ); + } + Buffer.from = function(value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length); + }; + 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 !== void 0) { + return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); + } + return createBuffer(size); + } + Buffer.alloc = function(size, fill, encoding) { + return alloc(size, fill, encoding); + }; + function allocUnsafe(size) { + assertSize(size); + return createBuffer(size < 0 ? 0 : checked(size) | 0); + } + Buffer.allocUnsafe = function(size) { + return allocUnsafe(size); + }; + 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) { + 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 === void 0 && length === void 0) { + buf = new Uint8Array(array); + } else if (length === void 0) { + buf = new Uint8Array(array, byteOffset); + } else { + buf = new Uint8Array(array, byteOffset, length); + } + 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 !== void 0) { + 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) { + 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) { + length = 0; + } + return Buffer.alloc(+length); + } + Buffer.isBuffer = function isBuffer(b) { + return b != null && b._isBuffer === true && b !== Buffer.prototype; + }; + 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 === void 0) { + 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; + 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; + } + encoding = ("" + encoding).toLowerCase(); + loweredCase = true; + } + } + } + Buffer.byteLength = byteLength; + function slowToString(encoding, start, end) { + let loweredCase = false; + if (start === void 0 || start < 0) { + start = 0; + } + if (start > this.length) { + return ""; + } + if (end === void 0 || end > this.length) { + end = this.length; + } + if (end <= 0) { + return ""; + } + 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; + } + } + } + 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 = exports.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 === void 0) { + start = 0; + } + if (end === void 0) { + end = target ? target.length : 0; + } + if (thisStart === void 0) { + thisStart = 0; + } + if (thisEnd === void 0) { + 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; + }; + function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { + if (buffer.length === 0) return -1; + if (typeof byteOffset === "string") { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 2147483647) { + byteOffset = 2147483647; + } else if (byteOffset < -2147483648) { + byteOffset = -2147483648; + } + byteOffset = +byteOffset; + if (numberIsNaN(byteOffset)) { + byteOffset = dir ? 0 : buffer.length - 1; + } + 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; + } + if (typeof val === "string") { + val = Buffer.from(val, encoding); + } + if (Buffer.isBuffer(val)) { + if (val.length === 0) { + return -1; + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir); + } else if (typeof val === "number") { + val = val & 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 !== void 0) { + 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, i2) { + if (indexSize === 1) { + return buf[i2]; + } else { + return buf.readUInt16BE(i2 * 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) { + if (offset === void 0) { + encoding = "utf8"; + length = this.length; + offset = 0; + } else if (length === void 0 && typeof offset === "string") { + encoding = offset; + length = this.length; + offset = 0; + } else if (isFinite(offset)) { + offset = offset >>> 0; + if (isFinite(length)) { + length = length >>> 0; + if (encoding === void 0) encoding = "utf8"; + } else { + encoding = length; + length = void 0; + } + } else { + throw new Error( + "Buffer.write(string, encoding, offset[, length]) is no longer supported" + ); + } + const remaining = this.length - offset; + if (length === void 0 || 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": + 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 base64.fromByteArray(buf); + } else { + return base64.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 > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; + if (i + bytesPerSequence <= end) { + let secondByte, thirdByte, fourthByte, tempCodePoint; + switch (bytesPerSequence) { + case 1: + if (firstByte < 128) { + codePoint = firstByte; + } + break; + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 192) === 128) { + tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; + if (tempCodePoint > 127) { + codePoint = tempCodePoint; + } + } + break; + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { + tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; + if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { + codePoint = tempCodePoint; + } + } + break; + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { + tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; + if (tempCodePoint > 65535 && tempCodePoint < 1114112) { + codePoint = tempCodePoint; + } + } + } + } + if (codePoint === null) { + codePoint = 65533; + bytesPerSequence = 1; + } else if (codePoint > 65535) { + codePoint -= 65536; + res.push(codePoint >>> 10 & 1023 | 55296); + codePoint = 56320 | codePoint & 1023; + } + res.push(codePoint); + i += bytesPerSequence; + } + return decodeCodePointsArray(res); + } + var MAX_ARGUMENTS_LENGTH = 4096; + function decodeCodePointsArray(codePoints) { + const len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints); + } + 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] & 127); + } + 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 = ""; + 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 === void 0 ? 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); + Object.setPrototypeOf(newBuf, Buffer.prototype); + return newBuf; + }; + 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, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) checkOffset(offset, byteLength2, this.length); + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength2 && (mul *= 256)) { + val += this[offset + i] * mul; + } + return val; + }; + Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + checkOffset(offset, byteLength2, this.length); + } + let val = this[offset + --byteLength2]; + let mul = 1; + while (byteLength2 > 0 && (mul *= 256)) { + val += this[offset + --byteLength2] * 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] * 16777216; + }; + Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return this[offset] * 16777216 + (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 === void 0 || last === void 0) { + 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 === void 0 || last === void 0) { + 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, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) checkOffset(offset, byteLength2, this.length); + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength2 && (mul *= 256)) { + val += this[offset + i] * mul; + } + mul *= 128; + if (val >= mul) val -= Math.pow(2, 8 * byteLength2); + return val; + }; + Buffer.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) checkOffset(offset, byteLength2, this.length); + let i = byteLength2; + let mul = 1; + let val = this[offset + --i]; + while (i > 0 && (mul *= 256)) { + val += this[offset + --i] * mul; + } + mul *= 128; + if (val >= mul) val -= Math.pow(2, 8 * byteLength2); + return val; + }; + Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 128)) return this[offset]; + return (255 - 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 & 32768 ? val | 4294901760 : 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 & 32768 ? val | 4294901760 : 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 === void 0 || last === void 0) { + boundsError(offset, this.length - 8); + } + const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); + 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 === void 0 || last === void 0) { + 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 ieee754.read(this, offset, true, 23, 4); + }; + Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, false, 23, 4); + }; + Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, true, 52, 8); + }; + Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.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, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength2) - 1; + checkInt(this, value, offset, byteLength2, maxBytes, 0); + } + let mul = 1; + let i = 0; + this[offset] = value & 255; + while (++i < byteLength2 && (mul *= 256)) { + this[offset + i] = value / mul & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength2) - 1; + checkInt(this, value, offset, byteLength2, maxBytes, 0); + } + let i = byteLength2 - 1; + let mul = 1; + this[offset + i] = value & 255; + while (--i >= 0 && (mul *= 256)) { + this[offset + i] = value / mul & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 255, 0); + this[offset] = value & 255; + 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, 65535, 0); + this[offset] = value & 255; + 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, 65535, 0); + this[offset] = value >>> 8; + this[offset + 1] = value & 255; + 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, 4294967295, 0); + this[offset + 3] = value >>> 24; + this[offset + 2] = value >>> 16; + this[offset + 1] = value >>> 8; + this[offset] = value & 255; + 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, 4294967295, 0); + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 255; + return offset + 4; + }; + function wrtBigUInt64LE(buf, value, offset, min, max) { + checkIntBI(value, min, max, buf, offset, 7); + let lo = Number(value & BigInt(4294967295)); + 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(4294967295)); + 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(4294967295)); + 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(4294967295)); + 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, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, 8 * byteLength2 - 1); + checkInt(this, value, offset, byteLength2, limit - 1, -limit); + } + let i = 0; + let mul = 1; + let sub = 0; + this[offset] = value & 255; + while (++i < byteLength2 && (mul *= 256)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, 8 * byteLength2 - 1); + checkInt(this, value, offset, byteLength2, limit - 1, -limit); + } + let i = byteLength2 - 1; + let mul = 1; + let sub = 0; + this[offset + i] = value & 255; + while (--i >= 0 && (mul *= 256)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 127, -128); + if (value < 0) value = 255 + value + 1; + this[offset] = value & 255; + return offset + 1; + }; + Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); + this[offset] = value & 255; + 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, 32767, -32768); + this[offset] = value >>> 8; + this[offset + 1] = value & 255; + return offset + 2; + }; + Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); + this[offset] = value & 255; + 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, 2147483647, -2147483648); + if (value < 0) value = 4294967295 + value + 1; + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 255; + 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, 34028234663852886e22, -34028234663852886e22); + } + ieee754.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, 17976931348623157e292, -17976931348623157e292); + } + ieee754.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); + }; + 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; + if (end === start) return 0; + if (target.length === 0 || this.length === 0) return 0; + 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"); + 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") { + this.copyWithin(targetStart, start, end); + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ); + } + return len; + }; + Buffer.prototype.fill = function fill(val, start, end, encoding) { + 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 !== void 0 && 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") { + val = code; + } + } + } else if (typeof val === "number") { + val = val & 255; + } else if (typeof val === "boolean") { + val = Number(val); + } + 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 === void 0 ? 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; + }; + var errors = {}; + function E(sym, getMessage, Base) { + errors[sym] = class NodeError extends Base { + constructor() { + super(); + Object.defineProperty(this, "message", { + value: getMessage.apply(this, arguments), + writable: true, + configurable: true + }); + this.name = `${this.name} [${sym}]`; + this.stack; + 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}`; + } + function checkBounds(buf, offset, byteLength2) { + validateNumber(offset, "offset"); + if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) { + boundsError(offset, buf.length - (byteLength2 + 1)); + } + } + function checkIntBI(value, min, max, buf, offset, byteLength2) { + if (value > max || value < min) { + const n = typeof min === "bigint" ? "n" : ""; + let range; + if (byteLength2 > 3) { + if (min === 0 || min === BigInt(0)) { + range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`; + } else { + range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`; + } + } else { + range = `>= ${min}${n} and <= ${max}${n}`; + } + throw new errors.ERR_OUT_OF_RANGE("value", range, value); + } + checkBounds(buf, offset, byteLength2); + } + function validateNumber(value, name) { + if (typeof value !== "number") { + throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value); + } + } + function boundsError(value, length, type) { + if (Math.floor(value) !== value) { + validateNumber(value, type); + throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value); + } + if (length < 0) { + throw new errors.ERR_BUFFER_OUT_OF_BOUNDS(); + } + throw new errors.ERR_OUT_OF_RANGE( + type || "offset", + `>= ${type ? 1 : 0} and <= ${length}`, + value + ); + } + var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; + function base64clean(str) { + str = str.split("=")[0]; + str = str.trim().replace(INVALID_BASE64_RE, ""); + if (str.length < 2) return ""; + 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); + if (codePoint > 55295 && codePoint < 57344) { + if (!leadSurrogate) { + if (codePoint > 56319) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + continue; + } else if (i + 1 === length) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + continue; + } + leadSurrogate = codePoint; + continue; + } + if (codePoint < 56320) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + leadSurrogate = codePoint; + continue; + } + codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; + } else if (leadSurrogate) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + } + leadSurrogate = null; + if (codePoint < 128) { + if ((units -= 1) < 0) break; + bytes.push(codePoint); + } else if (codePoint < 2048) { + if ((units -= 2) < 0) break; + bytes.push( + codePoint >> 6 | 192, + codePoint & 63 | 128 + ); + } else if (codePoint < 65536) { + if ((units -= 3) < 0) break; + bytes.push( + codePoint >> 12 | 224, + codePoint >> 6 & 63 | 128, + codePoint & 63 | 128 + ); + } else if (codePoint < 1114112) { + if ((units -= 4) < 0) break; + bytes.push( + codePoint >> 18 | 240, + codePoint >> 12 & 63 | 128, + codePoint >> 6 & 63 | 128, + codePoint & 63 | 128 + ); + } else { + throw new Error("Invalid code point"); + } + } + return bytes; + } + function asciiToBytes(str) { + const byteArray = []; + for (let i = 0; i < str.length; ++i) { + byteArray.push(str.charCodeAt(i) & 255); + } + 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 base64.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; + } + 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) { + return obj !== obj; + } + var 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; + }(); + function defineBigIntMethod(fn) { + return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn; + } + function BufferBigIntNotDefined() { + throw new Error("BigInt not supported"); + } + } +}); +export default require_buffer(); +/*! Bundled license information: + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) +*/ +//# sourceMappingURL=buffer.js.map diff --git a/packages/ridb/node_modules/.vite/deps/buffer.js.map b/packages/ridb/node_modules/.vite/deps/buffer.js.map new file mode 100644 index 0000000..d5bf007 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/buffer.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/base64-js/index.js", "../../../../../node_modules/ieee754/index.js", "../../../../../node_modules/buffer/index.js"], + "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n"], + "mappings": "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", + "names": ["len", "i", "len2", "i", "byteLength"] +} diff --git a/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js b/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js new file mode 100644 index 0000000..1dc2b9c --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js @@ -0,0 +1,31 @@ +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 __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +export { + __commonJS, + __toESM +}; +//# sourceMappingURL=chunk-5WRI5ZAA.js.map diff --git a/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map b/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js b/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js new file mode 100644 index 0000000..da41aba --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js @@ -0,0 +1,1333 @@ +import { + require_ansi_styles +} from "./chunk-UJ726J2L.js"; +import { + __commonJS +} from "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/pretty-format/build/collections.js +var require_collections = __commonJS({ + "../../node_modules/pretty-format/build/collections.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.printIteratorEntries = printIteratorEntries; + exports.printIteratorValues = printIteratorValues; + exports.printListItems = printListItems; + exports.printObjectProperties = printObjectProperties; + var getKeysOfEnumerableProperties = (object, compareKeys) => { + const rawKeys = Object.keys(object); + const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys; + if (Object.getOwnPropertySymbols) { + Object.getOwnPropertySymbols(object).forEach((symbol) => { + if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) { + keys.push(symbol); + } + }); + } + return keys; + }; + function printIteratorEntries(iterator, config, indentation, depth, refs, printer, separator = ": ") { + let result = ""; + let width = 0; + let current = iterator.next(); + if (!current.done) { + result += config.spacingOuter; + const indentationNext = indentation + config.indent; + while (!current.done) { + result += indentationNext; + if (width++ === config.maxWidth) { + result += "…"; + break; + } + const name = printer( + current.value[0], + config, + indentationNext, + depth, + refs + ); + const value = printer( + current.value[1], + config, + indentationNext, + depth, + refs + ); + result += name + separator + value; + current = iterator.next(); + if (!current.done) { + result += `,${config.spacingInner}`; + } else if (!config.min) { + result += ","; + } + } + result += config.spacingOuter + indentation; + } + return result; + } + function printIteratorValues(iterator, config, indentation, depth, refs, printer) { + let result = ""; + let width = 0; + let current = iterator.next(); + if (!current.done) { + result += config.spacingOuter; + const indentationNext = indentation + config.indent; + while (!current.done) { + result += indentationNext; + if (width++ === config.maxWidth) { + result += "…"; + break; + } + result += printer(current.value, config, indentationNext, depth, refs); + current = iterator.next(); + if (!current.done) { + result += `,${config.spacingInner}`; + } else if (!config.min) { + result += ","; + } + } + result += config.spacingOuter + indentation; + } + return result; + } + function printListItems(list, config, indentation, depth, refs, printer) { + let result = ""; + if (list.length) { + result += config.spacingOuter; + const indentationNext = indentation + config.indent; + for (let i = 0; i < list.length; i++) { + result += indentationNext; + if (i === config.maxWidth) { + result += "…"; + break; + } + if (i in list) { + result += printer(list[i], config, indentationNext, depth, refs); + } + if (i < list.length - 1) { + result += `,${config.spacingInner}`; + } else if (!config.min) { + result += ","; + } + } + result += config.spacingOuter + indentation; + } + return result; + } + function printObjectProperties(val, config, indentation, depth, refs, printer) { + let result = ""; + const keys = getKeysOfEnumerableProperties(val, config.compareKeys); + if (keys.length) { + result += config.spacingOuter; + const indentationNext = indentation + config.indent; + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const name = printer(key, config, indentationNext, depth, refs); + const value = printer(val[key], config, indentationNext, depth, refs); + result += `${indentationNext + name}: ${value}`; + if (i < keys.length - 1) { + result += `,${config.spacingInner}`; + } else if (!config.min) { + result += ","; + } + } + result += config.spacingOuter + indentation; + } + return result; + } + } +}); + +// ../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js +var require_AsymmetricMatcher = __commonJS({ + "../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.test = exports.serialize = exports.default = void 0; + var _collections = require_collections(); + var Symbol2 = globalThis["jest-symbol-do-not-touch"] || globalThis.Symbol; + var asymmetricMatcher = typeof Symbol2 === "function" && Symbol2.for ? Symbol2.for("jest.asymmetricMatcher") : 1267621; + var SPACE = " "; + var serialize = (val, config, indentation, depth, refs, printer) => { + const stringedValue = val.toString(); + if (stringedValue === "ArrayContaining" || stringedValue === "ArrayNotContaining") { + if (++depth > config.maxDepth) { + return `[${stringedValue}]`; + } + return `${stringedValue + SPACE}[${(0, _collections.printListItems)( + val.sample, + config, + indentation, + depth, + refs, + printer + )}]`; + } + if (stringedValue === "ObjectContaining" || stringedValue === "ObjectNotContaining") { + if (++depth > config.maxDepth) { + return `[${stringedValue}]`; + } + return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)( + val.sample, + config, + indentation, + depth, + refs, + printer + )}}`; + } + if (stringedValue === "StringMatching" || stringedValue === "StringNotMatching") { + return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); + } + if (stringedValue === "StringContaining" || stringedValue === "StringNotContaining") { + return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); + } + if (typeof val.toAsymmetricMatcher !== "function") { + throw new Error( + `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()` + ); + } + return val.toAsymmetricMatcher(); + }; + exports.serialize = serialize; + var test = (val) => val && val.$$typeof === asymmetricMatcher; + exports.test = test; + var plugin = { + serialize, + test + }; + var _default = plugin; + exports.default = _default; + } +}); + +// ../../node_modules/pretty-format/build/plugins/DOMCollection.js +var require_DOMCollection = __commonJS({ + "../../node_modules/pretty-format/build/plugins/DOMCollection.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.test = exports.serialize = exports.default = void 0; + var _collections = require_collections(); + var SPACE = " "; + var OBJECT_NAMES = ["DOMStringMap", "NamedNodeMap"]; + var ARRAY_REGEXP = /^(HTML\w*Collection|NodeList)$/; + var testName = (name) => OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name); + var test = (val) => val && val.constructor && !!val.constructor.name && testName(val.constructor.name); + exports.test = test; + var isNamedNodeMap = (collection) => collection.constructor.name === "NamedNodeMap"; + var serialize = (collection, config, indentation, depth, refs, printer) => { + const name = collection.constructor.name; + if (++depth > config.maxDepth) { + return `[${name}]`; + } + return (config.min ? "" : name + SPACE) + (OBJECT_NAMES.indexOf(name) !== -1 ? `{${(0, _collections.printObjectProperties)( + isNamedNodeMap(collection) ? Array.from(collection).reduce((props, attribute) => { + props[attribute.name] = attribute.value; + return props; + }, {}) : { + ...collection + }, + config, + indentation, + depth, + refs, + printer + )}}` : `[${(0, _collections.printListItems)( + Array.from(collection), + config, + indentation, + depth, + refs, + printer + )}]`); + }; + exports.serialize = serialize; + var plugin = { + serialize, + test + }; + var _default = plugin; + exports.default = _default; + } +}); + +// ../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js +var require_escapeHTML = __commonJS({ + "../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = escapeHTML; + function escapeHTML(str) { + return str.replace(//g, ">"); + } + } +}); + +// ../../node_modules/pretty-format/build/plugins/lib/markup.js +var require_markup = __commonJS({ + "../../node_modules/pretty-format/build/plugins/lib/markup.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.printText = exports.printProps = exports.printElementAsLeaf = exports.printElement = exports.printComment = exports.printChildren = void 0; + var _escapeHTML = _interopRequireDefault(require_escapeHTML()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var printProps = (keys, props, config, indentation, depth, refs, printer) => { + const indentationNext = indentation + config.indent; + const colors = config.colors; + return keys.map((key) => { + const value = props[key]; + let printed = printer(value, config, indentationNext, depth, refs); + if (typeof value !== "string") { + if (printed.indexOf("\n") !== -1) { + printed = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation; + } + printed = `{${printed}}`; + } + return `${config.spacingInner + indentation + colors.prop.open + key + colors.prop.close}=${colors.value.open}${printed}${colors.value.close}`; + }).join(""); + }; + exports.printProps = printProps; + var printChildren = (children, config, indentation, depth, refs, printer) => children.map( + (child) => config.spacingOuter + indentation + (typeof child === "string" ? printText(child, config) : printer(child, config, indentation, depth, refs)) + ).join(""); + exports.printChildren = printChildren; + var printText = (text, config) => { + const contentColor = config.colors.content; + return contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close; + }; + exports.printText = printText; + var printComment = (comment, config) => { + const commentColor = config.colors.comment; + return `${commentColor.open}${commentColor.close}`; + }; + exports.printComment = printComment; + var printElement = (type, printedProps, printedChildren, config, indentation) => { + const tagColor = config.colors.tag; + return `${tagColor.open}<${type}${printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open}${printedChildren ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`; + }; + exports.printElement = printElement; + var printElementAsLeaf = (type, config) => { + const tagColor = config.colors.tag; + return `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`; + }; + exports.printElementAsLeaf = printElementAsLeaf; + } +}); + +// ../../node_modules/pretty-format/build/plugins/DOMElement.js +var require_DOMElement = __commonJS({ + "../../node_modules/pretty-format/build/plugins/DOMElement.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.test = exports.serialize = exports.default = void 0; + var _markup = require_markup(); + var ELEMENT_NODE = 1; + var TEXT_NODE = 3; + var COMMENT_NODE = 8; + var FRAGMENT_NODE = 11; + var ELEMENT_REGEXP = /^((HTML|SVG)\w*)?Element$/; + var testHasAttribute = (val) => { + try { + return typeof val.hasAttribute === "function" && val.hasAttribute("is"); + } catch { + return false; + } + }; + var testNode = (val) => { + const constructorName = val.constructor.name; + const { nodeType, tagName } = val; + const isCustomElement = typeof tagName === "string" && tagName.includes("-") || testHasAttribute(val); + return nodeType === ELEMENT_NODE && (ELEMENT_REGEXP.test(constructorName) || isCustomElement) || nodeType === TEXT_NODE && constructorName === "Text" || nodeType === COMMENT_NODE && constructorName === "Comment" || nodeType === FRAGMENT_NODE && constructorName === "DocumentFragment"; + }; + var test = (val) => { + var _a; + return ((_a = val == null ? void 0 : val.constructor) == null ? void 0 : _a.name) && testNode(val); + }; + exports.test = test; + function nodeIsText(node) { + return node.nodeType === TEXT_NODE; + } + function nodeIsComment(node) { + return node.nodeType === COMMENT_NODE; + } + function nodeIsFragment(node) { + return node.nodeType === FRAGMENT_NODE; + } + var serialize = (node, config, indentation, depth, refs, printer) => { + if (nodeIsText(node)) { + return (0, _markup.printText)(node.data, config); + } + if (nodeIsComment(node)) { + return (0, _markup.printComment)(node.data, config); + } + const type = nodeIsFragment(node) ? "DocumentFragment" : node.tagName.toLowerCase(); + if (++depth > config.maxDepth) { + return (0, _markup.printElementAsLeaf)(type, config); + } + return (0, _markup.printElement)( + type, + (0, _markup.printProps)( + nodeIsFragment(node) ? [] : Array.from(node.attributes, (attr) => attr.name).sort(), + nodeIsFragment(node) ? {} : Array.from(node.attributes).reduce((props, attribute) => { + props[attribute.name] = attribute.value; + return props; + }, {}), + config, + indentation + config.indent, + depth, + refs, + printer + ), + (0, _markup.printChildren)( + Array.prototype.slice.call(node.childNodes || node.children), + config, + indentation + config.indent, + depth, + refs, + printer + ), + config, + indentation + ); + }; + exports.serialize = serialize; + var plugin = { + serialize, + test + }; + var _default = plugin; + exports.default = _default; + } +}); + +// ../../node_modules/pretty-format/build/plugins/Immutable.js +var require_Immutable = __commonJS({ + "../../node_modules/pretty-format/build/plugins/Immutable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.test = exports.serialize = exports.default = void 0; + var _collections = require_collections(); + var IS_ITERABLE_SENTINEL = "@@__IMMUTABLE_ITERABLE__@@"; + var IS_LIST_SENTINEL = "@@__IMMUTABLE_LIST__@@"; + var IS_KEYED_SENTINEL = "@@__IMMUTABLE_KEYED__@@"; + var IS_MAP_SENTINEL = "@@__IMMUTABLE_MAP__@@"; + var IS_ORDERED_SENTINEL = "@@__IMMUTABLE_ORDERED__@@"; + var IS_RECORD_SENTINEL = "@@__IMMUTABLE_RECORD__@@"; + var IS_SEQ_SENTINEL = "@@__IMMUTABLE_SEQ__@@"; + var IS_SET_SENTINEL = "@@__IMMUTABLE_SET__@@"; + var IS_STACK_SENTINEL = "@@__IMMUTABLE_STACK__@@"; + var getImmutableName = (name) => `Immutable.${name}`; + var printAsLeaf = (name) => `[${name}]`; + var SPACE = " "; + var LAZY = "…"; + var printImmutableEntries = (val, config, indentation, depth, refs, printer, type) => ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}{${(0, _collections.printIteratorEntries)( + val.entries(), + config, + indentation, + depth, + refs, + printer + )}}`; + function getRecordEntries(val) { + let i = 0; + return { + next() { + if (i < val._keys.length) { + const key = val._keys[i++]; + return { + done: false, + value: [key, val.get(key)] + }; + } + return { + done: true, + value: void 0 + }; + } + }; + } + var printImmutableRecord = (val, config, indentation, depth, refs, printer) => { + const name = getImmutableName(val._name || "Record"); + return ++depth > config.maxDepth ? printAsLeaf(name) : `${name + SPACE}{${(0, _collections.printIteratorEntries)( + getRecordEntries(val), + config, + indentation, + depth, + refs, + printer + )}}`; + }; + var printImmutableSeq = (val, config, indentation, depth, refs, printer) => { + const name = getImmutableName("Seq"); + if (++depth > config.maxDepth) { + return printAsLeaf(name); + } + if (val[IS_KEYED_SENTINEL]) { + return `${name + SPACE}{${// from Immutable collection of entries or from ECMAScript object + val._iter || val._object ? (0, _collections.printIteratorEntries)( + val.entries(), + config, + indentation, + depth, + refs, + printer + ) : LAZY}}`; + } + return `${name + SPACE}[${val._iter || // from Immutable collection of values + val._array || // from ECMAScript array + val._collection || // from ECMAScript collection in immutable v4 + val._iterable ? (0, _collections.printIteratorValues)( + val.values(), + config, + indentation, + depth, + refs, + printer + ) : LAZY}]`; + }; + var printImmutableValues = (val, config, indentation, depth, refs, printer, type) => ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}[${(0, _collections.printIteratorValues)( + val.values(), + config, + indentation, + depth, + refs, + printer + )}]`; + var serialize = (val, config, indentation, depth, refs, printer) => { + if (val[IS_MAP_SENTINEL]) { + return printImmutableEntries( + val, + config, + indentation, + depth, + refs, + printer, + val[IS_ORDERED_SENTINEL] ? "OrderedMap" : "Map" + ); + } + if (val[IS_LIST_SENTINEL]) { + return printImmutableValues( + val, + config, + indentation, + depth, + refs, + printer, + "List" + ); + } + if (val[IS_SET_SENTINEL]) { + return printImmutableValues( + val, + config, + indentation, + depth, + refs, + printer, + val[IS_ORDERED_SENTINEL] ? "OrderedSet" : "Set" + ); + } + if (val[IS_STACK_SENTINEL]) { + return printImmutableValues( + val, + config, + indentation, + depth, + refs, + printer, + "Stack" + ); + } + if (val[IS_SEQ_SENTINEL]) { + return printImmutableSeq(val, config, indentation, depth, refs, printer); + } + return printImmutableRecord(val, config, indentation, depth, refs, printer); + }; + exports.serialize = serialize; + var test = (val) => val && (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true); + exports.test = test; + var plugin = { + serialize, + test + }; + var _default = plugin; + exports.default = _default; + } +}); + +// ../../node_modules/react-is/cjs/react-is.development.js +var require_react_is_development = __commonJS({ + "../../node_modules/react-is/cjs/react-is.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + var REACT_ELEMENT_TYPE = Symbol.for("react.element"); + var REACT_PORTAL_TYPE = Symbol.for("react.portal"); + var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); + var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); + var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); + var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); + var REACT_CONTEXT_TYPE = Symbol.for("react.context"); + var REACT_SERVER_CONTEXT_TYPE = Symbol.for("react.server_context"); + var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); + var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); + var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); + var REACT_MEMO_TYPE = Symbol.for("react.memo"); + var REACT_LAZY_TYPE = Symbol.for("react.lazy"); + var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); + var enableScopeAPI = false; + var enableCacheElement = false; + var enableTransitionTracing = false; + var enableLegacyHidden = false; + var enableDebugTracing = false; + var REACT_MODULE_REFERENCE; + { + REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); + } + function isValidElementType(type) { + if (typeof type === "string" || typeof type === "function") { + return true; + } + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { + return true; + } + if (typeof type === "object" && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + return true; + } + } + return false; + } + function typeOf(object) { + if (typeof object === "object" && object !== null) { + var $$typeof = object.$$typeof; + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + switch (type) { + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + case REACT_SUSPENSE_LIST_TYPE: + return type; + default: + var $$typeofType = type && type.$$typeof; + switch ($$typeofType) { + case REACT_SERVER_CONTEXT_TYPE: + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + default: + return $$typeof; + } + } + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + return void 0; + } + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var SuspenseList = REACT_SUSPENSE_LIST_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; + var hasWarnedAboutDeprecatedIsConcurrentMode = false; + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; + console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+."); + } + } + return false; + } + function isConcurrentMode(object) { + { + if (!hasWarnedAboutDeprecatedIsConcurrentMode) { + hasWarnedAboutDeprecatedIsConcurrentMode = true; + console["warn"]("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+."); + } + } + return false; + } + function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + function isSuspenseList(object) { + return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; + } + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.SuspenseList = SuspenseList; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + exports.isSuspenseList = isSuspenseList; + exports.isValidElementType = isValidElementType; + exports.typeOf = typeOf; + })(); + } + } +}); + +// ../../node_modules/react-is/index.js +var require_react_is = __commonJS({ + "../../node_modules/react-is/index.js"(exports, module) { + "use strict"; + if (false) { + module.exports = null; + } else { + module.exports = require_react_is_development(); + } + } +}); + +// ../../node_modules/pretty-format/build/plugins/ReactElement.js +var require_ReactElement = __commonJS({ + "../../node_modules/pretty-format/build/plugins/ReactElement.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.test = exports.serialize = exports.default = void 0; + var ReactIs = _interopRequireWildcard(require_react_is()); + var _markup = require_markup(); + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); + var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); + return (_getRequireWildcardCache = function(nodeInterop2) { + return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || typeof obj !== "object" && typeof obj !== "function") { + return { default: obj }; + } + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) { + return cache.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache) { + cache.set(obj, newObj); + } + return newObj; + } + var getChildren = (arg, children = []) => { + if (Array.isArray(arg)) { + arg.forEach((item) => { + getChildren(item, children); + }); + } else if (arg != null && arg !== false) { + children.push(arg); + } + return children; + }; + var getType = (element) => { + const type = element.type; + if (typeof type === "string") { + return type; + } + if (typeof type === "function") { + return type.displayName || type.name || "Unknown"; + } + if (ReactIs.isFragment(element)) { + return "React.Fragment"; + } + if (ReactIs.isSuspense(element)) { + return "React.Suspense"; + } + if (typeof type === "object" && type !== null) { + if (ReactIs.isContextProvider(element)) { + return "Context.Provider"; + } + if (ReactIs.isContextConsumer(element)) { + return "Context.Consumer"; + } + if (ReactIs.isForwardRef(element)) { + if (type.displayName) { + return type.displayName; + } + const functionName = type.render.displayName || type.render.name || ""; + return functionName !== "" ? `ForwardRef(${functionName})` : "ForwardRef"; + } + if (ReactIs.isMemo(element)) { + const functionName = type.displayName || type.type.displayName || type.type.name || ""; + return functionName !== "" ? `Memo(${functionName})` : "Memo"; + } + } + return "UNDEFINED"; + }; + var getPropKeys = (element) => { + const { props } = element; + return Object.keys(props).filter((key) => key !== "children" && props[key] !== void 0).sort(); + }; + var serialize = (element, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(getType(element), config) : (0, _markup.printElement)( + getType(element), + (0, _markup.printProps)( + getPropKeys(element), + element.props, + config, + indentation + config.indent, + depth, + refs, + printer + ), + (0, _markup.printChildren)( + getChildren(element.props.children), + config, + indentation + config.indent, + depth, + refs, + printer + ), + config, + indentation + ); + exports.serialize = serialize; + var test = (val) => val != null && ReactIs.isElement(val); + exports.test = test; + var plugin = { + serialize, + test + }; + var _default = plugin; + exports.default = _default; + } +}); + +// ../../node_modules/pretty-format/build/plugins/ReactTestComponent.js +var require_ReactTestComponent = __commonJS({ + "../../node_modules/pretty-format/build/plugins/ReactTestComponent.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.test = exports.serialize = exports.default = void 0; + var _markup = require_markup(); + var Symbol2 = globalThis["jest-symbol-do-not-touch"] || globalThis.Symbol; + var testSymbol = typeof Symbol2 === "function" && Symbol2.for ? Symbol2.for("react.test.json") : 245830487; + var getPropKeys = (object) => { + const { props } = object; + return props ? Object.keys(props).filter((key) => props[key] !== void 0).sort() : []; + }; + var serialize = (object, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(object.type, config) : (0, _markup.printElement)( + object.type, + object.props ? (0, _markup.printProps)( + getPropKeys(object), + object.props, + config, + indentation + config.indent, + depth, + refs, + printer + ) : "", + object.children ? (0, _markup.printChildren)( + object.children, + config, + indentation + config.indent, + depth, + refs, + printer + ) : "", + config, + indentation + ); + exports.serialize = serialize; + var test = (val) => val && val.$$typeof === testSymbol; + exports.test = test; + var plugin = { + serialize, + test + }; + var _default = plugin; + exports.default = _default; + } +}); + +// ../../node_modules/pretty-format/build/index.js +var require_build = __commonJS({ + "../../node_modules/pretty-format/build/index.js"(exports) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = exports.DEFAULT_OPTIONS = void 0; + exports.format = format; + exports.plugins = void 0; + var _ansiStyles = _interopRequireDefault(require_ansi_styles()); + var _collections = require_collections(); + var _AsymmetricMatcher = _interopRequireDefault( + require_AsymmetricMatcher() + ); + var _DOMCollection = _interopRequireDefault(require_DOMCollection()); + var _DOMElement = _interopRequireDefault(require_DOMElement()); + var _Immutable = _interopRequireDefault(require_Immutable()); + var _ReactElement = _interopRequireDefault(require_ReactElement()); + var _ReactTestComponent = _interopRequireDefault( + require_ReactTestComponent() + ); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var toString = Object.prototype.toString; + var toISOString = Date.prototype.toISOString; + var errorToString = Error.prototype.toString; + var regExpToString = RegExp.prototype.toString; + var getConstructorName = (val) => typeof val.constructor === "function" && val.constructor.name || "Object"; + var isWindow = (val) => typeof window !== "undefined" && val === window; + var SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; + var NEWLINE_REGEXP = /\n/gi; + var PrettyFormatPluginError = class extends Error { + constructor(message, stack) { + super(message); + this.stack = stack; + this.name = this.constructor.name; + } + }; + function isToStringedArrayType(toStringed) { + return toStringed === "[object Array]" || toStringed === "[object ArrayBuffer]" || toStringed === "[object DataView]" || toStringed === "[object Float32Array]" || toStringed === "[object Float64Array]" || toStringed === "[object Int8Array]" || toStringed === "[object Int16Array]" || toStringed === "[object Int32Array]" || toStringed === "[object Uint8Array]" || toStringed === "[object Uint8ClampedArray]" || toStringed === "[object Uint16Array]" || toStringed === "[object Uint32Array]"; + } + function printNumber(val) { + return Object.is(val, -0) ? "-0" : String(val); + } + function printBigInt(val) { + return String(`${val}n`); + } + function printFunction(val, printFunctionName) { + if (!printFunctionName) { + return "[Function]"; + } + return `[Function ${val.name || "anonymous"}]`; + } + function printSymbol(val) { + return String(val).replace(SYMBOL_REGEXP, "Symbol($1)"); + } + function printError(val) { + return `[${errorToString.call(val)}]`; + } + function printBasicValue(val, printFunctionName, escapeRegex, escapeString) { + if (val === true || val === false) { + return `${val}`; + } + if (val === void 0) { + return "undefined"; + } + if (val === null) { + return "null"; + } + const typeOf = typeof val; + if (typeOf === "number") { + return printNumber(val); + } + if (typeOf === "bigint") { + return printBigInt(val); + } + if (typeOf === "string") { + if (escapeString) { + return `"${val.replace(/"|\\/g, "\\$&")}"`; + } + return `"${val}"`; + } + if (typeOf === "function") { + return printFunction(val, printFunctionName); + } + if (typeOf === "symbol") { + return printSymbol(val); + } + const toStringed = toString.call(val); + if (toStringed === "[object WeakMap]") { + return "WeakMap {}"; + } + if (toStringed === "[object WeakSet]") { + return "WeakSet {}"; + } + if (toStringed === "[object Function]" || toStringed === "[object GeneratorFunction]") { + return printFunction(val, printFunctionName); + } + if (toStringed === "[object Symbol]") { + return printSymbol(val); + } + if (toStringed === "[object Date]") { + return isNaN(+val) ? "Date { NaN }" : toISOString.call(val); + } + if (toStringed === "[object Error]") { + return printError(val); + } + if (toStringed === "[object RegExp]") { + if (escapeRegex) { + return regExpToString.call(val).replace(/[\\^$*+?.()|[\]{}]/g, "\\$&"); + } + return regExpToString.call(val); + } + if (val instanceof Error) { + return printError(val); + } + return null; + } + function printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON) { + if (refs.indexOf(val) !== -1) { + return "[Circular]"; + } + refs = refs.slice(); + refs.push(val); + const hitMaxDepth = ++depth > config.maxDepth; + const min = config.min; + if (config.callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === "function" && !hasCalledToJSON) { + return printer(val.toJSON(), config, indentation, depth, refs, true); + } + const toStringed = toString.call(val); + if (toStringed === "[object Arguments]") { + return hitMaxDepth ? "[Arguments]" : `${min ? "" : "Arguments "}[${(0, _collections.printListItems)( + val, + config, + indentation, + depth, + refs, + printer + )}]`; + } + if (isToStringedArrayType(toStringed)) { + return hitMaxDepth ? `[${val.constructor.name}]` : `${min ? "" : !config.printBasicPrototype && val.constructor.name === "Array" ? "" : `${val.constructor.name} `}[${(0, _collections.printListItems)( + val, + config, + indentation, + depth, + refs, + printer + )}]`; + } + if (toStringed === "[object Map]") { + return hitMaxDepth ? "[Map]" : `Map {${(0, _collections.printIteratorEntries)( + val.entries(), + config, + indentation, + depth, + refs, + printer, + " => " + )}}`; + } + if (toStringed === "[object Set]") { + return hitMaxDepth ? "[Set]" : `Set {${(0, _collections.printIteratorValues)( + val.values(), + config, + indentation, + depth, + refs, + printer + )}}`; + } + return hitMaxDepth || isWindow(val) ? `[${getConstructorName(val)}]` : `${min ? "" : !config.printBasicPrototype && getConstructorName(val) === "Object" ? "" : `${getConstructorName(val)} `}{${(0, _collections.printObjectProperties)( + val, + config, + indentation, + depth, + refs, + printer + )}}`; + } + function isNewPlugin(plugin) { + return plugin.serialize != null; + } + function printPlugin(plugin, val, config, indentation, depth, refs) { + let printed; + try { + printed = isNewPlugin(plugin) ? plugin.serialize(val, config, indentation, depth, refs, printer) : plugin.print( + val, + (valChild) => printer(valChild, config, indentation, depth, refs), + (str) => { + const indentationNext = indentation + config.indent; + return indentationNext + str.replace(NEWLINE_REGEXP, ` +${indentationNext}`); + }, + { + edgeSpacing: config.spacingOuter, + min: config.min, + spacing: config.spacingInner + }, + config.colors + ); + } catch (error) { + throw new PrettyFormatPluginError(error.message, error.stack); + } + if (typeof printed !== "string") { + throw new Error( + `pretty-format: Plugin must return type "string" but instead returned "${typeof printed}".` + ); + } + return printed; + } + function findPlugin(plugins2, val) { + for (let p = 0; p < plugins2.length; p++) { + try { + if (plugins2[p].test(val)) { + return plugins2[p]; + } + } catch (error) { + throw new PrettyFormatPluginError(error.message, error.stack); + } + } + return null; + } + function printer(val, config, indentation, depth, refs, hasCalledToJSON) { + const plugin = findPlugin(config.plugins, val); + if (plugin !== null) { + return printPlugin(plugin, val, config, indentation, depth, refs); + } + const basicResult = printBasicValue( + val, + config.printFunctionName, + config.escapeRegex, + config.escapeString + ); + if (basicResult !== null) { + return basicResult; + } + return printComplexValue( + val, + config, + indentation, + depth, + refs, + hasCalledToJSON + ); + } + var DEFAULT_THEME = { + comment: "gray", + content: "reset", + prop: "yellow", + tag: "cyan", + value: "green" + }; + var DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME); + var toOptionsSubtype = (options) => options; + var DEFAULT_OPTIONS = toOptionsSubtype({ + callToJSON: true, + compareKeys: void 0, + escapeRegex: false, + escapeString: true, + highlight: false, + indent: 2, + maxDepth: Infinity, + maxWidth: Infinity, + min: false, + plugins: [], + printBasicPrototype: true, + printFunctionName: true, + theme: DEFAULT_THEME + }); + exports.DEFAULT_OPTIONS = DEFAULT_OPTIONS; + function validateOptions(options) { + Object.keys(options).forEach((key) => { + if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) { + throw new Error(`pretty-format: Unknown option "${key}".`); + } + }); + if (options.min && options.indent !== void 0 && options.indent !== 0) { + throw new Error( + 'pretty-format: Options "min" and "indent" cannot be used together.' + ); + } + if (options.theme !== void 0) { + if (options.theme === null) { + throw new Error('pretty-format: Option "theme" must not be null.'); + } + if (typeof options.theme !== "object") { + throw new Error( + `pretty-format: Option "theme" must be of type "object" but instead received "${typeof options.theme}".` + ); + } + } + } + var getColorsHighlight = (options) => DEFAULT_THEME_KEYS.reduce((colors, key) => { + const value = options.theme && options.theme[key] !== void 0 ? options.theme[key] : DEFAULT_THEME[key]; + const color = value && _ansiStyles.default[value]; + if (color && typeof color.close === "string" && typeof color.open === "string") { + colors[key] = color; + } else { + throw new Error( + `pretty-format: Option "theme" has a key "${key}" whose value "${value}" is undefined in ansi-styles.` + ); + } + return colors; + }, /* @__PURE__ */ Object.create(null)); + var getColorsEmpty = () => DEFAULT_THEME_KEYS.reduce((colors, key) => { + colors[key] = { + close: "", + open: "" + }; + return colors; + }, /* @__PURE__ */ Object.create(null)); + var getPrintFunctionName = (options) => (options == null ? void 0 : options.printFunctionName) ?? DEFAULT_OPTIONS.printFunctionName; + var getEscapeRegex = (options) => (options == null ? void 0 : options.escapeRegex) ?? DEFAULT_OPTIONS.escapeRegex; + var getEscapeString = (options) => (options == null ? void 0 : options.escapeString) ?? DEFAULT_OPTIONS.escapeString; + var getConfig = (options) => ({ + callToJSON: (options == null ? void 0 : options.callToJSON) ?? DEFAULT_OPTIONS.callToJSON, + colors: (options == null ? void 0 : options.highlight) ? getColorsHighlight(options) : getColorsEmpty(), + compareKeys: typeof (options == null ? void 0 : options.compareKeys) === "function" || (options == null ? void 0 : options.compareKeys) === null ? options.compareKeys : DEFAULT_OPTIONS.compareKeys, + escapeRegex: getEscapeRegex(options), + escapeString: getEscapeString(options), + indent: (options == null ? void 0 : options.min) ? "" : createIndent((options == null ? void 0 : options.indent) ?? DEFAULT_OPTIONS.indent), + maxDepth: (options == null ? void 0 : options.maxDepth) ?? DEFAULT_OPTIONS.maxDepth, + maxWidth: (options == null ? void 0 : options.maxWidth) ?? DEFAULT_OPTIONS.maxWidth, + min: (options == null ? void 0 : options.min) ?? DEFAULT_OPTIONS.min, + plugins: (options == null ? void 0 : options.plugins) ?? DEFAULT_OPTIONS.plugins, + printBasicPrototype: (options == null ? void 0 : options.printBasicPrototype) ?? true, + printFunctionName: getPrintFunctionName(options), + spacingInner: (options == null ? void 0 : options.min) ? " " : "\n", + spacingOuter: (options == null ? void 0 : options.min) ? "" : "\n" + }); + function createIndent(indent) { + return new Array(indent + 1).join(" "); + } + function format(val, options) { + if (options) { + validateOptions(options); + if (options.plugins) { + const plugin = findPlugin(options.plugins, val); + if (plugin !== null) { + return printPlugin(plugin, val, getConfig(options), "", 0, []); + } + } + } + const basicResult = printBasicValue( + val, + getPrintFunctionName(options), + getEscapeRegex(options), + getEscapeString(options) + ); + if (basicResult !== null) { + return basicResult; + } + return printComplexValue(val, getConfig(options), "", 0, []); + } + var plugins = { + AsymmetricMatcher: _AsymmetricMatcher.default, + DOMCollection: _DOMCollection.default, + DOMElement: _DOMElement.default, + Immutable: _Immutable.default, + ReactElement: _ReactElement.default, + ReactTestComponent: _ReactTestComponent.default + }; + exports.plugins = plugins; + var _default = format; + exports.default = _default; + } +}); + +export { + require_build +}; +/*! Bundled license information: + +react-is/cjs/react-is.development.js: + (** + * @license React + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) +*/ +//# sourceMappingURL=chunk-UCU27OGC.js.map diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map b/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map new file mode 100644 index 0000000..e98115c --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/pretty-format/build/collections.js", "../../../../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js", "../../../../../node_modules/pretty-format/build/plugins/DOMCollection.js", "../../../../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js", "../../../../../node_modules/pretty-format/build/plugins/lib/markup.js", "../../../../../node_modules/pretty-format/build/plugins/DOMElement.js", "../../../../../node_modules/pretty-format/build/plugins/Immutable.js", "../../../../../node_modules/react-is/cjs/react-is.development.js", "../../../../../node_modules/react-is/index.js", "../../../../../node_modules/pretty-format/build/plugins/ReactElement.js", "../../../../../node_modules/pretty-format/build/plugins/ReactTestComponent.js", "../../../../../node_modules/pretty-format/build/index.js"], + "sourcesContent": ["'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '…';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '…';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '…';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes, attr => attr.name).sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '…'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n"], + "mappings": ";;;;;;;;AAAA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,uBAAuB;AAC/B,YAAQ,sBAAsB;AAC9B,YAAQ,iBAAiB;AACzB,YAAQ,wBAAwB;AAShC,QAAM,gCAAgC,CAAC,QAAQ,gBAAgB;AAC7D,YAAM,UAAU,OAAO,KAAK,MAAM;AAClC,YAAM,OAAO,gBAAgB,OAAO,QAAQ,KAAK,WAAW,IAAI;AAChE,UAAI,OAAO,uBAAuB;AAChC,eAAO,sBAAsB,MAAM,EAAE,QAAQ,YAAU;AACrD,cAAI,OAAO,yBAAyB,QAAQ,MAAM,EAAE,YAAY;AAC9D,iBAAK,KAAK,MAAM;AAAA,UAClB;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAOA,aAAS,qBACP,UACA,QACA,aACA,OACA,MACA,SAIA,YAAY,MACZ;AACA,UAAI,SAAS;AACb,UAAI,QAAQ;AACZ,UAAI,UAAU,SAAS,KAAK;AAC5B,UAAI,CAAC,QAAQ,MAAM;AACjB,kBAAU,OAAO;AACjB,cAAM,kBAAkB,cAAc,OAAO;AAC7C,eAAO,CAAC,QAAQ,MAAM;AACpB,oBAAU;AACV,cAAI,YAAY,OAAO,UAAU;AAC/B,sBAAU;AACV;AAAA,UACF;AACA,gBAAM,OAAO;AAAA,YACX,QAAQ,MAAM,CAAC;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,gBAAM,QAAQ;AAAA,YACZ,QAAQ,MAAM,CAAC;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,oBAAU,OAAO,YAAY;AAC7B,oBAAU,SAAS,KAAK;AACxB,cAAI,CAAC,QAAQ,MAAM;AACjB,sBAAU,IAAI,OAAO,YAAY;AAAA,UACnC,WAAW,CAAC,OAAO,KAAK;AACtB,sBAAU;AAAA,UACZ;AAAA,QACF;AACA,kBAAU,OAAO,eAAe;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAOA,aAAS,oBACP,UACA,QACA,aACA,OACA,MACA,SACA;AACA,UAAI,SAAS;AACb,UAAI,QAAQ;AACZ,UAAI,UAAU,SAAS,KAAK;AAC5B,UAAI,CAAC,QAAQ,MAAM;AACjB,kBAAU,OAAO;AACjB,cAAM,kBAAkB,cAAc,OAAO;AAC7C,eAAO,CAAC,QAAQ,MAAM;AACpB,oBAAU;AACV,cAAI,YAAY,OAAO,UAAU;AAC/B,sBAAU;AACV;AAAA,UACF;AACA,oBAAU,QAAQ,QAAQ,OAAO,QAAQ,iBAAiB,OAAO,IAAI;AACrE,oBAAU,SAAS,KAAK;AACxB,cAAI,CAAC,QAAQ,MAAM;AACjB,sBAAU,IAAI,OAAO,YAAY;AAAA,UACnC,WAAW,CAAC,OAAO,KAAK;AACtB,sBAAU;AAAA,UACZ;AAAA,QACF;AACA,kBAAU,OAAO,eAAe;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAOA,aAAS,eAAe,MAAM,QAAQ,aAAa,OAAO,MAAM,SAAS;AACvE,UAAI,SAAS;AACb,UAAI,KAAK,QAAQ;AACf,kBAAU,OAAO;AACjB,cAAM,kBAAkB,cAAc,OAAO;AAC7C,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,oBAAU;AACV,cAAI,MAAM,OAAO,UAAU;AACzB,sBAAU;AACV;AAAA,UACF;AACA,cAAI,KAAK,MAAM;AACb,sBAAU,QAAQ,KAAK,CAAC,GAAG,QAAQ,iBAAiB,OAAO,IAAI;AAAA,UACjE;AACA,cAAI,IAAI,KAAK,SAAS,GAAG;AACvB,sBAAU,IAAI,OAAO,YAAY;AAAA,UACnC,WAAW,CAAC,OAAO,KAAK;AACtB,sBAAU;AAAA,UACZ;AAAA,QACF;AACA,kBAAU,OAAO,eAAe;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAOA,aAAS,sBAAsB,KAAK,QAAQ,aAAa,OAAO,MAAM,SAAS;AAC7E,UAAI,SAAS;AACb,YAAM,OAAO,8BAA8B,KAAK,OAAO,WAAW;AAClE,UAAI,KAAK,QAAQ;AACf,kBAAU,OAAO;AACjB,cAAM,kBAAkB,cAAc,OAAO;AAC7C,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,gBAAM,MAAM,KAAK,CAAC;AAClB,gBAAM,OAAO,QAAQ,KAAK,QAAQ,iBAAiB,OAAO,IAAI;AAC9D,gBAAM,QAAQ,QAAQ,IAAI,GAAG,GAAG,QAAQ,iBAAiB,OAAO,IAAI;AACpE,oBAAU,GAAG,kBAAkB,IAAI,KAAK,KAAK;AAC7C,cAAI,IAAI,KAAK,SAAS,GAAG;AACvB,sBAAU,IAAI,OAAO,YAAY;AAAA,UACnC,WAAW,CAAC,OAAO,KAAK;AACtB,sBAAU;AAAA,UACZ;AAAA,QACF;AACA,kBAAU,OAAO,eAAe;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACnLA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,OAAO,QAAQ,YAAY,QAAQ,UAAU;AACrD,QAAI,eAAe;AACnB,QAAIA,UAAS,WAAW,0BAA0B,KAAK,WAAW;AAOlE,QAAM,oBACJ,OAAOA,YAAW,cAAcA,QAAO,MACnCA,QAAO,IAAI,wBAAwB,IACnC;AACN,QAAM,QAAQ;AACd,QAAM,YAAY,CAAC,KAAK,QAAQ,aAAa,OAAO,MAAM,YAAY;AACpE,YAAM,gBAAgB,IAAI,SAAS;AACnC,UACE,kBAAkB,qBAClB,kBAAkB,sBAClB;AACA,YAAI,EAAE,QAAQ,OAAO,UAAU;AAC7B,iBAAO,IAAI,aAAa;AAAA,QAC1B;AACA,eAAO,GAAG,gBAAgB,KAAK,KAAK,GAAG,aAAa;AAAA,UAClD,IAAI;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AACA,UACE,kBAAkB,sBAClB,kBAAkB,uBAClB;AACA,YAAI,EAAE,QAAQ,OAAO,UAAU;AAC7B,iBAAO,IAAI,aAAa;AAAA,QAC1B;AACA,eAAO,GAAG,gBAAgB,KAAK,KAAK,GAAG,aAAa;AAAA,UAClD,IAAI;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AACA,UACE,kBAAkB,oBAClB,kBAAkB,qBAClB;AACA,eACE,gBACA,QACA,QAAQ,IAAI,QAAQ,QAAQ,aAAa,OAAO,IAAI;AAAA,MAExD;AACA,UACE,kBAAkB,sBAClB,kBAAkB,uBAClB;AACA,eACE,gBACA,QACA,QAAQ,IAAI,QAAQ,QAAQ,aAAa,OAAO,IAAI;AAAA,MAExD;AACA,UAAI,OAAO,IAAI,wBAAwB,YAAY;AACjD,cAAM,IAAI;AAAA,UACR,sBAAsB,IAAI,YAAY,IAAI;AAAA,QAC5C;AAAA,MACF;AACA,aAAO,IAAI,oBAAoB;AAAA,IACjC;AACA,YAAQ,YAAY;AACpB,QAAM,OAAO,SAAO,OAAO,IAAI,aAAa;AAC5C,YAAQ,OAAO;AACf,QAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,IACF;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACxFlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,OAAO,QAAQ,YAAY,QAAQ,UAAU;AACrD,QAAI,eAAe;AAQnB,QAAM,QAAQ;AACd,QAAM,eAAe,CAAC,gBAAgB,cAAc;AACpD,QAAM,eAAe;AACrB,QAAM,WAAW,UACf,aAAa,QAAQ,IAAI,MAAM,MAAM,aAAa,KAAK,IAAI;AAC7D,QAAM,OAAO,SACX,OACA,IAAI,eACJ,CAAC,CAAC,IAAI,YAAY,QAClB,SAAS,IAAI,YAAY,IAAI;AAC/B,YAAQ,OAAO;AACf,QAAM,iBAAiB,gBACrB,WAAW,YAAY,SAAS;AAClC,QAAM,YAAY,CAAC,YAAY,QAAQ,aAAa,OAAO,MAAM,YAAY;AAC3E,YAAM,OAAO,WAAW,YAAY;AACpC,UAAI,EAAE,QAAQ,OAAO,UAAU;AAC7B,eAAO,IAAI,IAAI;AAAA,MACjB;AACA,cACG,OAAO,MAAM,KAAK,OAAO,UACzB,aAAa,QAAQ,IAAI,MAAM,KAC5B,KAAK,GAAG,aAAa;AAAA,QACnB,eAAe,UAAU,IACrB,MAAM,KAAK,UAAU,EAAE,OAAO,CAAC,OAAO,cAAc;AAClD,gBAAM,UAAU,IAAI,IAAI,UAAU;AAClC,iBAAO;AAAA,QACT,GAAG,CAAC,CAAC,IACL;AAAA,UACE,GAAG;AAAA,QACL;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,MACD,KAAK,GAAG,aAAa;AAAA,QACnB,MAAM,KAAK,UAAU;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IAET;AACA,YAAQ,YAAY;AACpB,QAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,IACF;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AClElB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAQlB,aAAS,WAAW,KAAK;AACvB,aAAO,IAAI,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAAA,IACvD;AAAA;AAAA;;;ACfA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,YACN,QAAQ,aACR,QAAQ,qBACR,QAAQ,eACR,QAAQ,eACR,QAAQ,gBACN;AACJ,QAAI,cAAc,uBAAuB,oBAAuB;AAChE,aAAS,uBAAuB,KAAK;AACnC,aAAO,OAAO,IAAI,aAAa,MAAM,EAAC,SAAS,IAAG;AAAA,IACpD;AASA,QAAM,aAAa,CAAC,MAAM,OAAO,QAAQ,aAAa,OAAO,MAAM,YAAY;AAC7E,YAAM,kBAAkB,cAAc,OAAO;AAC7C,YAAM,SAAS,OAAO;AACtB,aAAO,KACJ,IAAI,SAAO;AACV,cAAM,QAAQ,MAAM,GAAG;AACvB,YAAI,UAAU,QAAQ,OAAO,QAAQ,iBAAiB,OAAO,IAAI;AACjE,YAAI,OAAO,UAAU,UAAU;AAC7B,cAAI,QAAQ,QAAQ,IAAI,MAAM,IAAI;AAChC,sBACE,OAAO,eACP,kBACA,UACA,OAAO,eACP;AAAA,UACJ;AACA,oBAAU,IAAI,OAAO;AAAA,QACvB;AACA,eAAO,GACL,OAAO,eACP,cACA,OAAO,KAAK,OACZ,MACA,OAAO,KAAK,KACd,IAAI,OAAO,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK;AAAA,MACtD,CAAC,EACA,KAAK,EAAE;AAAA,IACZ;AAGA,YAAQ,aAAa;AACrB,QAAM,gBAAgB,CAAC,UAAU,QAAQ,aAAa,OAAO,MAAM,YACjE,SACG;AAAA,MACC,WACE,OAAO,eACP,eACC,OAAO,UAAU,WACd,UAAU,OAAO,MAAM,IACvB,QAAQ,OAAO,QAAQ,aAAa,OAAO,IAAI;AAAA,IACvD,EACC,KAAK,EAAE;AACZ,YAAQ,gBAAgB;AACxB,QAAM,YAAY,CAAC,MAAM,WAAW;AAClC,YAAM,eAAe,OAAO,OAAO;AACnC,aACE,aAAa,QAAQ,GAAG,YAAY,SAAS,IAAI,IAAI,aAAa;AAAA,IAEtE;AACA,YAAQ,YAAY;AACpB,QAAM,eAAe,CAAC,SAAS,WAAW;AACxC,YAAM,eAAe,OAAO,OAAO;AACnC,aAAO,GAAG,aAAa,IAAI,QAAQ,GAAG,YAAY,SAAS,OAAO,CAAC,MACjE,aAAa,KACf;AAAA,IACF;AAMA,YAAQ,eAAe;AACvB,QAAM,eAAe,CACnB,MACA,cACA,iBACA,QACA,gBACG;AACH,YAAM,WAAW,OAAO,OAAO;AAC/B,aAAO,GAAG,SAAS,IAAI,IAAI,IAAI,GAC7B,gBACA,SAAS,QACP,eACA,OAAO,eACP,cACA,SAAS,IACb,GACE,kBACI,IAAI,SAAS,KAAK,GAAG,eAAe,GAAG,OAAO,YAAY,GAAG,WAAW,GAAG,SAAS,IAAI,KAAK,IAAI,KACjG,GAAG,gBAAgB,CAAC,OAAO,MAAM,KAAK,GAAG,GAC/C,IAAI,SAAS,KAAK;AAAA,IACpB;AACA,YAAQ,eAAe;AACvB,QAAM,qBAAqB,CAAC,MAAM,WAAW;AAC3C,YAAM,WAAW,OAAO,OAAO;AAC/B,aAAO,GAAG,SAAS,IAAI,IAAI,IAAI,GAAG,SAAS,KAAK,KAAK,SAAS,IAAI,MAAM,SAAS,KAAK;AAAA,IACxF;AACA,YAAQ,qBAAqB;AAAA;AAAA;;;AChH7B;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,OAAO,QAAQ,YAAY,QAAQ,UAAU;AACrD,QAAI,UAAU;AAQd,QAAM,eAAe;AACrB,QAAM,YAAY;AAClB,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;AACvB,QAAM,mBAAmB,SAAO;AAC9B,UAAI;AACF,eAAO,OAAO,IAAI,iBAAiB,cAAc,IAAI,aAAa,IAAI;AAAA,MACxE,QAAQ;AACN,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAM,WAAW,SAAO;AACtB,YAAM,kBAAkB,IAAI,YAAY;AACxC,YAAM,EAAC,UAAU,QAAO,IAAI;AAC5B,YAAM,kBACH,OAAO,YAAY,YAAY,QAAQ,SAAS,GAAG,KACpD,iBAAiB,GAAG;AACtB,aACG,aAAa,iBACX,eAAe,KAAK,eAAe,KAAK,oBAC1C,aAAa,aAAa,oBAAoB,UAC9C,aAAa,gBAAgB,oBAAoB,aACjD,aAAa,iBAAiB,oBAAoB;AAAA,IAEvD;AACA,QAAM,OAAO,SAAI;AAxCjB;AAwCoB,+CAAK,gBAAL,mBAAkB,SAAQ,SAAS,GAAG;AAAA;AAC1D,YAAQ,OAAO;AACf,aAAS,WAAW,MAAM;AACxB,aAAO,KAAK,aAAa;AAAA,IAC3B;AACA,aAAS,cAAc,MAAM;AAC3B,aAAO,KAAK,aAAa;AAAA,IAC3B;AACA,aAAS,eAAe,MAAM;AAC5B,aAAO,KAAK,aAAa;AAAA,IAC3B;AACA,QAAM,YAAY,CAAC,MAAM,QAAQ,aAAa,OAAO,MAAM,YAAY;AACrE,UAAI,WAAW,IAAI,GAAG;AACpB,gBAAQ,GAAG,QAAQ,WAAW,KAAK,MAAM,MAAM;AAAA,MACjD;AACA,UAAI,cAAc,IAAI,GAAG;AACvB,gBAAQ,GAAG,QAAQ,cAAc,KAAK,MAAM,MAAM;AAAA,MACpD;AACA,YAAM,OAAO,eAAe,IAAI,IAC5B,qBACA,KAAK,QAAQ,YAAY;AAC7B,UAAI,EAAE,QAAQ,OAAO,UAAU;AAC7B,gBAAQ,GAAG,QAAQ,oBAAoB,MAAM,MAAM;AAAA,MACrD;AACA,cAAQ,GAAG,QAAQ;AAAA,QACjB;AAAA,SACC,GAAG,QAAQ;AAAA,UACV,eAAe,IAAI,IACf,CAAC,IACD,MAAM,KAAK,KAAK,YAAY,UAAQ,KAAK,IAAI,EAAE,KAAK;AAAA,UACxD,eAAe,IAAI,IACf,CAAC,IACD,MAAM,KAAK,KAAK,UAAU,EAAE,OAAO,CAAC,OAAO,cAAc;AACvD,kBAAM,UAAU,IAAI,IAAI,UAAU;AAClC,mBAAO;AAAA,UACT,GAAG,CAAC,CAAC;AAAA,UACT;AAAA,UACA,cAAc,OAAO;AAAA,UACrB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,SACC,GAAG,QAAQ;AAAA,UACV,MAAM,UAAU,MAAM,KAAK,KAAK,cAAc,KAAK,QAAQ;AAAA,UAC3D;AAAA,UACA,cAAc,OAAO;AAAA,UACrB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,YAAQ,YAAY;AACpB,QAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,IACF;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACpGlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,OAAO,QAAQ,YAAY,QAAQ,UAAU;AACrD,QAAI,eAAe;AASnB,QAAM,uBAAuB;AAC7B,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,kBAAkB;AACxB,QAAM,sBAAsB;AAC5B,QAAM,qBAAqB;AAC3B,QAAM,kBAAkB;AACxB,QAAM,kBAAkB;AACxB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB,UAAQ,aAAa,IAAI;AAClD,QAAM,cAAc,UAAQ,IAAI,IAAI;AACpC,QAAM,QAAQ;AACd,QAAM,OAAO;AAEb,QAAM,wBAAwB,CAC5B,KACA,QACA,aACA,OACA,MACA,SACA,SAEA,EAAE,QAAQ,OAAO,WACb,YAAY,iBAAiB,IAAI,CAAC,IAClC,GAAG,iBAAiB,IAAI,IAAI,KAAK,KAAK,GACtC,aAAa;AAAA,MACX,IAAI,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAIP,aAAS,iBAAiB,KAAK;AAC7B,UAAI,IAAI;AACR,aAAO;AAAA,QACL,OAAO;AACL,cAAI,IAAI,IAAI,MAAM,QAAQ;AACxB,kBAAM,MAAM,IAAI,MAAM,GAAG;AACzB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC;AAAA,YAC3B;AAAA,UACF;AACA,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAM,uBAAuB,CAC3B,KACA,QACA,aACA,OACA,MACA,YACG;AAGH,YAAM,OAAO,iBAAiB,IAAI,SAAS,QAAQ;AACnD,aAAO,EAAE,QAAQ,OAAO,WACpB,YAAY,IAAI,IAChB,GAAG,OAAO,KAAK,KAAK,GAAG,aAAa;AAAA,QAClC,iBAAiB,GAAG;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACP;AACA,QAAM,oBAAoB,CAAC,KAAK,QAAQ,aAAa,OAAO,MAAM,YAAY;AAC5E,YAAM,OAAO,iBAAiB,KAAK;AACnC,UAAI,EAAE,QAAQ,OAAO,UAAU;AAC7B,eAAO,YAAY,IAAI;AAAA,MACzB;AACA,UAAI,IAAI,iBAAiB,GAAG;AAC1B,eAAO,GAAG,OAAO,KAAK;AAAA,QAEpB,IAAI,SAAS,IAAI,WACZ,GAAG,aAAa;AAAA,UACf,IAAI,QAAQ;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,IACA,IACN;AAAA,MACF;AACA,aAAO,GAAG,OAAO,KAAK,IACpB,IAAI;AAAA,MAEJ,IAAI;AAAA,MAEJ,IAAI;AAAA,MAEJ,IAAI,aACC,GAAG,aAAa;AAAA,QACf,IAAI,OAAO;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IACA,IACN;AAAA,IACF;AACA,QAAM,uBAAuB,CAC3B,KACA,QACA,aACA,OACA,MACA,SACA,SAEA,EAAE,QAAQ,OAAO,WACb,YAAY,iBAAiB,IAAI,CAAC,IAClC,GAAG,iBAAiB,IAAI,IAAI,KAAK,KAAK,GACtC,aAAa;AAAA,MACX,IAAI,OAAO;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACP,QAAM,YAAY,CAAC,KAAK,QAAQ,aAAa,OAAO,MAAM,YAAY;AACpE,UAAI,IAAI,eAAe,GAAG;AACxB,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,IAAI,mBAAmB,IAAI,eAAe;AAAA,QAC5C;AAAA,MACF;AACA,UAAI,IAAI,gBAAgB,GAAG;AACzB,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,IAAI,eAAe,GAAG;AACxB,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,IAAI,mBAAmB,IAAI,eAAe;AAAA,QAC5C;AAAA,MACF;AACA,UAAI,IAAI,iBAAiB,GAAG;AAC1B,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,IAAI,eAAe,GAAG;AACxB,eAAO,kBAAkB,KAAK,QAAQ,aAAa,OAAO,MAAM,OAAO;AAAA,MACzE;AAGA,aAAO,qBAAqB,KAAK,QAAQ,aAAa,OAAO,MAAM,OAAO;AAAA,IAC5E;AAIA,YAAQ,YAAY;AACpB,QAAM,OAAO,SACX,QACC,IAAI,oBAAoB,MAAM,QAAQ,IAAI,kBAAkB,MAAM;AACrE,YAAQ,OAAO;AACf,QAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,IACF;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACxNlB;AAAA;AAAA;AAYA,QAAI,MAAuC;AACzC,OAAC,WAAW;AACd;AAMA,YAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,YAAI,oBAAoB,OAAO,IAAI,cAAc;AACjD,YAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,YAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,YAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,YAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,YAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,YAAI,4BAA4B,OAAO,IAAI,sBAAsB;AACjE,YAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,YAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,YAAI,2BAA2B,OAAO,IAAI,qBAAqB;AAC/D,YAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,YAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,YAAI,uBAAuB,OAAO,IAAI,iBAAiB;AAIvD,YAAI,iBAAiB;AACrB,YAAI,qBAAqB;AACzB,YAAI,0BAA0B;AAE9B,YAAI,qBAAqB;AAIzB,YAAI,qBAAqB;AAEzB,YAAI;AAEJ;AACE,mCAAyB,OAAO,IAAI,wBAAwB;AAAA,QAC9D;AAEA,iBAAS,mBAAmB,MAAM;AAChC,cAAI,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;AAC1D,mBAAO;AAAA,UACT;AAGA,cAAI,SAAS,uBAAuB,SAAS,uBAAuB,sBAAuB,SAAS,0BAA0B,SAAS,uBAAuB,SAAS,4BAA4B,sBAAuB,SAAS,wBAAwB,kBAAmB,sBAAuB,yBAA0B;AAC7T,mBAAO;AAAA,UACT;AAEA,cAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,gBAAI,KAAK,aAAa,mBAAmB,KAAK,aAAa,mBAAmB,KAAK,aAAa,uBAAuB,KAAK,aAAa,sBAAsB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA,YAIjL,KAAK,aAAa,0BAA0B,KAAK,gBAAgB,QAAW;AAC1E,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAEA,iBAAS,OAAO,QAAQ;AACtB,cAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,gBAAI,WAAW,OAAO;AAEtB,oBAAQ,UAAU;AAAA,cAChB,KAAK;AACH,oBAAI,OAAO,OAAO;AAElB,wBAAQ,MAAM;AAAA,kBACZ,KAAK;AAAA,kBACL,KAAK;AAAA,kBACL,KAAK;AAAA,kBACL,KAAK;AAAA,kBACL,KAAK;AACH,2BAAO;AAAA,kBAET;AACE,wBAAI,eAAe,QAAQ,KAAK;AAEhC,4BAAQ,cAAc;AAAA,sBACpB,KAAK;AAAA,sBACL,KAAK;AAAA,sBACL,KAAK;AAAA,sBACL,KAAK;AAAA,sBACL,KAAK;AAAA,sBACL,KAAK;AACH,+BAAO;AAAA,sBAET;AACE,+BAAO;AAAA,oBACX;AAAA,gBAEJ;AAAA,cAEF,KAAK;AACH,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AACA,YAAI,kBAAkB;AACtB,YAAI,kBAAkB;AACtB,YAAI,UAAU;AACd,YAAI,aAAa;AACjB,YAAI,WAAW;AACf,YAAI,OAAO;AACX,YAAI,OAAO;AACX,YAAI,SAAS;AACb,YAAI,WAAW;AACf,YAAI,aAAa;AACjB,YAAI,WAAW;AACf,YAAI,eAAe;AACnB,YAAI,sCAAsC;AAC1C,YAAI,2CAA2C;AAE/C,iBAAS,YAAY,QAAQ;AAC3B;AACE,gBAAI,CAAC,qCAAqC;AACxC,oDAAsC;AAEtC,sBAAQ,MAAM,EAAE,wFAA6F;AAAA,YAC/G;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AACA,iBAAS,iBAAiB,QAAQ;AAChC;AACE,gBAAI,CAAC,0CAA0C;AAC7C,yDAA2C;AAE3C,sBAAQ,MAAM,EAAE,6FAAkG;AAAA,YACpH;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AACA,iBAAS,kBAAkB,QAAQ;AACjC,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,kBAAkB,QAAQ;AACjC,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,UAAU,QAAQ;AACzB,iBAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,aAAa;AAAA,QAC9E;AACA,iBAAS,aAAa,QAAQ;AAC5B,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,WAAW,QAAQ;AAC1B,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,OAAO,QAAQ;AACtB,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,OAAO,QAAQ;AACtB,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,SAAS,QAAQ;AACxB,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,WAAW,QAAQ;AAC1B,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,aAAa,QAAQ;AAC5B,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,WAAW,QAAQ;AAC1B,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AACA,iBAAS,eAAe,QAAQ;AAC9B,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AAEA,gBAAQ,kBAAkB;AAC1B,gBAAQ,kBAAkB;AAC1B,gBAAQ,UAAU;AAClB,gBAAQ,aAAa;AACrB,gBAAQ,WAAW;AACnB,gBAAQ,OAAO;AACf,gBAAQ,OAAO;AACf,gBAAQ,SAAS;AACjB,gBAAQ,WAAW;AACnB,gBAAQ,aAAa;AACrB,gBAAQ,WAAW;AACnB,gBAAQ,eAAe;AACvB,gBAAQ,cAAc;AACtB,gBAAQ,mBAAmB;AAC3B,gBAAQ,oBAAoB;AAC5B,gBAAQ,oBAAoB;AAC5B,gBAAQ,YAAY;AACpB,gBAAQ,eAAe;AACvB,gBAAQ,aAAa;AACrB,gBAAQ,SAAS;AACjB,gBAAQ,SAAS;AACjB,gBAAQ,WAAW;AACnB,gBAAQ,aAAa;AACrB,gBAAQ,eAAe;AACvB,gBAAQ,aAAa;AACrB,gBAAQ,iBAAiB;AACzB,gBAAQ,qBAAqB;AAC7B,gBAAQ,SAAS;AAAA,MACf,GAAG;AAAA,IACL;AAAA;AAAA;;;AC5NA;AAAA;AAAA;AAEA,QAAI,OAAuC;AACzC,aAAO,UAAU;AAAA,IACnB,OAAO;AACL,aAAO,UAAU;AAAA,IACnB;AAAA;AAAA;;;ACNA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,OAAO,QAAQ,YAAY,QAAQ,UAAU;AACrD,QAAI,UAAU,wBAAwB,kBAAmB;AACzD,QAAI,UAAU;AACd,aAAS,yBAAyB,aAAa;AAC7C,UAAI,OAAO,YAAY,WAAY,QAAO;AAC1C,UAAI,oBAAoB,oBAAI,QAAQ;AACpC,UAAI,mBAAmB,oBAAI,QAAQ;AACnC,cAAQ,2BAA2B,SAAUC,cAAa;AACxD,eAAOA,eAAc,mBAAmB;AAAA,MAC1C,GAAG,WAAW;AAAA,IAChB;AACA,aAAS,wBAAwB,KAAK,aAAa;AACjD,UAAI,CAAC,eAAe,OAAO,IAAI,YAAY;AACzC,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,QAAS,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAa;AAC1E,eAAO,EAAC,SAAS,IAAG;AAAA,MACtB;AACA,UAAI,QAAQ,yBAAyB,WAAW;AAChD,UAAI,SAAS,MAAM,IAAI,GAAG,GAAG;AAC3B,eAAO,MAAM,IAAI,GAAG;AAAA,MACtB;AACA,UAAI,SAAS,CAAC;AACd,UAAI,wBACF,OAAO,kBAAkB,OAAO;AAClC,eAAS,OAAO,KAAK;AACnB,YAAI,QAAQ,aAAa,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AACvE,cAAI,OAAO,wBACP,OAAO,yBAAyB,KAAK,GAAG,IACxC;AACJ,cAAI,SAAS,KAAK,OAAO,KAAK,MAAM;AAClC,mBAAO,eAAe,QAAQ,KAAK,IAAI;AAAA,UACzC,OAAO;AACL,mBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AACA,aAAO,UAAU;AACjB,UAAI,OAAO;AACT,cAAM,IAAI,KAAK,MAAM;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAUA,QAAM,cAAc,CAAC,KAAK,WAAW,CAAC,MAAM;AAC1C,UAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,YAAI,QAAQ,UAAQ;AAClB,sBAAY,MAAM,QAAQ;AAAA,QAC5B,CAAC;AAAA,MACH,WAAW,OAAO,QAAQ,QAAQ,OAAO;AACvC,iBAAS,KAAK,GAAG;AAAA,MACnB;AACA,aAAO;AAAA,IACT;AACA,QAAM,UAAU,aAAW;AACzB,YAAM,OAAO,QAAQ;AACrB,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO;AAAA,MACT;AACA,UAAI,OAAO,SAAS,YAAY;AAC9B,eAAO,KAAK,eAAe,KAAK,QAAQ;AAAA,MAC1C;AACA,UAAI,QAAQ,WAAW,OAAO,GAAG;AAC/B,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,WAAW,OAAO,GAAG;AAC/B,eAAO;AAAA,MACT;AACA,UAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,YAAI,QAAQ,kBAAkB,OAAO,GAAG;AACtC,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,kBAAkB,OAAO,GAAG;AACtC,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,aAAa,OAAO,GAAG;AACjC,cAAI,KAAK,aAAa;AACpB,mBAAO,KAAK;AAAA,UACd;AACA,gBAAM,eAAe,KAAK,OAAO,eAAe,KAAK,OAAO,QAAQ;AACpE,iBAAO,iBAAiB,KAAK,cAAc,YAAY,MAAM;AAAA,QAC/D;AACA,YAAI,QAAQ,OAAO,OAAO,GAAG;AAC3B,gBAAM,eACJ,KAAK,eAAe,KAAK,KAAK,eAAe,KAAK,KAAK,QAAQ;AACjE,iBAAO,iBAAiB,KAAK,QAAQ,YAAY,MAAM;AAAA,QACzD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,QAAM,cAAc,aAAW;AAC7B,YAAM,EAAC,MAAK,IAAI;AAChB,aAAO,OAAO,KAAK,KAAK,EACrB,OAAO,SAAO,QAAQ,cAAc,MAAM,GAAG,MAAM,MAAS,EAC5D,KAAK;AAAA,IACV;AACA,QAAM,YAAY,CAAC,SAAS,QAAQ,aAAa,OAAO,MAAM,YAC5D,EAAE,QAAQ,OAAO,YACZ,GAAG,QAAQ,oBAAoB,QAAQ,OAAO,GAAG,MAAM,KACvD,GAAG,QAAQ;AAAA,MACV,QAAQ,OAAO;AAAA,OACd,GAAG,QAAQ;AAAA,QACV,YAAY,OAAO;AAAA,QACnB,QAAQ;AAAA,QACR;AAAA,QACA,cAAc,OAAO;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACC,GAAG,QAAQ;AAAA,QACV,YAAY,QAAQ,MAAM,QAAQ;AAAA,QAClC;AAAA,QACA,cAAc,OAAO;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACN,YAAQ,YAAY;AACpB,QAAM,OAAO,SAAO,OAAO,QAAQ,QAAQ,UAAU,GAAG;AACxD,YAAQ,OAAO;AACf,QAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,IACF;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AC9IlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,OAAO,QAAQ,YAAY,QAAQ,UAAU;AACrD,QAAI,UAAU;AACd,QAAIC,UAAS,WAAW,0BAA0B,KAAK,WAAW;AASlE,QAAM,aACJ,OAAOA,YAAW,cAAcA,QAAO,MACnCA,QAAO,IAAI,iBAAiB,IAC5B;AACN,QAAM,cAAc,YAAU;AAC5B,YAAM,EAAC,MAAK,IAAI;AAChB,aAAO,QACH,OAAO,KAAK,KAAK,EACd,OAAO,SAAO,MAAM,GAAG,MAAM,MAAS,EACtC,KAAK,IACR,CAAC;AAAA,IACP;AACA,QAAM,YAAY,CAAC,QAAQ,QAAQ,aAAa,OAAO,MAAM,YAC3D,EAAE,QAAQ,OAAO,YACZ,GAAG,QAAQ,oBAAoB,OAAO,MAAM,MAAM,KAClD,GAAG,QAAQ;AAAA,MACV,OAAO;AAAA,MACP,OAAO,SACF,GAAG,QAAQ;AAAA,QACV,YAAY,MAAM;AAAA,QAClB,OAAO;AAAA,QACP;AAAA,QACA,cAAc,OAAO;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF,IACA;AAAA,MACJ,OAAO,YACF,GAAG,QAAQ;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,cAAc,OAAO;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF,IACA;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AACN,YAAQ,YAAY;AACpB,QAAM,OAAO,SAAO,OAAO,IAAI,aAAa;AAC5C,YAAQ,OAAO;AACf,QAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,IACF;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACjElB;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU,QAAQ,kBAAkB;AAC5C,YAAQ,SAAS;AACjB,YAAQ,UAAU;AAClB,QAAI,cAAc,uBAAuB,qBAAsB;AAC/D,QAAI,eAAe;AACnB,QAAI,qBAAqB;AAAA,MACvB;AAAA,IACF;AACA,QAAI,iBAAiB,uBAAuB,uBAAkC;AAC9E,QAAI,cAAc,uBAAuB,oBAA+B;AACxE,QAAI,aAAa,uBAAuB,mBAA8B;AACtE,QAAI,gBAAgB,uBAAuB,sBAAiC;AAC5E,QAAI,sBAAsB;AAAA,MACxB;AAAA,IACF;AACA,aAAS,uBAAuB,KAAK;AACnC,aAAO,OAAO,IAAI,aAAa,MAAM,EAAC,SAAS,IAAG;AAAA,IACpD;AAUA,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,cAAc,KAAK,UAAU;AACnC,QAAM,gBAAgB,MAAM,UAAU;AACtC,QAAM,iBAAiB,OAAO,UAAU;AAMxC,QAAM,qBAAqB,SACxB,OAAO,IAAI,gBAAgB,cAAc,IAAI,YAAY,QAAS;AAIrE,QAAM,WAAW,SAAO,OAAO,WAAW,eAAe,QAAQ;AACjE,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;AACvB,QAAM,0BAAN,cAAsC,MAAM;AAAA,MAC1C,YAAY,SAAS,OAAO;AAC1B,cAAM,OAAO;AACb,aAAK,QAAQ;AACb,aAAK,OAAO,KAAK,YAAY;AAAA,MAC/B;AAAA,IACF;AACA,aAAS,sBAAsB,YAAY;AACzC,aACE,eAAe,oBACf,eAAe,0BACf,eAAe,uBACf,eAAe,2BACf,eAAe,2BACf,eAAe,wBACf,eAAe,yBACf,eAAe,yBACf,eAAe,yBACf,eAAe,gCACf,eAAe,0BACf,eAAe;AAAA,IAEnB;AACA,aAAS,YAAY,KAAK;AACxB,aAAO,OAAO,GAAG,KAAK,EAAE,IAAI,OAAO,OAAO,GAAG;AAAA,IAC/C;AACA,aAAS,YAAY,KAAK;AACxB,aAAO,OAAO,GAAG,GAAG,GAAG;AAAA,IACzB;AACA,aAAS,cAAc,KAAK,mBAAmB;AAC7C,UAAI,CAAC,mBAAmB;AACtB,eAAO;AAAA,MACT;AACA,aAAO,aAAa,IAAI,QAAQ,WAAW;AAAA,IAC7C;AACA,aAAS,YAAY,KAAK;AACxB,aAAO,OAAO,GAAG,EAAE,QAAQ,eAAe,YAAY;AAAA,IACxD;AACA,aAAS,WAAW,KAAK;AACvB,aAAO,IAAI,cAAc,KAAK,GAAG,CAAC;AAAA,IACpC;AAMA,aAAS,gBAAgB,KAAK,mBAAmB,aAAa,cAAc;AAC1E,UAAI,QAAQ,QAAQ,QAAQ,OAAO;AACjC,eAAO,GAAG,GAAG;AAAA,MACf;AACA,UAAI,QAAQ,QAAW;AACrB,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,MAAM;AAChB,eAAO;AAAA,MACT;AACA,YAAM,SAAS,OAAO;AACtB,UAAI,WAAW,UAAU;AACvB,eAAO,YAAY,GAAG;AAAA,MACxB;AACA,UAAI,WAAW,UAAU;AACvB,eAAO,YAAY,GAAG;AAAA,MACxB;AACA,UAAI,WAAW,UAAU;AACvB,YAAI,cAAc;AAChB,iBAAO,IAAI,IAAI,QAAQ,SAAS,MAAM,CAAC;AAAA,QACzC;AACA,eAAO,IAAI,GAAG;AAAA,MAChB;AACA,UAAI,WAAW,YAAY;AACzB,eAAO,cAAc,KAAK,iBAAiB;AAAA,MAC7C;AACA,UAAI,WAAW,UAAU;AACvB,eAAO,YAAY,GAAG;AAAA,MACxB;AACA,YAAM,aAAa,SAAS,KAAK,GAAG;AACpC,UAAI,eAAe,oBAAoB;AACrC,eAAO;AAAA,MACT;AACA,UAAI,eAAe,oBAAoB;AACrC,eAAO;AAAA,MACT;AACA,UACE,eAAe,uBACf,eAAe,8BACf;AACA,eAAO,cAAc,KAAK,iBAAiB;AAAA,MAC7C;AACA,UAAI,eAAe,mBAAmB;AACpC,eAAO,YAAY,GAAG;AAAA,MACxB;AACA,UAAI,eAAe,iBAAiB;AAClC,eAAO,MAAM,CAAC,GAAG,IAAI,iBAAiB,YAAY,KAAK,GAAG;AAAA,MAC5D;AACA,UAAI,eAAe,kBAAkB;AACnC,eAAO,WAAW,GAAG;AAAA,MACvB;AACA,UAAI,eAAe,mBAAmB;AACpC,YAAI,aAAa;AAEf,iBAAO,eAAe,KAAK,GAAG,EAAE,QAAQ,uBAAuB,MAAM;AAAA,QACvE;AACA,eAAO,eAAe,KAAK,GAAG;AAAA,MAChC;AACA,UAAI,eAAe,OAAO;AACxB,eAAO,WAAW,GAAG;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAMA,aAAS,kBACP,KACA,QACA,aACA,OACA,MACA,iBACA;AACA,UAAI,KAAK,QAAQ,GAAG,MAAM,IAAI;AAC5B,eAAO;AAAA,MACT;AACA,aAAO,KAAK,MAAM;AAClB,WAAK,KAAK,GAAG;AACb,YAAM,cAAc,EAAE,QAAQ,OAAO;AACrC,YAAM,MAAM,OAAO;AACnB,UACE,OAAO,cACP,CAAC,eACD,IAAI,UACJ,OAAO,IAAI,WAAW,cACtB,CAAC,iBACD;AACA,eAAO,QAAQ,IAAI,OAAO,GAAG,QAAQ,aAAa,OAAO,MAAM,IAAI;AAAA,MACrE;AACA,YAAM,aAAa,SAAS,KAAK,GAAG;AACpC,UAAI,eAAe,sBAAsB;AACvC,eAAO,cACH,gBACA,GAAG,MAAM,KAAK,YAAY,KAAK,GAAG,aAAa;AAAA,UAC7C;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACP;AACA,UAAI,sBAAsB,UAAU,GAAG;AACrC,eAAO,cACH,IAAI,IAAI,YAAY,IAAI,MACxB,GACE,MACI,KACA,CAAC,OAAO,uBAAuB,IAAI,YAAY,SAAS,UACxD,KACA,GAAG,IAAI,YAAY,IAAI,GAC7B,KAAK,GAAG,aAAa;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACP;AACA,UAAI,eAAe,gBAAgB;AACjC,eAAO,cACH,UACA,SAAS,GAAG,aAAa;AAAA,UACvB,IAAI,QAAQ;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACP;AACA,UAAI,eAAe,gBAAgB;AACjC,eAAO,cACH,UACA,SAAS,GAAG,aAAa;AAAA,UACvB,IAAI,OAAO;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACP;AAIA,aAAO,eAAe,SAAS,GAAG,IAC9B,IAAI,mBAAmB,GAAG,CAAC,MAC3B,GACE,MACI,KACA,CAAC,OAAO,uBAAuB,mBAAmB,GAAG,MAAM,WAC3D,KACA,GAAG,mBAAmB,GAAG,CAAC,GAChC,KAAK,GAAG,aAAa;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACP;AACA,aAAS,YAAY,QAAQ;AAC3B,aAAO,OAAO,aAAa;AAAA,IAC7B;AACA,aAAS,YAAY,QAAQ,KAAK,QAAQ,aAAa,OAAO,MAAM;AAClE,UAAI;AACJ,UAAI;AACF,kBAAU,YAAY,MAAM,IACxB,OAAO,UAAU,KAAK,QAAQ,aAAa,OAAO,MAAM,OAAO,IAC/D,OAAO;AAAA,UACL;AAAA,UACA,cAAY,QAAQ,UAAU,QAAQ,aAAa,OAAO,IAAI;AAAA,UAC9D,SAAO;AACL,kBAAM,kBAAkB,cAAc,OAAO;AAC7C,mBACE,kBACA,IAAI,QAAQ,gBAAgB;AAAA,EAAK,eAAe,EAAE;AAAA,UAEtD;AAAA,UACA;AAAA,YACE,aAAa,OAAO;AAAA,YACpB,KAAK,OAAO;AAAA,YACZ,SAAS,OAAO;AAAA,UAClB;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACN,SAAS,OAAO;AACd,cAAM,IAAI,wBAAwB,MAAM,SAAS,MAAM,KAAK;AAAA,MAC9D;AACA,UAAI,OAAO,YAAY,UAAU;AAC/B,cAAM,IAAI;AAAA,UACR,yEAAyE,OAAO,OAAO;AAAA,QACzF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,aAAS,WAAWC,UAAS,KAAK;AAChC,eAAS,IAAI,GAAG,IAAIA,SAAQ,QAAQ,KAAK;AACvC,YAAI;AACF,cAAIA,SAAQ,CAAC,EAAE,KAAK,GAAG,GAAG;AACxB,mBAAOA,SAAQ,CAAC;AAAA,UAClB;AAAA,QACF,SAAS,OAAO;AACd,gBAAM,IAAI,wBAAwB,MAAM,SAAS,MAAM,KAAK;AAAA,QAC9D;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,aAAS,QAAQ,KAAK,QAAQ,aAAa,OAAO,MAAM,iBAAiB;AACvE,YAAM,SAAS,WAAW,OAAO,SAAS,GAAG;AAC7C,UAAI,WAAW,MAAM;AACnB,eAAO,YAAY,QAAQ,KAAK,QAAQ,aAAa,OAAO,IAAI;AAAA,MAClE;AACA,YAAM,cAAc;AAAA,QAClB;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AACA,UAAI,gBAAgB,MAAM;AACxB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,QAAM,gBAAgB;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AACA,QAAM,qBAAqB,OAAO,KAAK,aAAa;AAGpD,QAAM,mBAAmB,aAAW;AACpC,QAAM,kBAAkB,iBAAiB;AAAA,MACvC,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,MACb,cAAc;AAAA,MACd,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,MACL,SAAS,CAAC;AAAA,MACV,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,MACnB,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,kBAAkB;AAC1B,aAAS,gBAAgB,SAAS;AAChC,aAAO,KAAK,OAAO,EAAE,QAAQ,SAAO;AAClC,YAAI,CAAC,OAAO,UAAU,eAAe,KAAK,iBAAiB,GAAG,GAAG;AAC/D,gBAAM,IAAI,MAAM,kCAAkC,GAAG,IAAI;AAAA,QAC3D;AAAA,MACF,CAAC;AACD,UAAI,QAAQ,OAAO,QAAQ,WAAW,UAAa,QAAQ,WAAW,GAAG;AACvE,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,UAAI,QAAQ,UAAU,QAAW;AAC/B,YAAI,QAAQ,UAAU,MAAM;AAC1B,gBAAM,IAAI,MAAM,iDAAiD;AAAA,QACnE;AACA,YAAI,OAAO,QAAQ,UAAU,UAAU;AACrC,gBAAM,IAAI;AAAA,YACR,gFAAgF,OAAO,QAAQ,KAAK;AAAA,UACtG;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAM,qBAAqB,aACzB,mBAAmB,OAAO,CAAC,QAAQ,QAAQ;AACzC,YAAM,QACJ,QAAQ,SAAS,QAAQ,MAAM,GAAG,MAAM,SACpC,QAAQ,MAAM,GAAG,IACjB,cAAc,GAAG;AACvB,YAAM,QAAQ,SAAS,YAAY,QAAQ,KAAK;AAChD,UACE,SACA,OAAO,MAAM,UAAU,YACvB,OAAO,MAAM,SAAS,UACtB;AACA,eAAO,GAAG,IAAI;AAAA,MAChB,OAAO;AACL,cAAM,IAAI;AAAA,UACR,4CAA4C,GAAG,kBAAkB,KAAK;AAAA,QACxE;AAAA,MACF;AACA,aAAO;AAAA,IACT,GAAG,uBAAO,OAAO,IAAI,CAAC;AACxB,QAAM,iBAAiB,MACrB,mBAAmB,OAAO,CAAC,QAAQ,QAAQ;AACzC,aAAO,GAAG,IAAI;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AACA,aAAO;AAAA,IACT,GAAG,uBAAO,OAAO,IAAI,CAAC;AACxB,QAAM,uBAAuB,cAC3B,mCAAS,sBAAqB,gBAAgB;AAChD,QAAM,iBAAiB,cACrB,mCAAS,gBAAe,gBAAgB;AAC1C,QAAM,kBAAkB,cACtB,mCAAS,iBAAgB,gBAAgB;AAC3C,QAAM,YAAY,cAAY;AAAA,MAC5B,aAAY,mCAAS,eAAc,gBAAgB;AAAA,MACnD,SAAQ,mCAAS,aAAY,mBAAmB,OAAO,IAAI,eAAe;AAAA,MAC1E,aACE,QAAO,mCAAS,iBAAgB,eAAc,mCAAS,iBAAgB,OACnE,QAAQ,cACR,gBAAgB;AAAA,MACtB,aAAa,eAAe,OAAO;AAAA,MACnC,cAAc,gBAAgB,OAAO;AAAA,MACrC,SAAQ,mCAAS,OACb,KACA,cAAa,mCAAS,WAAU,gBAAgB,MAAM;AAAA,MAC1D,WAAU,mCAAS,aAAY,gBAAgB;AAAA,MAC/C,WAAU,mCAAS,aAAY,gBAAgB;AAAA,MAC/C,MAAK,mCAAS,QAAO,gBAAgB;AAAA,MACrC,UAAS,mCAAS,YAAW,gBAAgB;AAAA,MAC7C,sBAAqB,mCAAS,wBAAuB;AAAA,MACrD,mBAAmB,qBAAqB,OAAO;AAAA,MAC/C,eAAc,mCAAS,OAAM,MAAM;AAAA,MACnC,eAAc,mCAAS,OAAM,KAAK;AAAA,IACpC;AACA,aAAS,aAAa,QAAQ;AAC5B,aAAO,IAAI,MAAM,SAAS,CAAC,EAAE,KAAK,GAAG;AAAA,IACvC;AAOA,aAAS,OAAO,KAAK,SAAS;AAC5B,UAAI,SAAS;AACX,wBAAgB,OAAO;AACvB,YAAI,QAAQ,SAAS;AACnB,gBAAM,SAAS,WAAW,QAAQ,SAAS,GAAG;AAC9C,cAAI,WAAW,MAAM;AACnB,mBAAO,YAAY,QAAQ,KAAK,UAAU,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;AAAA,UAC/D;AAAA,QACF;AAAA,MACF;AACA,YAAM,cAAc;AAAA,QAClB;AAAA,QACA,qBAAqB,OAAO;AAAA,QAC5B,eAAe,OAAO;AAAA,QACtB,gBAAgB,OAAO;AAAA,MACzB;AACA,UAAI,gBAAgB,MAAM;AACxB,eAAO;AAAA,MACT;AACA,aAAO,kBAAkB,KAAK,UAAU,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;AAAA,IAC7D;AACA,QAAM,UAAU;AAAA,MACd,mBAAmB,mBAAmB;AAAA,MACtC,eAAe,eAAe;AAAA,MAC9B,YAAY,YAAY;AAAA,MACxB,WAAW,WAAW;AAAA,MACtB,cAAc,cAAc;AAAA,MAC5B,oBAAoB,oBAAoB;AAAA,IAC1C;AACA,YAAQ,UAAU;AAClB,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;", + "names": ["Symbol", "nodeInterop", "Symbol", "plugins"] +} diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js b/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js new file mode 100644 index 0000000..1a36c25 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js @@ -0,0 +1,145 @@ +import { + __commonJS +} from "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/ansi-styles/index.js +var require_ansi_styles = __commonJS({ + "../../node_modules/ansi-styles/index.js"(exports, module) { + var ANSI_BACKGROUND_OFFSET = 10; + var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`; + var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`; + function assembleStyles() { + const codes = /* @__PURE__ */ new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + overline: [53, 55], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + // Bright color + blackBright: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + styles.color.gray = styles.color.blackBright; + styles.bgColor.bgGray = styles.bgColor.bgBlackBright; + styles.color.grey = styles.color.blackBright; + styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\x1B[${style[0]}m`, + close: `\x1B[${style[1]}m` + }; + group[styleName] = styles[styleName]; + codes.set(style[0], style[1]); + } + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + Object.defineProperty(styles, "codes", { + value: codes, + enumerable: false + }); + styles.color.close = "\x1B[39m"; + styles.bgColor.close = "\x1B[49m"; + styles.color.ansi256 = wrapAnsi256(); + styles.color.ansi16m = wrapAnsi16m(); + styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET); + styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET); + Object.defineProperties(styles, { + rgbToAnsi256: { + value: (red, green, blue) => { + if (red === green && green === blue) { + if (red < 8) { + return 16; + } + if (red > 248) { + return 231; + } + return Math.round((red - 8) / 247 * 24) + 232; + } + return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5); + }, + enumerable: false + }, + hexToRgb: { + value: (hex) => { + const matches = /(?[a-f\d]{6}|[a-f\d]{3})/i.exec(hex.toString(16)); + if (!matches) { + return [0, 0, 0]; + } + let { colorString } = matches.groups; + if (colorString.length === 3) { + colorString = colorString.split("").map((character) => character + character).join(""); + } + const integer = Number.parseInt(colorString, 16); + return [ + integer >> 16 & 255, + integer >> 8 & 255, + integer & 255 + ]; + }, + enumerable: false + }, + hexToAnsi256: { + value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)), + enumerable: false + } + }); + return styles; + } + Object.defineProperty(module, "exports", { + enumerable: true, + get: assembleStyles + }); + } +}); + +export { + require_ansi_styles +}; +//# sourceMappingURL=chunk-UJ726J2L.js.map diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map b/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map new file mode 100644 index 0000000..a7ed0ae --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ansi-styles/index.js"], + "sourcesContent": ["'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n"], + "mappings": "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", + "names": [] +} diff --git a/packages/ridb/node_modules/.vite/deps/package.json b/packages/ridb/node_modules/.vite/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/ridb/node_modules/.vite/deps/uuid.js b/packages/ridb/node_modules/.vite/deps/uuid.js new file mode 100644 index 0000000..f360aa5 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/uuid.js @@ -0,0 +1,528 @@ +import "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/uuid/dist/esm-browser/max.js +var max_default = "ffffffff-ffff-ffff-ffff-ffffffffffff"; + +// ../../node_modules/uuid/dist/esm-browser/nil.js +var nil_default = "00000000-0000-0000-0000-000000000000"; + +// ../../node_modules/uuid/dist/esm-browser/regex.js +var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i; + +// ../../node_modules/uuid/dist/esm-browser/validate.js +function validate(uuid) { + return typeof uuid === "string" && regex_default.test(uuid); +} +var validate_default = validate; + +// ../../node_modules/uuid/dist/esm-browser/parse.js +function parse(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + let v; + return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, v >>> 16 & 255, v >>> 8 & 255, v & 255, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255, v / 4294967296 & 255, v >>> 24 & 255, v >>> 16 & 255, v >>> 8 & 255, v & 255); +} +var parse_default = parse; + +// ../../node_modules/uuid/dist/esm-browser/stringify.js +var byteToHex = []; +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).slice(1)); +} +function unsafeStringify(arr, offset = 0) { + return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); +} +function stringify(arr, offset = 0) { + const uuid = unsafeStringify(arr, offset); + if (!validate_default(uuid)) { + throw TypeError("Stringified UUID is invalid"); + } + return uuid; +} +var stringify_default = stringify; + +// ../../node_modules/uuid/dist/esm-browser/rng.js +var getRandomValues; +var rnds8 = new Uint8Array(16); +function rng() { + if (!getRandomValues) { + if (typeof crypto === "undefined" || !crypto.getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + getRandomValues = crypto.getRandomValues.bind(crypto); + } + return getRandomValues(rnds8); +} + +// ../../node_modules/uuid/dist/esm-browser/v1.js +var _state = {}; +function v1(options, buf, offset) { + var _a; + let bytes; + const isV6 = (options == null ? void 0 : options._v6) ?? false; + if (options) { + const optionsKeys = Object.keys(options); + if (optionsKeys.length === 1 && optionsKeys[0] === "_v6") { + options = void 0; + } + } + if (options) { + bytes = v1Bytes(options.random ?? ((_a = options.rng) == null ? void 0 : _a.call(options)) ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset); + } else { + const now = Date.now(); + const rnds = rng(); + updateV1State(_state, now, rnds); + bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? void 0 : _state.clockseq, isV6 ? void 0 : _state.node, buf, offset); + } + return buf ? bytes : unsafeStringify(bytes); +} +function updateV1State(state, now, rnds) { + state.msecs ?? (state.msecs = -Infinity); + state.nsecs ?? (state.nsecs = 0); + if (now === state.msecs) { + state.nsecs++; + if (state.nsecs >= 1e4) { + state.node = void 0; + state.nsecs = 0; + } + } else if (now > state.msecs) { + state.nsecs = 0; + } else if (now < state.msecs) { + state.node = void 0; + } + if (!state.node) { + state.node = rnds.slice(10, 16); + state.node[0] |= 1; + state.clockseq = (rnds[8] << 8 | rnds[9]) & 16383; + } + state.msecs = now; + return state; +} +function v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) { + if (!buf) { + buf = new Uint8Array(16); + offset = 0; + } + msecs ?? (msecs = Date.now()); + nsecs ?? (nsecs = 0); + clockseq ?? (clockseq = (rnds[8] << 8 | rnds[9]) & 16383); + node ?? (node = rnds.slice(10, 16)); + msecs += 122192928e5; + const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; + buf[offset++] = tl >>> 24 & 255; + buf[offset++] = tl >>> 16 & 255; + buf[offset++] = tl >>> 8 & 255; + buf[offset++] = tl & 255; + const tmh = msecs / 4294967296 * 1e4 & 268435455; + buf[offset++] = tmh >>> 8 & 255; + buf[offset++] = tmh & 255; + buf[offset++] = tmh >>> 24 & 15 | 16; + buf[offset++] = tmh >>> 16 & 255; + buf[offset++] = clockseq >>> 8 | 128; + buf[offset++] = clockseq & 255; + for (let n = 0; n < 6; ++n) { + buf[offset++] = node[n]; + } + return buf; +} +var v1_default = v1; + +// ../../node_modules/uuid/dist/esm-browser/v1ToV6.js +function v1ToV6(uuid) { + const v1Bytes2 = typeof uuid === "string" ? parse_default(uuid) : uuid; + const v6Bytes = _v1ToV6(v1Bytes2); + return typeof uuid === "string" ? unsafeStringify(v6Bytes) : v6Bytes; +} +function _v1ToV6(v1Bytes2) { + return Uint8Array.of((v1Bytes2[6] & 15) << 4 | v1Bytes2[7] >> 4 & 15, (v1Bytes2[7] & 15) << 4 | (v1Bytes2[4] & 240) >> 4, (v1Bytes2[4] & 15) << 4 | (v1Bytes2[5] & 240) >> 4, (v1Bytes2[5] & 15) << 4 | (v1Bytes2[0] & 240) >> 4, (v1Bytes2[0] & 15) << 4 | (v1Bytes2[1] & 240) >> 4, (v1Bytes2[1] & 15) << 4 | (v1Bytes2[2] & 240) >> 4, 96 | v1Bytes2[2] & 15, v1Bytes2[3], v1Bytes2[8], v1Bytes2[9], v1Bytes2[10], v1Bytes2[11], v1Bytes2[12], v1Bytes2[13], v1Bytes2[14], v1Bytes2[15]); +} + +// ../../node_modules/uuid/dist/esm-browser/md5.js +function md5(bytes) { + const words = uint8ToUint32(bytes); + const md5Bytes = wordsToMd5(words, bytes.length * 8); + return uint32ToUint8(md5Bytes); +} +function uint32ToUint8(input) { + const bytes = new Uint8Array(input.length * 4); + for (let i = 0; i < input.length * 4; i++) { + bytes[i] = input[i >> 2] >>> i % 4 * 8 & 255; + } + return bytes; +} +function getOutputLength(inputLength8) { + return (inputLength8 + 64 >>> 9 << 4) + 14 + 1; +} +function wordsToMd5(x, len) { + const xpad = new Uint32Array(getOutputLength(len)).fill(0); + xpad.set(x); + xpad[len >> 5] |= 128 << len % 32; + xpad[xpad.length - 1] = len; + x = xpad; + let a = 1732584193; + let b = -271733879; + let c = -1732584194; + let d = 271733878; + for (let i = 0; i < x.length; i += 16) { + const olda = a; + const oldb = b; + const oldc = c; + const oldd = d; + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return Uint32Array.of(a, b, c, d); +} +function uint8ToUint32(input) { + if (input.length === 0) { + return new Uint32Array(); + } + const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0); + for (let i = 0; i < input.length; i++) { + output[i >> 2] |= (input[i] & 255) << i % 4 * 8; + } + return output; +} +function safeAdd(x, y) { + const lsw = (x & 65535) + (y & 65535); + const msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 65535; +} +function bitRotateLeft(num, cnt) { + return num << cnt | num >>> 32 - cnt; +} +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn(b & c | ~b & d, a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn(b & d | c & ~d, a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} +var md5_default = md5; + +// ../../node_modules/uuid/dist/esm-browser/v35.js +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = new Uint8Array(str.length); + for (let i = 0; i < str.length; ++i) { + bytes[i] = str.charCodeAt(i); + } + return bytes; +} +var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; +var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; +function v35(version2, hash, value, namespace, buf, offset) { + const valueBytes = typeof value === "string" ? stringToBytes(value) : value; + const namespaceBytes = typeof namespace === "string" ? parse_default(namespace) : namespace; + if (typeof namespace === "string") { + namespace = parse_default(namespace); + } + if ((namespace == null ? void 0 : namespace.length) !== 16) { + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + } + let bytes = new Uint8Array(16 + valueBytes.length); + bytes.set(namespaceBytes); + bytes.set(valueBytes, namespaceBytes.length); + bytes = hash(bytes); + bytes[6] = bytes[6] & 15 | version2; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + return buf; + } + return unsafeStringify(bytes); +} + +// ../../node_modules/uuid/dist/esm-browser/v3.js +function v3(value, namespace, buf, offset) { + return v35(48, md5_default, value, namespace, buf, offset); +} +v3.DNS = DNS; +v3.URL = URL; +var v3_default = v3; + +// ../../node_modules/uuid/dist/esm-browser/native.js +var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); +var native_default = { randomUUID }; + +// ../../node_modules/uuid/dist/esm-browser/v4.js +function v4(options, buf, offset) { + if (native_default.randomUUID && !buf && !options) { + return native_default.randomUUID(); + } + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return unsafeStringify(rnds); +} +var v4_default = v4; + +// ../../node_modules/uuid/dist/esm-browser/sha1.js +function f(s, x, y, z) { + switch (s) { + case 0: + return x & y ^ ~x & z; + case 1: + return x ^ y ^ z; + case 2: + return x & y ^ x & z ^ y & z; + case 3: + return x ^ y ^ z; + } +} +function ROTL(x, n) { + return x << n | x >>> 32 - n; +} +function sha1(bytes) { + const K = [1518500249, 1859775393, 2400959708, 3395469782]; + const H = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + const newBytes = new Uint8Array(bytes.length + 1); + newBytes.set(bytes); + newBytes[bytes.length] = 128; + bytes = newBytes; + const l = bytes.length / 4 + 2; + const N = Math.ceil(l / 16); + const M = new Array(N); + for (let i = 0; i < N; ++i) { + const arr = new Uint32Array(16); + for (let j = 0; j < 16; ++j) { + arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3]; + } + M[i] = arr; + } + M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); + M[N - 1][14] = Math.floor(M[N - 1][14]); + M[N - 1][15] = (bytes.length - 1) * 8 & 4294967295; + for (let i = 0; i < N; ++i) { + const W = new Uint32Array(80); + for (let t = 0; t < 16; ++t) { + W[t] = M[i][t]; + } + for (let t = 16; t < 80; ++t) { + W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1); + } + let a = H[0]; + let b = H[1]; + let c = H[2]; + let d = H[3]; + let e = H[4]; + for (let t = 0; t < 80; ++t) { + const s = Math.floor(t / 20); + const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0; + e = d; + d = c; + c = ROTL(b, 30) >>> 0; + b = a; + a = T; + } + H[0] = H[0] + a >>> 0; + H[1] = H[1] + b >>> 0; + H[2] = H[2] + c >>> 0; + H[3] = H[3] + d >>> 0; + H[4] = H[4] + e >>> 0; + } + return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]); +} +var sha1_default = sha1; + +// ../../node_modules/uuid/dist/esm-browser/v5.js +function v5(value, namespace, buf, offset) { + return v35(80, sha1_default, value, namespace, buf, offset); +} +v5.DNS = DNS; +v5.URL = URL; +var v5_default = v5; + +// ../../node_modules/uuid/dist/esm-browser/v6.js +function v6(options, buf, offset) { + options ?? (options = {}); + offset ?? (offset = 0); + let bytes = v1_default({ ...options, _v6: true }, new Uint8Array(16)); + bytes = v1ToV6(bytes); + if (buf) { + for (let i = 0; i < 16; i++) { + buf[offset + i] = bytes[i]; + } + return buf; + } + return unsafeStringify(bytes); +} +var v6_default = v6; + +// ../../node_modules/uuid/dist/esm-browser/v6ToV1.js +function v6ToV1(uuid) { + const v6Bytes = typeof uuid === "string" ? parse_default(uuid) : uuid; + const v1Bytes2 = _v6ToV1(v6Bytes); + return typeof uuid === "string" ? unsafeStringify(v1Bytes2) : v1Bytes2; +} +function _v6ToV1(v6Bytes) { + return Uint8Array.of((v6Bytes[3] & 15) << 4 | v6Bytes[4] >> 4 & 15, (v6Bytes[4] & 15) << 4 | (v6Bytes[5] & 240) >> 4, (v6Bytes[5] & 15) << 4 | v6Bytes[6] & 15, v6Bytes[7], (v6Bytes[1] & 15) << 4 | (v6Bytes[2] & 240) >> 4, (v6Bytes[2] & 15) << 4 | (v6Bytes[3] & 240) >> 4, 16 | (v6Bytes[0] & 240) >> 4, (v6Bytes[0] & 15) << 4 | (v6Bytes[1] & 240) >> 4, v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]); +} + +// ../../node_modules/uuid/dist/esm-browser/v7.js +var _state2 = {}; +function v7(options, buf, offset) { + var _a; + let bytes; + if (options) { + bytes = v7Bytes(options.random ?? ((_a = options.rng) == null ? void 0 : _a.call(options)) ?? rng(), options.msecs, options.seq, buf, offset); + } else { + const now = Date.now(); + const rnds = rng(); + updateV7State(_state2, now, rnds); + bytes = v7Bytes(rnds, _state2.msecs, _state2.seq, buf, offset); + } + return buf ? bytes : unsafeStringify(bytes); +} +function updateV7State(state, now, rnds) { + state.msecs ?? (state.msecs = -Infinity); + state.seq ?? (state.seq = 0); + if (now > state.msecs) { + state.seq = rnds[6] << 23 | rnds[7] << 16 | rnds[8] << 8 | rnds[9]; + state.msecs = now; + } else { + state.seq = state.seq + 1 | 0; + if (state.seq === 0) { + state.msecs++; + } + } + return state; +} +function v7Bytes(rnds, msecs, seq, buf, offset = 0) { + if (!buf) { + buf = new Uint8Array(16); + offset = 0; + } + msecs ?? (msecs = Date.now()); + seq ?? (seq = rnds[6] * 127 << 24 | rnds[7] << 16 | rnds[8] << 8 | rnds[9]); + buf[offset++] = msecs / 1099511627776 & 255; + buf[offset++] = msecs / 4294967296 & 255; + buf[offset++] = msecs / 16777216 & 255; + buf[offset++] = msecs / 65536 & 255; + buf[offset++] = msecs / 256 & 255; + buf[offset++] = msecs & 255; + buf[offset++] = 112 | seq >>> 28 & 15; + buf[offset++] = seq >>> 20 & 255; + buf[offset++] = 128 | seq >>> 14 & 63; + buf[offset++] = seq >>> 6 & 255; + buf[offset++] = seq << 2 & 255 | rnds[10] & 3; + buf[offset++] = rnds[11]; + buf[offset++] = rnds[12]; + buf[offset++] = rnds[13]; + buf[offset++] = rnds[14]; + buf[offset++] = rnds[15]; + return buf; +} +var v7_default = v7; + +// ../../node_modules/uuid/dist/esm-browser/version.js +function version(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + return parseInt(uuid.slice(14, 15), 16); +} +var version_default = version; +export { + max_default as MAX, + nil_default as NIL, + parse_default as parse, + stringify_default as stringify, + v1_default as v1, + v1ToV6, + v3_default as v3, + v4_default as v4, + v5_default as v5, + v6_default as v6, + v6ToV1, + v7_default as v7, + validate_default as validate, + version_default as version +}; +//# sourceMappingURL=uuid.js.map diff --git a/packages/ridb/node_modules/.vite/deps/uuid.js.map b/packages/ridb/node_modules/.vite/deps/uuid.js.map new file mode 100644 index 0000000..00f84f9 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/uuid.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/uuid/dist/esm-browser/max.js", "../../../../../node_modules/uuid/dist/esm-browser/nil.js", "../../../../../node_modules/uuid/dist/esm-browser/regex.js", "../../../../../node_modules/uuid/dist/esm-browser/validate.js", "../../../../../node_modules/uuid/dist/esm-browser/parse.js", "../../../../../node_modules/uuid/dist/esm-browser/stringify.js", "../../../../../node_modules/uuid/dist/esm-browser/rng.js", "../../../../../node_modules/uuid/dist/esm-browser/v1.js", "../../../../../node_modules/uuid/dist/esm-browser/v1ToV6.js", "../../../../../node_modules/uuid/dist/esm-browser/md5.js", "../../../../../node_modules/uuid/dist/esm-browser/v35.js", "../../../../../node_modules/uuid/dist/esm-browser/v3.js", "../../../../../node_modules/uuid/dist/esm-browser/native.js", "../../../../../node_modules/uuid/dist/esm-browser/v4.js", "../../../../../node_modules/uuid/dist/esm-browser/sha1.js", "../../../../../node_modules/uuid/dist/esm-browser/v5.js", "../../../../../node_modules/uuid/dist/esm-browser/v6.js", "../../../../../node_modules/uuid/dist/esm-browser/v6ToV1.js", "../../../../../node_modules/uuid/dist/esm-browser/v7.js", "../../../../../node_modules/uuid/dist/esm-browser/version.js"], + "sourcesContent": ["export default 'ffffffff-ffff-ffff-ffff-ffffffffffff';\n", "export default '00000000-0000-0000-0000-000000000000';\n", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n", "import REGEX from './regex.js';\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;\n", "import validate from './validate.js';\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n let v;\n return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexport default parse;\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v1(options, buf, offset) {\n let bytes;\n const isV6 = options?._v6 ?? false;\n if (options) {\n const optionsKeys = Object.keys(options);\n if (optionsKeys.length === 1 && optionsKeys[0] === '_v6') {\n options = undefined;\n }\n }\n if (options) {\n bytes = v1Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);\n }\n else {\n const now = Date.now();\n const rnds = rng();\n updateV1State(_state, now, rnds);\n bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? undefined : _state.clockseq, isV6 ? undefined : _state.node, buf, offset);\n }\n return buf ? bytes : unsafeStringify(bytes);\n}\nexport function updateV1State(state, now, rnds) {\n state.msecs ??= -Infinity;\n state.nsecs ??= 0;\n if (now === state.msecs) {\n state.nsecs++;\n if (state.nsecs >= 10000) {\n state.node = undefined;\n state.nsecs = 0;\n }\n }\n else if (now > state.msecs) {\n state.nsecs = 0;\n }\n else if (now < state.msecs) {\n state.node = undefined;\n }\n if (!state.node) {\n state.node = rnds.slice(10, 16);\n state.node[0] |= 0x01;\n state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n }\n state.msecs = now;\n return state;\n}\nfunction v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n }\n msecs ??= Date.now();\n nsecs ??= 0;\n clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n node ??= rnds.slice(10, 16);\n msecs += 12219292800000;\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n buf[offset++] = (tl >>> 24) & 0xff;\n buf[offset++] = (tl >>> 16) & 0xff;\n buf[offset++] = (tl >>> 8) & 0xff;\n buf[offset++] = tl & 0xff;\n const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n buf[offset++] = (tmh >>> 8) & 0xff;\n buf[offset++] = tmh & 0xff;\n buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10;\n buf[offset++] = (tmh >>> 16) & 0xff;\n buf[offset++] = (clockseq >>> 8) | 0x80;\n buf[offset++] = clockseq & 0xff;\n for (let n = 0; n < 6; ++n) {\n buf[offset++] = node[n];\n }\n return buf;\n}\nexport default v1;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v1ToV6(uuid) {\n const v1Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n const v6Bytes = _v1ToV6(v1Bytes);\n return typeof uuid === 'string' ? unsafeStringify(v6Bytes) : v6Bytes;\n}\nfunction _v1ToV6(v1Bytes) {\n return Uint8Array.of(((v1Bytes[6] & 0x0f) << 4) | ((v1Bytes[7] >> 4) & 0x0f), ((v1Bytes[7] & 0x0f) << 4) | ((v1Bytes[4] & 0xf0) >> 4), ((v1Bytes[4] & 0x0f) << 4) | ((v1Bytes[5] & 0xf0) >> 4), ((v1Bytes[5] & 0x0f) << 4) | ((v1Bytes[0] & 0xf0) >> 4), ((v1Bytes[0] & 0x0f) << 4) | ((v1Bytes[1] & 0xf0) >> 4), ((v1Bytes[1] & 0x0f) << 4) | ((v1Bytes[2] & 0xf0) >> 4), 0x60 | (v1Bytes[2] & 0x0f), v1Bytes[3], v1Bytes[8], v1Bytes[9], v1Bytes[10], v1Bytes[11], v1Bytes[12], v1Bytes[13], v1Bytes[14], v1Bytes[15]);\n}\n", "function md5(bytes) {\n const words = uint8ToUint32(bytes);\n const md5Bytes = wordsToMd5(words, bytes.length * 8);\n return uint32ToUint8(md5Bytes);\n}\nfunction uint32ToUint8(input) {\n const bytes = new Uint8Array(input.length * 4);\n for (let i = 0; i < input.length * 4; i++) {\n bytes[i] = (input[i >> 2] >>> ((i % 4) * 8)) & 0xff;\n }\n return bytes;\n}\nfunction getOutputLength(inputLength8) {\n return (((inputLength8 + 64) >>> 9) << 4) + 14 + 1;\n}\nfunction wordsToMd5(x, len) {\n const xpad = new Uint32Array(getOutputLength(len)).fill(0);\n xpad.set(x);\n xpad[len >> 5] |= 0x80 << len % 32;\n xpad[xpad.length - 1] = len;\n x = xpad;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return Uint32Array.of(a, b, c, d);\n}\nfunction uint8ToUint32(input) {\n if (input.length === 0) {\n return new Uint32Array();\n }\n const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0);\n for (let i = 0; i < input.length; i++) {\n output[i >> 2] |= (input[i] & 0xff) << ((i % 4) * 8);\n }\n return output;\n}\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\nfunction bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nexport default md5;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport function stringToBytes(str) {\n str = unescape(encodeURIComponent(str));\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n return bytes;\n}\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(version, hash, value, namespace, buf, offset) {\n const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace;\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n if (namespace?.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n }\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\n", "import md5 from './md5.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v3(value, namespace, buf, offset) {\n return v35(0x30, md5, value, namespace, buf, offset);\n}\nv3.DNS = DNS;\nv3.URL = URL;\nexport default v3;\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n", "function f(s, x, y, z) {\n switch (s) {\n case 0:\n return (x & y) ^ (~x & z);\n case 1:\n return x ^ y ^ z;\n case 2:\n return (x & y) ^ (x & z) ^ (y & z);\n case 3:\n return x ^ y ^ z;\n }\n}\nfunction ROTL(x, n) {\n return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n const newBytes = new Uint8Array(bytes.length + 1);\n newBytes.set(bytes);\n newBytes[bytes.length] = 0x80;\n bytes = newBytes;\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n for (let j = 0; j < 16; ++j) {\n arr[j] =\n (bytes[i * 64 + j * 4] << 24) |\n (bytes[i * 64 + j * 4 + 1] << 16) |\n (bytes[i * 64 + j * 4 + 2] << 8) |\n bytes[i * 64 + j * 4 + 3];\n }\n M[i] = arr;\n }\n M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n }\n return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexport default sha1;\n", "import sha1 from './sha1.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v5(value, namespace, buf, offset) {\n return v35(0x50, sha1, value, namespace, buf, offset);\n}\nv5.DNS = DNS;\nv5.URL = URL;\nexport default v5;\n", "import { unsafeStringify } from './stringify.js';\nimport v1 from './v1.js';\nimport v1ToV6 from './v1ToV6.js';\nfunction v6(options, buf, offset) {\n options ??= {};\n offset ??= 0;\n let bytes = v1({ ...options, _v6: true }, new Uint8Array(16));\n bytes = v1ToV6(bytes);\n if (buf) {\n for (let i = 0; i < 16; i++) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\nexport default v6;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v6ToV1(uuid) {\n const v6Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n const v1Bytes = _v6ToV1(v6Bytes);\n return typeof uuid === 'string' ? unsafeStringify(v1Bytes) : v1Bytes;\n}\nfunction _v6ToV1(v6Bytes) {\n return Uint8Array.of(((v6Bytes[3] & 0x0f) << 4) | ((v6Bytes[4] >> 4) & 0x0f), ((v6Bytes[4] & 0x0f) << 4) | ((v6Bytes[5] & 0xf0) >> 4), ((v6Bytes[5] & 0x0f) << 4) | (v6Bytes[6] & 0x0f), v6Bytes[7], ((v6Bytes[1] & 0x0f) << 4) | ((v6Bytes[2] & 0xf0) >> 4), ((v6Bytes[2] & 0x0f) << 4) | ((v6Bytes[3] & 0xf0) >> 4), 0x10 | ((v6Bytes[0] & 0xf0) >> 4), ((v6Bytes[0] & 0x0f) << 4) | ((v6Bytes[1] & 0xf0) >> 4), v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v7(options, buf, offset) {\n let bytes;\n if (options) {\n bytes = v7Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.seq, buf, offset);\n }\n else {\n const now = Date.now();\n const rnds = rng();\n updateV7State(_state, now, rnds);\n bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);\n }\n return buf ? bytes : unsafeStringify(bytes);\n}\nexport function updateV7State(state, now, rnds) {\n state.msecs ??= -Infinity;\n state.seq ??= 0;\n if (now > state.msecs) {\n state.seq = (rnds[6] << 23) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n state.msecs = now;\n }\n else {\n state.seq = (state.seq + 1) | 0;\n if (state.seq === 0) {\n state.msecs++;\n }\n }\n return state;\n}\nfunction v7Bytes(rnds, msecs, seq, buf, offset = 0) {\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n }\n msecs ??= Date.now();\n seq ??= ((rnds[6] * 0x7f) << 24) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n buf[offset++] = (msecs / 0x10000000000) & 0xff;\n buf[offset++] = (msecs / 0x100000000) & 0xff;\n buf[offset++] = (msecs / 0x1000000) & 0xff;\n buf[offset++] = (msecs / 0x10000) & 0xff;\n buf[offset++] = (msecs / 0x100) & 0xff;\n buf[offset++] = msecs & 0xff;\n buf[offset++] = 0x70 | ((seq >>> 28) & 0x0f);\n buf[offset++] = (seq >>> 20) & 0xff;\n buf[offset++] = 0x80 | ((seq >>> 14) & 0x3f);\n buf[offset++] = (seq >>> 6) & 0xff;\n buf[offset++] = ((seq << 2) & 0xff) | (rnds[10] & 0x03);\n buf[offset++] = rnds[11];\n buf[offset++] = rnds[12];\n buf[offset++] = rnds[13];\n buf[offset++] = rnds[14];\n buf[offset++] = rnds[15];\n return buf;\n}\nexport default v7;\n", "import validate from './validate.js';\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n return parseInt(uuid.slice(14, 15), 16);\n}\nexport default version;\n"], + "mappings": "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", + "names": ["v1Bytes", "version", "v1Bytes", "_state"] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js new file mode 100644 index 0000000..e26d981 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js @@ -0,0 +1,1640 @@ +import { + __commonJS, + __toESM +} from "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js +var require_sourcemap_codec_umd = __commonJS({ + "../../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js"(exports, module) { + (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.sourcemapCodec = {})); + })(exports, function(exports2) { + "use strict"; + const comma = ",".charCodeAt(0); + const semicolon = ";".charCodeAt(0); + const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + const intToChar = new Uint8Array(64); + const charToInt = new Uint8Array(128); + for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; + } + function decodeInteger(reader, relative) { + let value = 0; + let shift = 0; + let integer = 0; + do { + const c = reader.next(); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + const shouldNegate = value & 1; + value >>>= 1; + if (shouldNegate) { + value = -2147483648 | -value; + } + return relative + value; + } + function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? -delta << 1 | 1 : delta << 1; + do { + let clamped = delta & 31; + delta >>>= 5; + if (delta > 0) + clamped |= 32; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; + } + function hasMoreVlq(reader, max) { + if (reader.pos >= max) + return false; + return reader.peek() !== comma; + } + const bufLength = 1024 * 16; + const td = typeof TextDecoder !== "undefined" ? new TextDecoder() : typeof Buffer !== "undefined" ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + } + } : { + decode(buf) { + let out = ""; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + } + }; + class StringWriter { + constructor() { + this.pos = 0; + this.out = ""; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } + } + class StringReader { + constructor(buffer) { + this.pos = 0; + this.buffer = buffer; + } + next() { + return this.buffer.charCodeAt(this.pos++); + } + peek() { + return this.buffer.charCodeAt(this.pos); + } + indexOf(char) { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } + } + const EMPTY = []; + function decodeOriginalScopes(input) { + const { length } = input; + const reader = new StringReader(input); + const scopes = []; + const stack = []; + let line = 0; + for (; reader.pos < length; reader.pos++) { + line = decodeInteger(reader, line); + const column = decodeInteger(reader, 0); + if (!hasMoreVlq(reader, length)) { + const last = stack.pop(); + last[2] = line; + last[3] = column; + continue; + } + const kind = decodeInteger(reader, 0); + const fields = decodeInteger(reader, 0); + const hasName = fields & 1; + const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]; + let vars = EMPTY; + if (hasMoreVlq(reader, length)) { + vars = []; + do { + const varsIndex = decodeInteger(reader, 0); + vars.push(varsIndex); + } while (hasMoreVlq(reader, length)); + } + scope.vars = vars; + scopes.push(scope); + stack.push(scope); + } + return scopes; + } + function encodeOriginalScopes(scopes) { + const writer = new StringWriter(); + for (let i = 0; i < scopes.length; ) { + i = _encodeOriginalScopes(scopes, i, writer, [0]); + } + return writer.flush(); + } + function _encodeOriginalScopes(scopes, index, writer, state) { + const scope = scopes[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; + if (index > 0) + writer.write(comma); + state[0] = encodeInteger(writer, startLine, state[0]); + encodeInteger(writer, startColumn, 0); + encodeInteger(writer, kind, 0); + const fields = scope.length === 6 ? 1 : 0; + encodeInteger(writer, fields, 0); + if (scope.length === 6) + encodeInteger(writer, scope[5], 0); + for (const v of vars) { + encodeInteger(writer, v, 0); + } + for (index++; index < scopes.length; ) { + const next = scopes[index]; + const { 0: l, 1: c } = next; + if (l > endLine || l === endLine && c >= endColumn) { + break; + } + index = _encodeOriginalScopes(scopes, index, writer, state); + } + writer.write(comma); + state[0] = encodeInteger(writer, endLine, state[0]); + encodeInteger(writer, endColumn, 0); + return index; + } + function decodeGeneratedRanges(input) { + const { length } = input; + const reader = new StringReader(input); + const ranges = []; + const stack = []; + let genLine = 0; + let definitionSourcesIndex = 0; + let definitionScopeIndex = 0; + let callsiteSourcesIndex = 0; + let callsiteLine = 0; + let callsiteColumn = 0; + let bindingLine = 0; + let bindingColumn = 0; + do { + const semi = reader.indexOf(";"); + let genColumn = 0; + for (; reader.pos < semi; reader.pos++) { + genColumn = decodeInteger(reader, genColumn); + if (!hasMoreVlq(reader, semi)) { + const last = stack.pop(); + last[2] = genLine; + last[3] = genColumn; + continue; + } + const fields = decodeInteger(reader, 0); + const hasDefinition = fields & 1; + const hasCallsite = fields & 2; + const hasScope = fields & 4; + let callsite = null; + let bindings = EMPTY; + let range; + if (hasDefinition) { + const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); + definitionScopeIndex = decodeInteger(reader, definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0); + definitionSourcesIndex = defSourcesIndex; + range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex]; + } else { + range = [genLine, genColumn, 0, 0]; + } + range.isScope = !!hasScope; + if (hasCallsite) { + const prevCsi = callsiteSourcesIndex; + const prevLine = callsiteLine; + callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); + const sameSource = prevCsi === callsiteSourcesIndex; + callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); + callsiteColumn = decodeInteger(reader, sameSource && prevLine === callsiteLine ? callsiteColumn : 0); + callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; + } + range.callsite = callsite; + if (hasMoreVlq(reader, semi)) { + bindings = []; + do { + bindingLine = genLine; + bindingColumn = genColumn; + const expressionsCount = decodeInteger(reader, 0); + let expressionRanges; + if (expressionsCount < -1) { + expressionRanges = [[decodeInteger(reader, 0)]]; + for (let i = -1; i > expressionsCount; i--) { + const prevBl = bindingLine; + bindingLine = decodeInteger(reader, bindingLine); + bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); + const expression = decodeInteger(reader, 0); + expressionRanges.push([expression, bindingLine, bindingColumn]); + } + } else { + expressionRanges = [[expressionsCount]]; + } + bindings.push(expressionRanges); + } while (hasMoreVlq(reader, semi)); + } + range.bindings = bindings; + ranges.push(range); + stack.push(range); + } + genLine++; + reader.pos = semi + 1; + } while (reader.pos < length); + return ranges; + } + function encodeGeneratedRanges(ranges) { + if (ranges.length === 0) + return ""; + const writer = new StringWriter(); + for (let i = 0; i < ranges.length; ) { + i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); + } + return writer.flush(); + } + function _encodeGeneratedRanges(ranges, index, writer, state) { + const range = ranges[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, isScope, callsite, bindings } = range; + if (state[0] < startLine) { + catchupLine(writer, state[0], startLine); + state[0] = startLine; + state[1] = 0; + } else if (index > 0) { + writer.write(comma); + } + state[1] = encodeInteger(writer, range[1], state[1]); + const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0); + encodeInteger(writer, fields, 0); + if (range.length === 6) { + const { 4: sourcesIndex, 5: scopesIndex } = range; + if (sourcesIndex !== state[2]) { + state[3] = 0; + } + state[2] = encodeInteger(writer, sourcesIndex, state[2]); + state[3] = encodeInteger(writer, scopesIndex, state[3]); + } + if (callsite) { + const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite; + if (sourcesIndex !== state[4]) { + state[5] = 0; + state[6] = 0; + } else if (callLine !== state[5]) { + state[6] = 0; + } + state[4] = encodeInteger(writer, sourcesIndex, state[4]); + state[5] = encodeInteger(writer, callLine, state[5]); + state[6] = encodeInteger(writer, callColumn, state[6]); + } + if (bindings) { + for (const binding of bindings) { + if (binding.length > 1) + encodeInteger(writer, -binding.length, 0); + const expression = binding[0][0]; + encodeInteger(writer, expression, 0); + let bindingStartLine = startLine; + let bindingStartColumn = startColumn; + for (let i = 1; i < binding.length; i++) { + const expRange = binding[i]; + bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine); + bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn); + encodeInteger(writer, expRange[0], 0); + } + } + } + for (index++; index < ranges.length; ) { + const next = ranges[index]; + const { 0: l, 1: c } = next; + if (l > endLine || l === endLine && c >= endColumn) { + break; + } + index = _encodeGeneratedRanges(ranges, index, writer, state); + } + if (state[0] < endLine) { + catchupLine(writer, state[0], endLine); + state[0] = endLine; + state[1] = 0; + } else { + writer.write(comma); + } + state[1] = encodeInteger(writer, endColumn, state[1]); + return index; + } + function catchupLine(writer, lastLine, line) { + do { + writer.write(semicolon); + } while (++lastLine < line); + } + function decode(mappings) { + const { length } = mappings; + const reader = new StringReader(mappings); + const decoded = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + do { + const semi = reader.indexOf(";"); + const line = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + while (reader.pos < semi) { + let seg; + genColumn = decodeInteger(reader, genColumn); + if (genColumn < lastCol) + sorted = false; + lastCol = genColumn; + if (hasMoreVlq(reader, semi)) { + sourcesIndex = decodeInteger(reader, sourcesIndex); + sourceLine = decodeInteger(reader, sourceLine); + sourceColumn = decodeInteger(reader, sourceColumn); + if (hasMoreVlq(reader, semi)) { + namesIndex = decodeInteger(reader, namesIndex); + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; + } else { + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; + } + } else { + seg = [genColumn]; + } + line.push(seg); + reader.pos++; + } + if (!sorted) + sort(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + return decoded; + } + function sort(line) { + line.sort(sortComparator); + } + function sortComparator(a, b) { + return a[0] - b[0]; + } + function encode2(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) + writer.write(semicolon); + if (line.length === 0) + continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) + writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) + continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) + continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); + } + exports2.decode = decode; + exports2.decodeGeneratedRanges = decodeGeneratedRanges; + exports2.decodeOriginalScopes = decodeOriginalScopes; + exports2.encode = encode2; + exports2.encodeGeneratedRanges = encodeGeneratedRanges; + exports2.encodeOriginalScopes = encodeOriginalScopes; + Object.defineProperty(exports2, "__esModule", { value: true }); + }); + } +}); + +// ../../node_modules/magic-string/dist/magic-string.es.mjs +var import_sourcemap_codec = __toESM(require_sourcemap_codec_umd(), 1); +var BitSet = class _BitSet { + constructor(arg) { + this.bits = arg instanceof _BitSet ? arg.bits.slice() : []; + } + add(n2) { + this.bits[n2 >> 5] |= 1 << (n2 & 31); + } + has(n2) { + return !!(this.bits[n2 >> 5] & 1 << (n2 & 31)); + } +}; +var Chunk = class _Chunk { + constructor(start, end, content) { + this.start = start; + this.end = end; + this.original = content; + this.intro = ""; + this.outro = ""; + this.content = content; + this.storeName = false; + this.edited = false; + { + this.previous = null; + this.next = null; + } + } + appendLeft(content) { + this.outro += content; + } + appendRight(content) { + this.intro = this.intro + content; + } + clone() { + const chunk = new _Chunk(this.start, this.end, this.original); + chunk.intro = this.intro; + chunk.outro = this.outro; + chunk.content = this.content; + chunk.storeName = this.storeName; + chunk.edited = this.edited; + return chunk; + } + contains(index) { + return this.start < index && index < this.end; + } + eachNext(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.next; + } + } + eachPrevious(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.previous; + } + } + edit(content, storeName, contentOnly) { + this.content = content; + if (!contentOnly) { + this.intro = ""; + this.outro = ""; + } + this.storeName = storeName; + this.edited = true; + return this; + } + prependLeft(content) { + this.outro = content + this.outro; + } + prependRight(content) { + this.intro = content + this.intro; + } + reset() { + this.intro = ""; + this.outro = ""; + if (this.edited) { + this.content = this.original; + this.storeName = false; + this.edited = false; + } + } + split(index) { + const sliceIndex = index - this.start; + const originalBefore = this.original.slice(0, sliceIndex); + const originalAfter = this.original.slice(sliceIndex); + this.original = originalBefore; + const newChunk = new _Chunk(index, this.end, originalAfter); + newChunk.outro = this.outro; + this.outro = ""; + this.end = index; + if (this.edited) { + newChunk.edit("", false); + this.content = ""; + } else { + this.content = originalBefore; + } + newChunk.next = this.next; + if (newChunk.next) newChunk.next.previous = newChunk; + newChunk.previous = this; + this.next = newChunk; + return newChunk; + } + toString() { + return this.intro + this.content + this.outro; + } + trimEnd(rx) { + this.outro = this.outro.replace(rx, ""); + if (this.outro.length) return true; + const trimmed = this.content.replace(rx, ""); + if (trimmed.length) { + if (trimmed !== this.content) { + this.split(this.start + trimmed.length).edit("", void 0, true); + if (this.edited) { + this.edit(trimmed, this.storeName, true); + } + } + return true; + } else { + this.edit("", void 0, true); + this.intro = this.intro.replace(rx, ""); + if (this.intro.length) return true; + } + } + trimStart(rx) { + this.intro = this.intro.replace(rx, ""); + if (this.intro.length) return true; + const trimmed = this.content.replace(rx, ""); + if (trimmed.length) { + if (trimmed !== this.content) { + const newChunk = this.split(this.end - trimmed.length); + if (this.edited) { + newChunk.edit(trimmed, this.storeName, true); + } + this.edit("", void 0, true); + } + return true; + } else { + this.edit("", void 0, true); + this.outro = this.outro.replace(rx, ""); + if (this.outro.length) return true; + } + } +}; +function getBtoa() { + if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") { + return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); + } else if (typeof Buffer === "function") { + return (str) => Buffer.from(str, "utf-8").toString("base64"); + } else { + return () => { + throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported."); + }; + } +} +var btoa = getBtoa(); +var SourceMap = class { + constructor(properties) { + this.version = 3; + this.file = properties.file; + this.sources = properties.sources; + this.sourcesContent = properties.sourcesContent; + this.names = properties.names; + this.mappings = (0, import_sourcemap_codec.encode)(properties.mappings); + if (typeof properties.x_google_ignoreList !== "undefined") { + this.x_google_ignoreList = properties.x_google_ignoreList; + } + if (typeof properties.debugId !== "undefined") { + this.debugId = properties.debugId; + } + } + toString() { + return JSON.stringify(this); + } + toUrl() { + return "data:application/json;charset=utf-8;base64," + btoa(this.toString()); + } +}; +function guessIndent(code) { + const lines = code.split("\n"); + const tabbed = lines.filter((line) => /^\t+/.test(line)); + const spaced = lines.filter((line) => /^ {2,}/.test(line)); + if (tabbed.length === 0 && spaced.length === 0) { + return null; + } + if (tabbed.length >= spaced.length) { + return " "; + } + const min = spaced.reduce((previous, current) => { + const numSpaces = /^ +/.exec(current)[0].length; + return Math.min(numSpaces, previous); + }, Infinity); + return new Array(min + 1).join(" "); +} +function getRelativePath(from, to) { + const fromParts = from.split(/[/\\]/); + const toParts = to.split(/[/\\]/); + fromParts.pop(); + while (fromParts[0] === toParts[0]) { + fromParts.shift(); + toParts.shift(); + } + if (fromParts.length) { + let i = fromParts.length; + while (i--) fromParts[i] = ".."; + } + return fromParts.concat(toParts).join("/"); +} +var toString = Object.prototype.toString; +function isObject(thing) { + return toString.call(thing) === "[object Object]"; +} +function getLocator(source) { + const originalLines = source.split("\n"); + const lineOffsets = []; + for (let i = 0, pos = 0; i < originalLines.length; i++) { + lineOffsets.push(pos); + pos += originalLines[i].length + 1; + } + return function locate(index) { + let i = 0; + let j = lineOffsets.length; + while (i < j) { + const m = i + j >> 1; + if (index < lineOffsets[m]) { + j = m; + } else { + i = m + 1; + } + } + const line = i - 1; + const column = index - lineOffsets[line]; + return { line, column }; + }; +} +var wordRegex = /\w/; +var Mappings = class { + constructor(hires) { + this.hires = hires; + this.generatedCodeLine = 0; + this.generatedCodeColumn = 0; + this.raw = []; + this.rawSegments = this.raw[this.generatedCodeLine] = []; + this.pending = null; + } + addEdit(sourceIndex, content, loc, nameIndex) { + if (content.length) { + const contentLengthMinusOne = content.length - 1; + let contentLineEnd = content.indexOf("\n", 0); + let previousContentLineEnd = -1; + while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { + const segment2 = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment2.push(nameIndex); + } + this.rawSegments.push(segment2); + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + previousContentLineEnd = contentLineEnd; + contentLineEnd = content.indexOf("\n", contentLineEnd + 1); + } + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + this.advance(content.slice(previousContentLineEnd + 1)); + } else if (this.pending) { + this.rawSegments.push(this.pending); + this.advance(content); + } + this.pending = null; + } + addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { + let originalCharIndex = chunk.start; + let first = true; + let charInHiresBoundary = false; + while (originalCharIndex < chunk.end) { + if (original[originalCharIndex] === "\n") { + loc.line += 1; + loc.column = 0; + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + first = true; + charInHiresBoundary = false; + } else { + if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (this.hires === "boundary") { + if (wordRegex.test(original[originalCharIndex])) { + if (!charInHiresBoundary) { + this.rawSegments.push(segment); + charInHiresBoundary = true; + } + } else { + this.rawSegments.push(segment); + charInHiresBoundary = false; + } + } else { + this.rawSegments.push(segment); + } + } + loc.column += 1; + this.generatedCodeColumn += 1; + first = false; + } + originalCharIndex += 1; + } + this.pending = null; + } + advance(str) { + if (!str) return; + const lines = str.split("\n"); + if (lines.length > 1) { + for (let i = 0; i < lines.length - 1; i++) { + this.generatedCodeLine++; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + } + this.generatedCodeColumn = 0; + } + this.generatedCodeColumn += lines[lines.length - 1].length; + } +}; +var n = "\n"; +var warned = { + insertLeft: false, + insertRight: false, + storeName: false +}; +var MagicString = class _MagicString { + constructor(string, options = {}) { + const chunk = new Chunk(0, string.length, string); + Object.defineProperties(this, { + original: { writable: true, value: string }, + outro: { writable: true, value: "" }, + intro: { writable: true, value: "" }, + firstChunk: { writable: true, value: chunk }, + lastChunk: { writable: true, value: chunk }, + lastSearchedChunk: { writable: true, value: chunk }, + byStart: { writable: true, value: {} }, + byEnd: { writable: true, value: {} }, + filename: { writable: true, value: options.filename }, + indentExclusionRanges: { writable: true, value: options.indentExclusionRanges }, + sourcemapLocations: { writable: true, value: new BitSet() }, + storedNames: { writable: true, value: {} }, + indentStr: { writable: true, value: void 0 }, + ignoreList: { writable: true, value: options.ignoreList }, + offset: { writable: true, value: options.offset || 0 } + }); + this.byStart[0] = chunk; + this.byEnd[string.length] = chunk; + } + addSourcemapLocation(char) { + this.sourcemapLocations.add(char); + } + append(content) { + if (typeof content !== "string") throw new TypeError("outro content must be a string"); + this.outro += content; + return this; + } + appendLeft(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byEnd[index]; + if (chunk) { + chunk.appendLeft(content); + } else { + this.intro += content; + } + return this; + } + appendRight(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byStart[index]; + if (chunk) { + chunk.appendRight(content); + } else { + this.outro += content; + } + return this; + } + clone() { + const cloned = new _MagicString(this.original, { filename: this.filename, offset: this.offset }); + let originalChunk = this.firstChunk; + let clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone(); + while (originalChunk) { + cloned.byStart[clonedChunk.start] = clonedChunk; + cloned.byEnd[clonedChunk.end] = clonedChunk; + const nextOriginalChunk = originalChunk.next; + const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); + if (nextClonedChunk) { + clonedChunk.next = nextClonedChunk; + nextClonedChunk.previous = clonedChunk; + clonedChunk = nextClonedChunk; + } + originalChunk = nextOriginalChunk; + } + cloned.lastChunk = clonedChunk; + if (this.indentExclusionRanges) { + cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); + } + cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); + cloned.intro = this.intro; + cloned.outro = this.outro; + return cloned; + } + generateDecodedMap(options) { + options = options || {}; + const sourceIndex = 0; + const names = Object.keys(this.storedNames); + const mappings = new Mappings(options.hires); + const locate = getLocator(this.original); + if (this.intro) { + mappings.advance(this.intro); + } + this.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + if (chunk.intro.length) mappings.advance(chunk.intro); + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1 + ); + } else { + mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); + } + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + return { + file: options.file ? options.file.split(/[/\\]/).pop() : void 0, + sources: [ + options.source ? getRelativePath(options.file || "", options.source) : options.file || "" + ], + sourcesContent: options.includeContent ? [this.original] : void 0, + names, + mappings: mappings.raw, + x_google_ignoreList: this.ignoreList ? [sourceIndex] : void 0 + }; + } + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + _ensureindentStr() { + if (this.indentStr === void 0) { + this.indentStr = guessIndent(this.original); + } + } + _getRawIndentString() { + this._ensureindentStr(); + return this.indentStr; + } + getIndentString() { + this._ensureindentStr(); + return this.indentStr === null ? " " : this.indentStr; + } + indent(indentStr, options) { + const pattern = /^[^\r\n]/gm; + if (isObject(indentStr)) { + options = indentStr; + indentStr = void 0; + } + if (indentStr === void 0) { + this._ensureindentStr(); + indentStr = this.indentStr || " "; + } + if (indentStr === "") return this; + options = options || {}; + const isExcluded = {}; + if (options.exclude) { + const exclusions = typeof options.exclude[0] === "number" ? [options.exclude] : options.exclude; + exclusions.forEach((exclusion) => { + for (let i = exclusion[0]; i < exclusion[1]; i += 1) { + isExcluded[i] = true; + } + }); + } + let shouldIndentNextCharacter = options.indentStart !== false; + const replacer = (match) => { + if (shouldIndentNextCharacter) return `${indentStr}${match}`; + shouldIndentNextCharacter = true; + return match; + }; + this.intro = this.intro.replace(pattern, replacer); + let charIndex = 0; + let chunk = this.firstChunk; + while (chunk) { + const end = chunk.end; + if (chunk.edited) { + if (!isExcluded[charIndex]) { + chunk.content = chunk.content.replace(pattern, replacer); + if (chunk.content.length) { + shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === "\n"; + } + } + } else { + charIndex = chunk.start; + while (charIndex < end) { + if (!isExcluded[charIndex]) { + const char = this.original[charIndex]; + if (char === "\n") { + shouldIndentNextCharacter = true; + } else if (char !== "\r" && shouldIndentNextCharacter) { + shouldIndentNextCharacter = false; + if (charIndex === chunk.start) { + chunk.prependRight(indentStr); + } else { + this._splitChunk(chunk, charIndex); + chunk = chunk.next; + chunk.prependRight(indentStr); + } + } + } + charIndex += 1; + } + } + charIndex = chunk.end; + chunk = chunk.next; + } + this.outro = this.outro.replace(pattern, replacer); + return this; + } + insert() { + throw new Error( + "magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)" + ); + } + insertLeft(index, content) { + if (!warned.insertLeft) { + console.warn( + "magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead" + ); + warned.insertLeft = true; + } + return this.appendLeft(index, content); + } + insertRight(index, content) { + if (!warned.insertRight) { + console.warn( + "magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead" + ); + warned.insertRight = true; + } + return this.prependRight(index, content); + } + move(start, end, index) { + start = start + this.offset; + end = end + this.offset; + index = index + this.offset; + if (index >= start && index <= end) throw new Error("Cannot move a selection inside itself"); + this._split(start); + this._split(end); + this._split(index); + const first = this.byStart[start]; + const last = this.byEnd[end]; + const oldLeft = first.previous; + const oldRight = last.next; + const newRight = this.byStart[index]; + if (!newRight && last === this.lastChunk) return this; + const newLeft = newRight ? newRight.previous : this.lastChunk; + if (oldLeft) oldLeft.next = oldRight; + if (oldRight) oldRight.previous = oldLeft; + if (newLeft) newLeft.next = first; + if (newRight) newRight.previous = last; + if (!first.previous) this.firstChunk = last.next; + if (!last.next) { + this.lastChunk = first.previous; + this.lastChunk.next = null; + } + first.previous = newLeft; + last.next = newRight || null; + if (!newLeft) this.firstChunk = first; + if (!newRight) this.lastChunk = last; + return this; + } + overwrite(start, end, content, options) { + options = options || {}; + return this.update(start, end, content, { ...options, overwrite: !options.contentOnly }); + } + update(start, end, content, options) { + start = start + this.offset; + end = end + this.offset; + if (typeof content !== "string") throw new TypeError("replacement content must be a string"); + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + if (end > this.original.length) throw new Error("end is out of bounds"); + if (start === end) + throw new Error( + "Cannot overwrite a zero-length range – use appendLeft or prependRight instead" + ); + this._split(start); + this._split(end); + if (options === true) { + if (!warned.storeName) { + console.warn( + "The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string" + ); + warned.storeName = true; + } + options = { storeName: true }; + } + const storeName = options !== void 0 ? options.storeName : false; + const overwrite = options !== void 0 ? options.overwrite : false; + if (storeName) { + const original = this.original.slice(start, end); + Object.defineProperty(this.storedNames, original, { + writable: true, + value: true, + enumerable: true + }); + } + const first = this.byStart[start]; + const last = this.byEnd[end]; + if (first) { + let chunk = first; + while (chunk !== last) { + if (chunk.next !== this.byStart[chunk.end]) { + throw new Error("Cannot overwrite across a split point"); + } + chunk = chunk.next; + chunk.edit("", false); + } + first.edit(content, storeName, !overwrite); + } else { + const newChunk = new Chunk(start, end, "").edit(content, storeName); + last.next = newChunk; + newChunk.previous = last; + } + return this; + } + prepend(content) { + if (typeof content !== "string") throw new TypeError("outro content must be a string"); + this.intro = content + this.intro; + return this; + } + prependLeft(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byEnd[index]; + if (chunk) { + chunk.prependLeft(content); + } else { + this.intro = content + this.intro; + } + return this; + } + prependRight(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byStart[index]; + if (chunk) { + chunk.prependRight(content); + } else { + this.outro = content + this.outro; + } + return this; + } + remove(start, end) { + start = start + this.offset; + end = end + this.offset; + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + if (start === end) return this; + if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); + if (start > end) throw new Error("end must be greater than start"); + this._split(start); + this._split(end); + let chunk = this.byStart[start]; + while (chunk) { + chunk.intro = ""; + chunk.outro = ""; + chunk.edit(""); + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + reset(start, end) { + start = start + this.offset; + end = end + this.offset; + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + if (start === end) return this; + if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); + if (start > end) throw new Error("end must be greater than start"); + this._split(start); + this._split(end); + let chunk = this.byStart[start]; + while (chunk) { + chunk.reset(); + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1]; + let chunk = this.lastChunk; + do { + if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; + if (chunk.content.length) return chunk.content[chunk.content.length - 1]; + if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; + } while (chunk = chunk.previous); + if (this.intro.length) return this.intro[this.intro.length - 1]; + return ""; + } + lastLine() { + let lineIndex = this.outro.lastIndexOf(n); + if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); + let lineStr = this.outro; + let chunk = this.lastChunk; + do { + if (chunk.outro.length > 0) { + lineIndex = chunk.outro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.outro + lineStr; + } + if (chunk.content.length > 0) { + lineIndex = chunk.content.lastIndexOf(n); + if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; + lineStr = chunk.content + lineStr; + } + if (chunk.intro.length > 0) { + lineIndex = chunk.intro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.intro + lineStr; + } + } while (chunk = chunk.previous); + lineIndex = this.intro.lastIndexOf(n); + if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; + return this.intro + lineStr; + } + slice(start = 0, end = this.original.length - this.offset) { + start = start + this.offset; + end = end + this.offset; + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + let result = ""; + let chunk = this.firstChunk; + while (chunk && (chunk.start > start || chunk.end <= start)) { + if (chunk.start < end && chunk.end >= end) { + return result; + } + chunk = chunk.next; + } + if (chunk && chunk.edited && chunk.start !== start) + throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); + const startChunk = chunk; + while (chunk) { + if (chunk.intro && (startChunk !== chunk || chunk.start === start)) { + result += chunk.intro; + } + const containsEnd = chunk.start < end && chunk.end >= end; + if (containsEnd && chunk.edited && chunk.end !== end) + throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); + const sliceStart = startChunk === chunk ? start - chunk.start : 0; + const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; + result += chunk.content.slice(sliceStart, sliceEnd); + if (chunk.outro && (!containsEnd || chunk.end === end)) { + result += chunk.outro; + } + if (containsEnd) { + break; + } + chunk = chunk.next; + } + return result; + } + // TODO deprecate this? not really very useful + snip(start, end) { + const clone = this.clone(); + clone.remove(0, start); + clone.remove(end, clone.original.length); + return clone; + } + _split(index) { + if (this.byStart[index] || this.byEnd[index]) return; + let chunk = this.lastSearchedChunk; + const searchForward = index > chunk.end; + while (chunk) { + if (chunk.contains(index)) return this._splitChunk(chunk, index); + chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; + } + } + _splitChunk(chunk, index) { + if (chunk.edited && chunk.content.length) { + const loc = getLocator(this.original)(index); + throw new Error( + `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")` + ); + } + const newChunk = chunk.split(index); + this.byEnd[index] = chunk; + this.byStart[index] = newChunk; + this.byEnd[newChunk.end] = newChunk; + if (chunk === this.lastChunk) this.lastChunk = newChunk; + this.lastSearchedChunk = chunk; + return true; + } + toString() { + let str = this.intro; + let chunk = this.firstChunk; + while (chunk) { + str += chunk.toString(); + chunk = chunk.next; + } + return str + this.outro; + } + isEmpty() { + let chunk = this.firstChunk; + do { + if (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) + return false; + } while (chunk = chunk.next); + return true; + } + length() { + let chunk = this.firstChunk; + let length = 0; + do { + length += chunk.intro.length + chunk.content.length + chunk.outro.length; + } while (chunk = chunk.next); + return length; + } + trimLines() { + return this.trim("[\\r\\n]"); + } + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + trimEndAborted(charType) { + const rx = new RegExp((charType || "\\s") + "+$"); + this.outro = this.outro.replace(rx, ""); + if (this.outro.length) return true; + let chunk = this.lastChunk; + do { + const end = chunk.end; + const aborted = chunk.trimEnd(rx); + if (chunk.end !== end) { + if (this.lastChunk === chunk) { + this.lastChunk = chunk.next; + } + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + if (aborted) return true; + chunk = chunk.previous; + } while (chunk); + return false; + } + trimEnd(charType) { + this.trimEndAborted(charType); + return this; + } + trimStartAborted(charType) { + const rx = new RegExp("^" + (charType || "\\s") + "+"); + this.intro = this.intro.replace(rx, ""); + if (this.intro.length) return true; + let chunk = this.firstChunk; + do { + const end = chunk.end; + const aborted = chunk.trimStart(rx); + if (chunk.end !== end) { + if (chunk === this.lastChunk) this.lastChunk = chunk.next; + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + if (aborted) return true; + chunk = chunk.next; + } while (chunk); + return false; + } + trimStart(charType) { + this.trimStartAborted(charType); + return this; + } + hasChanged() { + return this.original !== this.toString(); + } + _replaceRegexp(searchValue, replacement) { + function getReplacement(match, str) { + if (typeof replacement === "string") { + return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { + if (i === "$") return "$"; + if (i === "&") return match[0]; + const num = +i; + if (num < match.length) return match[+i]; + return `$${i}`; + }); + } else { + return replacement(...match, match.index, str, match.groups); + } + } + function matchAll(re, str) { + let match; + const matches = []; + while (match = re.exec(str)) { + matches.push(match); + } + return matches; + } + if (searchValue.global) { + const matches = matchAll(searchValue, this.original); + matches.forEach((match) => { + if (match.index != null) { + const replacement2 = getReplacement(match, this.original); + if (replacement2 !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement2); + } + } + }); + } else { + const match = this.original.match(searchValue); + if (match && match.index != null) { + const replacement2 = getReplacement(match, this.original); + if (replacement2 !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement2); + } + } + } + return this; + } + _replaceString(string, replacement) { + const { original } = this; + const index = original.indexOf(string); + if (index !== -1) { + this.overwrite(index, index + string.length, replacement); + } + return this; + } + replace(searchValue, replacement) { + if (typeof searchValue === "string") { + return this._replaceString(searchValue, replacement); + } + return this._replaceRegexp(searchValue, replacement); + } + _replaceAllString(string, replacement) { + const { original } = this; + const stringLength = string.length; + for (let index = original.indexOf(string); index !== -1; index = original.indexOf(string, index + stringLength)) { + const previous = original.slice(index, index + stringLength); + if (previous !== replacement) this.overwrite(index, index + stringLength, replacement); + } + return this; + } + replaceAll(searchValue, replacement) { + if (typeof searchValue === "string") { + return this._replaceAllString(searchValue, replacement); + } + if (!searchValue.global) { + throw new TypeError( + "MagicString.prototype.replaceAll called with a non-global RegExp argument" + ); + } + return this._replaceRegexp(searchValue, replacement); + } +}; +var hasOwnProp = Object.prototype.hasOwnProperty; +var Bundle = class _Bundle { + constructor(options = {}) { + this.intro = options.intro || ""; + this.separator = options.separator !== void 0 ? options.separator : "\n"; + this.sources = []; + this.uniqueSources = []; + this.uniqueSourceIndexByFilename = {}; + } + addSource(source) { + if (source instanceof MagicString) { + return this.addSource({ + content: source, + filename: source.filename, + separator: this.separator + }); + } + if (!isObject(source) || !source.content) { + throw new Error( + "bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`" + ); + } + ["filename", "ignoreList", "indentExclusionRanges", "separator"].forEach((option) => { + if (!hasOwnProp.call(source, option)) source[option] = source.content[option]; + }); + if (source.separator === void 0) { + source.separator = this.separator; + } + if (source.filename) { + if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) { + this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length; + this.uniqueSources.push({ filename: source.filename, content: source.content.original }); + } else { + const uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]]; + if (source.content.original !== uniqueSource.content) { + throw new Error(`Illegal source: same filename (${source.filename}), different contents`); + } + } + } + this.sources.push(source); + return this; + } + append(str, options) { + this.addSource({ + content: new MagicString(str), + separator: options && options.separator || "" + }); + return this; + } + clone() { + const bundle = new _Bundle({ + intro: this.intro, + separator: this.separator + }); + this.sources.forEach((source) => { + bundle.addSource({ + filename: source.filename, + content: source.content.clone(), + separator: source.separator + }); + }); + return bundle; + } + generateDecodedMap(options = {}) { + const names = []; + let x_google_ignoreList = void 0; + this.sources.forEach((source) => { + Object.keys(source.content.storedNames).forEach((name) => { + if (!~names.indexOf(name)) names.push(name); + }); + }); + const mappings = new Mappings(options.hires); + if (this.intro) { + mappings.advance(this.intro); + } + this.sources.forEach((source, i) => { + if (i > 0) { + mappings.advance(this.separator); + } + const sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1; + const magicString = source.content; + const locate = getLocator(magicString.original); + if (magicString.intro) { + mappings.advance(magicString.intro); + } + magicString.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + if (chunk.intro.length) mappings.advance(chunk.intro); + if (source.filename) { + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1 + ); + } else { + mappings.addUneditedChunk( + sourceIndex, + chunk, + magicString.original, + loc, + magicString.sourcemapLocations + ); + } + } else { + mappings.advance(chunk.content); + } + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + if (magicString.outro) { + mappings.advance(magicString.outro); + } + if (source.ignoreList && sourceIndex !== -1) { + if (x_google_ignoreList === void 0) { + x_google_ignoreList = []; + } + x_google_ignoreList.push(sourceIndex); + } + }); + return { + file: options.file ? options.file.split(/[/\\]/).pop() : void 0, + sources: this.uniqueSources.map((source) => { + return options.file ? getRelativePath(options.file, source.filename) : source.filename; + }), + sourcesContent: this.uniqueSources.map((source) => { + return options.includeContent ? source.content : null; + }), + names, + mappings: mappings.raw, + x_google_ignoreList + }; + } + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + getIndentString() { + const indentStringCounts = {}; + this.sources.forEach((source) => { + const indentStr = source.content._getRawIndentString(); + if (indentStr === null) return; + if (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0; + indentStringCounts[indentStr] += 1; + }); + return Object.keys(indentStringCounts).sort((a, b) => { + return indentStringCounts[a] - indentStringCounts[b]; + })[0] || " "; + } + indent(indentStr) { + if (!arguments.length) { + indentStr = this.getIndentString(); + } + if (indentStr === "") return this; + let trailingNewline = !this.intro || this.intro.slice(-1) === "\n"; + this.sources.forEach((source, i) => { + const separator = source.separator !== void 0 ? source.separator : this.separator; + const indentStart = trailingNewline || i > 0 && /\r?\n$/.test(separator); + source.content.indent(indentStr, { + exclude: source.indentExclusionRanges, + indentStart + //: trailingNewline || /\r?\n$/.test( separator ) //true///\r?\n/.test( separator ) + }); + trailingNewline = source.content.lastChar() === "\n"; + }); + if (this.intro) { + this.intro = indentStr + this.intro.replace(/^[^\n]/gm, (match, index) => { + return index > 0 ? indentStr + match : match; + }); + } + return this; + } + prepend(str) { + this.intro = str + this.intro; + return this; + } + toString() { + const body = this.sources.map((source, i) => { + const separator = source.separator !== void 0 ? source.separator : this.separator; + const str = (i > 0 ? separator : "") + source.content.toString(); + return str; + }).join(""); + return this.intro + body; + } + isEmpty() { + if (this.intro.length && this.intro.trim()) return false; + if (this.sources.some((source) => !source.content.isEmpty())) return false; + return true; + } + length() { + return this.sources.reduce( + (length, source) => length + source.content.length(), + this.intro.length + ); + } + trimLines() { + return this.trim("[\\r\\n]"); + } + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + trimStart(charType) { + const rx = new RegExp("^" + (charType || "\\s") + "+"); + this.intro = this.intro.replace(rx, ""); + if (!this.intro) { + let source; + let i = 0; + do { + source = this.sources[i++]; + if (!source) { + break; + } + } while (!source.content.trimStartAborted(charType)); + } + return this; + } + trimEnd(charType) { + const rx = new RegExp((charType || "\\s") + "+$"); + let source; + let i = this.sources.length - 1; + do { + source = this.sources[i--]; + if (!source) { + this.intro = this.intro.replace(rx, ""); + break; + } + } while (!source.content.trimEndAborted(charType)); + return this; + } +}; +export { + Bundle, + SourceMap, + MagicString as default +}; +//# sourceMappingURL=vitest___@vitest_snapshot___magic-string.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map new file mode 100644 index 0000000..07d58a1 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/@jridgewell/sourcemap-codec/src/vlq.ts", "../../../../../node_modules/@jridgewell/sourcemap-codec/src/strings.ts", "../../../../../node_modules/@jridgewell/sourcemap-codec/src/scopes.ts", "../../../../../node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts", "../../../../../node_modules/magic-string/src/BitSet.js", "../../../../../node_modules/magic-string/src/Chunk.js", "../../../../../node_modules/magic-string/src/SourceMap.js", "../../../../../node_modules/magic-string/src/utils/guessIndent.js", "../../../../../node_modules/magic-string/src/utils/getRelativePath.js", "../../../../../node_modules/magic-string/src/utils/isObject.js", "../../../../../node_modules/magic-string/src/utils/getLocator.js", "../../../../../node_modules/magic-string/src/utils/Mappings.js", "../../../../../node_modules/magic-string/src/MagicString.js", "../../../../../node_modules/magic-string/src/Bundle.js"], + "sourcesContent": ["import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n", "const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n private declare buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n", "import { StringReader, StringWriter } from './strings';\nimport { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,\n );\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0,\n );\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n state[1] = encodeInteger(writer, range[1], state[1]);\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);\n encodeInteger(writer, expRange[0]!, 0);\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n", "import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly): string;\nexport function encode(decoded: Readonly): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n", "export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n", "export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n", "import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n", "export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n", "export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n", "const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n", "export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n", "const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n", "import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement) this.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n", "import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n"], + "mappings": "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", + "names": ["encode", "n", "segment", "replacement"] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js new file mode 100644 index 0000000..1c189cd --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js @@ -0,0 +1,7 @@ +import { + require_build +} from "./chunk-UCU27OGC.js"; +import "./chunk-UJ726J2L.js"; +import "./chunk-5WRI5ZAA.js"; +export default require_build(); +//# sourceMappingURL=vitest___@vitest_snapshot___pretty-format.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js new file mode 100644 index 0000000..dc9747f --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js @@ -0,0 +1,7 @@ +import { + require_build +} from "./chunk-UCU27OGC.js"; +import "./chunk-UJ726J2L.js"; +import "./chunk-5WRI5ZAA.js"; +export default require_build(); +//# sourceMappingURL=vitest___@vitest_utils___pretty-format.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___chai.js b/packages/ridb/node_modules/.vite/deps/vitest___chai.js new file mode 100644 index 0000000..80e475b --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___chai.js @@ -0,0 +1,3946 @@ +import { + __commonJS, + __toESM +} from "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/assertion-error/index.js +var require_assertion_error = __commonJS({ + "../../node_modules/assertion-error/index.js"(exports, module) { + function exclude() { + var excludes = [].slice.call(arguments); + function excludeProps(res, obj) { + Object.keys(obj).forEach(function(key) { + if (!~excludes.indexOf(key)) res[key] = obj[key]; + }); + } + return function extendExclude() { + var args = [].slice.call(arguments), i = 0, res = {}; + for (; i < args.length; i++) { + excludeProps(res, args[i]); + } + return res; + }; + } + module.exports = AssertionError2; + function AssertionError2(message, _props, ssf) { + var extend = exclude("name", "message", "stack", "constructor", "toJSON"), props = extend(_props || {}); + this.message = message || "Unspecified AssertionError"; + this.showDiff = false; + for (var key in props) { + this[key] = props[key]; + } + ssf = ssf || AssertionError2; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, ssf); + } else { + try { + throw new Error(); + } catch (e) { + this.stack = e.stack; + } + } + } + AssertionError2.prototype = Object.create(Error.prototype); + AssertionError2.prototype.name = "AssertionError"; + AssertionError2.prototype.constructor = AssertionError2; + AssertionError2.prototype.toJSON = function(stack) { + var extend = exclude("constructor", "toJSON", "stack"), props = extend({ name: this.name }, this); + if (false !== stack && this.stack) { + props.stack = this.stack; + } + return props; + }; + } +}); + +// ../../node_modules/pathval/index.js +var require_pathval = __commonJS({ + "../../node_modules/pathval/index.js"(exports, module) { + "use strict"; + function hasProperty(obj, name) { + if (typeof obj === "undefined" || obj === null) { + return false; + } + return name in Object(obj); + } + function parsePath(path) { + var str = path.replace(/([^\\])\[/g, "$1.["); + var parts = str.match(/(\\\.|[^.]+?)+/g); + return parts.map(function mapMatches(value) { + if (value === "constructor" || value === "__proto__" || value === "prototype") { + return {}; + } + var regexp = /^\[(\d+)\]$/; + var mArr = regexp.exec(value); + var parsed = null; + if (mArr) { + parsed = { i: parseFloat(mArr[1]) }; + } else { + parsed = { p: value.replace(/\\([.[\]])/g, "$1") }; + } + return parsed; + }); + } + function internalGetPathValue(obj, parsed, pathDepth) { + var temporaryValue = obj; + var res = null; + pathDepth = typeof pathDepth === "undefined" ? parsed.length : pathDepth; + for (var i = 0; i < pathDepth; i++) { + var part = parsed[i]; + if (temporaryValue) { + if (typeof part.p === "undefined") { + temporaryValue = temporaryValue[part.i]; + } else { + temporaryValue = temporaryValue[part.p]; + } + if (i === pathDepth - 1) { + res = temporaryValue; + } + } + } + return res; + } + function internalSetPathValue(obj, val, parsed) { + var tempObj = obj; + var pathDepth = parsed.length; + var part = null; + for (var i = 0; i < pathDepth; i++) { + var propName = null; + var propVal = null; + part = parsed[i]; + if (i === pathDepth - 1) { + propName = typeof part.p === "undefined" ? part.i : part.p; + tempObj[propName] = val; + } else if (typeof part.p !== "undefined" && tempObj[part.p]) { + tempObj = tempObj[part.p]; + } else if (typeof part.i !== "undefined" && tempObj[part.i]) { + tempObj = tempObj[part.i]; + } else { + var next = parsed[i + 1]; + propName = typeof part.p === "undefined" ? part.i : part.p; + propVal = typeof next.p === "undefined" ? [] : {}; + tempObj[propName] = propVal; + tempObj = tempObj[propName]; + } + } + } + function getPathInfo(obj, path) { + var parsed = parsePath(path); + var last = parsed[parsed.length - 1]; + var info = { + parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj, + name: last.p || last.i, + value: internalGetPathValue(obj, parsed) + }; + info.exists = hasProperty(info.parent, info.name); + return info; + } + function getPathValue(obj, path) { + var info = getPathInfo(obj, path); + return info.value; + } + function setPathValue(obj, path, val) { + var parsed = parsePath(path); + internalSetPathValue(obj, val, parsed); + return obj; + } + module.exports = { + hasProperty, + getPathInfo, + getPathValue, + setPathValue + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/flag.js +var require_flag = __commonJS({ + "../../node_modules/chai/lib/chai/utils/flag.js"(exports, module) { + module.exports = function flag(obj, key, value) { + var flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null)); + if (arguments.length === 3) { + flags[key] = value; + } else { + return flags[key]; + } + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/test.js +var require_test = __commonJS({ + "../../node_modules/chai/lib/chai/utils/test.js"(exports, module) { + var flag = require_flag(); + module.exports = function test(obj, args) { + var negate = flag(obj, "negate"), expr = args[0]; + return negate ? !expr : expr; + }; + } +}); + +// ../../node_modules/type-detect/type-detect.js +var require_type_detect = __commonJS({ + "../../node_modules/type-detect/type-detect.js"(exports, module) { + (function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.typeDetect = factory()); + })(exports, function() { + "use strict"; + var promiseExists = typeof Promise === "function"; + var globalObject = function(Obj) { + if (typeof globalThis === "object") { + return globalThis; + } + Object.defineProperty(Obj, "typeDetectGlobalObject", { + get: function get() { + return this; + }, + configurable: true + }); + var global = typeDetectGlobalObject; + delete Obj.typeDetectGlobalObject; + return global; + }(Object.prototype); + var symbolExists = typeof Symbol !== "undefined"; + var mapExists = typeof Map !== "undefined"; + var setExists = typeof Set !== "undefined"; + var weakMapExists = typeof WeakMap !== "undefined"; + var weakSetExists = typeof WeakSet !== "undefined"; + var dataViewExists = typeof DataView !== "undefined"; + var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== "undefined"; + var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== "undefined"; + var setEntriesExists = setExists && typeof Set.prototype.entries === "function"; + var mapEntriesExists = mapExists && typeof Map.prototype.entries === "function"; + var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Set()).entries()); + var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Map()).entries()); + var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === "function"; + var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]()); + var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === "function"; + var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(""[Symbol.iterator]()); + var toStringLeftSliceLength = 8; + var toStringRightSliceLength = -1; + function typeDetect(obj) { + var typeofObj = typeof obj; + if (typeofObj !== "object") { + return typeofObj; + } + if (obj === null) { + return "null"; + } + if (obj === globalObject) { + return "global"; + } + if (Array.isArray(obj) && (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) { + return "Array"; + } + if (typeof window === "object" && window !== null) { + if (typeof window.location === "object" && obj === window.location) { + return "Location"; + } + if (typeof window.document === "object" && obj === window.document) { + return "Document"; + } + if (typeof window.navigator === "object") { + if (typeof window.navigator.mimeTypes === "object" && obj === window.navigator.mimeTypes) { + return "MimeTypeArray"; + } + if (typeof window.navigator.plugins === "object" && obj === window.navigator.plugins) { + return "PluginArray"; + } + } + if ((typeof window.HTMLElement === "function" || typeof window.HTMLElement === "object") && obj instanceof window.HTMLElement) { + if (obj.tagName === "BLOCKQUOTE") { + return "HTMLQuoteElement"; + } + if (obj.tagName === "TD") { + return "HTMLTableDataCellElement"; + } + if (obj.tagName === "TH") { + return "HTMLTableHeaderCellElement"; + } + } + } + var stringTag = symbolToStringTagExists && obj[Symbol.toStringTag]; + if (typeof stringTag === "string") { + return stringTag; + } + var objPrototype = Object.getPrototypeOf(obj); + if (objPrototype === RegExp.prototype) { + return "RegExp"; + } + if (objPrototype === Date.prototype) { + return "Date"; + } + if (promiseExists && objPrototype === Promise.prototype) { + return "Promise"; + } + if (setExists && objPrototype === Set.prototype) { + return "Set"; + } + if (mapExists && objPrototype === Map.prototype) { + return "Map"; + } + if (weakSetExists && objPrototype === WeakSet.prototype) { + return "WeakSet"; + } + if (weakMapExists && objPrototype === WeakMap.prototype) { + return "WeakMap"; + } + if (dataViewExists && objPrototype === DataView.prototype) { + return "DataView"; + } + if (mapExists && objPrototype === mapIteratorPrototype) { + return "Map Iterator"; + } + if (setExists && objPrototype === setIteratorPrototype) { + return "Set Iterator"; + } + if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) { + return "Array Iterator"; + } + if (stringIteratorExists && objPrototype === stringIteratorPrototype) { + return "String Iterator"; + } + if (objPrototype === null) { + return "Object"; + } + return Object.prototype.toString.call(obj).slice(toStringLeftSliceLength, toStringRightSliceLength); + } + return typeDetect; + }); + } +}); + +// ../../node_modules/chai/lib/chai/utils/expectTypes.js +var require_expectTypes = __commonJS({ + "../../node_modules/chai/lib/chai/utils/expectTypes.js"(exports, module) { + var AssertionError2 = require_assertion_error(); + var flag = require_flag(); + var type = require_type_detect(); + module.exports = function expectTypes(obj, types) { + var flagMsg = flag(obj, "message"); + var ssfi = flag(obj, "ssfi"); + flagMsg = flagMsg ? flagMsg + ": " : ""; + obj = flag(obj, "object"); + types = types.map(function(t) { + return t.toLowerCase(); + }); + types.sort(); + var str = types.map(function(t, index) { + var art = ~["a", "e", "i", "o", "u"].indexOf(t.charAt(0)) ? "an" : "a"; + var or = types.length > 1 && index === types.length - 1 ? "or " : ""; + return or + art + " " + t; + }).join(", "); + var objType = type(obj).toLowerCase(); + if (!types.some(function(expected) { + return objType === expected; + })) { + throw new AssertionError2( + flagMsg + "object tested must be " + str + ", but " + objType + " given", + void 0, + ssfi + ); + } + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/getActual.js +var require_getActual = __commonJS({ + "../../node_modules/chai/lib/chai/utils/getActual.js"(exports, module) { + module.exports = function getActual(obj, args) { + return args.length > 4 ? args[4] : obj._obj; + }; + } +}); + +// ../../node_modules/get-func-name/index.js +var require_get_func_name = __commonJS({ + "../../node_modules/get-func-name/index.js"(exports, module) { + "use strict"; + var toString = Function.prototype.toString; + var functionNameMatch = /\s*function(?:\s|\s*\/\*[^(?:*\/)]+\*\/\s*)*([^\s\(\/]+)/; + var maxFunctionSourceLength = 512; + function getFuncName(aFunc) { + if (typeof aFunc !== "function") { + return null; + } + var name = ""; + if (typeof Function.prototype.name === "undefined" && typeof aFunc.name === "undefined") { + var functionSource = toString.call(aFunc); + if (functionSource.indexOf("(") > maxFunctionSourceLength) { + return name; + } + var match = functionSource.match(functionNameMatch); + if (match) { + name = match[1]; + } + } else { + name = aFunc.name; + } + return name; + } + module.exports = getFuncName; + } +}); + +// vite:cjs-external-facade:loupe +import * as m from "loupe"; +var require_loupe = __commonJS({ + "vite:cjs-external-facade:loupe"(exports, module) { + module.exports = m; + } +}); + +// ../../node_modules/chai/lib/chai/config.js +var require_config = __commonJS({ + "../../node_modules/chai/lib/chai/config.js"(exports, module) { + module.exports = { + /** + * ### config.includeStack + * + * User configurable property, influences whether stack trace + * is included in Assertion error message. Default of false + * suppresses stack trace in the error message. + * + * chai.config.includeStack = true; // enable stack on error + * + * @param {Boolean} + * @api public + */ + includeStack: false, + /** + * ### config.showDiff + * + * User configurable property, influences whether or not + * the `showDiff` flag should be included in the thrown + * AssertionErrors. `false` will always be `false`; `true` + * will be true when the assertion has requested a diff + * be shown. + * + * @param {Boolean} + * @api public + */ + showDiff: true, + /** + * ### config.truncateThreshold + * + * User configurable property, sets length threshold for actual and + * expected values in assertion errors. If this threshold is exceeded, for + * example for large data structures, the value is replaced with something + * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. + * + * Set it to zero if you want to disable truncating altogether. + * + * This is especially userful when doing assertions on arrays: having this + * set to a reasonable large value makes the failure messages readily + * inspectable. + * + * chai.config.truncateThreshold = 0; // disable truncating + * + * @param {Number} + * @api public + */ + truncateThreshold: 40, + /** + * ### config.useProxy + * + * User configurable property, defines if chai will use a Proxy to throw + * an error when a non-existent property is read, which protects users + * from typos when using property-based assertions. + * + * Set it to false if you want to disable this feature. + * + * chai.config.useProxy = false; // disable use of Proxy + * + * This feature is automatically disabled regardless of this config value + * in environments that don't support proxies. + * + * @param {Boolean} + * @api public + */ + useProxy: true, + /** + * ### config.proxyExcludedKeys + * + * User configurable property, defines which properties should be ignored + * instead of throwing an error if they do not exist on the assertion. + * This is only applied if the environment Chai is running in supports proxies and + * if the `useProxy` configuration setting is enabled. + * By default, `then` and `inspect` will not throw an error if they do not exist on the + * assertion object because the `.inspect` property is read by `util.inspect` (for example, when + * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking. + * + * // By default these keys will not throw an error if they do not exist on the assertion object + * chai.config.proxyExcludedKeys = ['then', 'inspect']; + * + * @param {Array} + * @api public + */ + proxyExcludedKeys: ["then", "catch", "inspect", "toJSON"], + /** + * ### config.deepEqual + * + * User configurable property, defines which a custom function to use for deepEqual + * comparisons. + * By default, the function used is the one from the `deep-eql` package without custom comparator. + * + * // use a custom comparator + * chai.config.deepEqual = (expected, actual) => { + * return chai.util.eql(expected, actual, { + * comparator: (expected, actual) => { + * // for non number comparison, use the default behavior + * if(typeof expected !== 'number') return null; + * // allow a difference of 10 between compared numbers + * return typeof actual === 'number' && Math.abs(actual - expected) < 10 + * } + * }) + * }; + * + * @param {Function} + * @api public + */ + deepEqual: null + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/inspect.js +var require_inspect = __commonJS({ + "../../node_modules/chai/lib/chai/utils/inspect.js"(exports, module) { + var getName = require_get_func_name(); + var loupe = require_loupe(); + var config2 = require_config(); + module.exports = inspect; + function inspect(obj, showHidden, depth, colors) { + var options = { + colors, + depth: typeof depth === "undefined" ? 2 : depth, + showHidden, + truncate: config2.truncateThreshold ? config2.truncateThreshold : Infinity + }; + return loupe.inspect(obj, options); + } + } +}); + +// ../../node_modules/chai/lib/chai/utils/objDisplay.js +var require_objDisplay = __commonJS({ + "../../node_modules/chai/lib/chai/utils/objDisplay.js"(exports, module) { + var inspect = require_inspect(); + var config2 = require_config(); + module.exports = function objDisplay(obj) { + var str = inspect(obj), type = Object.prototype.toString.call(obj); + if (config2.truncateThreshold && str.length >= config2.truncateThreshold) { + if (type === "[object Function]") { + return !obj.name || obj.name === "" ? "[Function]" : "[Function: " + obj.name + "]"; + } else if (type === "[object Array]") { + return "[ Array(" + obj.length + ") ]"; + } else if (type === "[object Object]") { + var keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(", ") + ", ..." : keys.join(", "); + return "{ Object (" + kstr + ") }"; + } else { + return str; + } + } else { + return str; + } + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/getMessage.js +var require_getMessage = __commonJS({ + "../../node_modules/chai/lib/chai/utils/getMessage.js"(exports, module) { + var flag = require_flag(); + var getActual = require_getActual(); + var objDisplay = require_objDisplay(); + module.exports = function getMessage(obj, args) { + var negate = flag(obj, "negate"), val = flag(obj, "object"), expected = args[3], actual = getActual(obj, args), msg = negate ? args[2] : args[1], flagMsg = flag(obj, "message"); + if (typeof msg === "function") msg = msg(); + msg = msg || ""; + msg = msg.replace(/#\{this\}/g, function() { + return objDisplay(val); + }).replace(/#\{act\}/g, function() { + return objDisplay(actual); + }).replace(/#\{exp\}/g, function() { + return objDisplay(expected); + }); + return flagMsg ? flagMsg + ": " + msg : msg; + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/transferFlags.js +var require_transferFlags = __commonJS({ + "../../node_modules/chai/lib/chai/utils/transferFlags.js"(exports, module) { + module.exports = function transferFlags(assertion, object, includeAll) { + var flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null)); + if (!object.__flags) { + object.__flags = /* @__PURE__ */ Object.create(null); + } + includeAll = arguments.length === 3 ? includeAll : true; + for (var flag in flags) { + if (includeAll || flag !== "object" && flag !== "ssfi" && flag !== "lockSsfi" && flag != "message") { + object.__flags[flag] = flags[flag]; + } + } + }; + } +}); + +// ../../node_modules/deep-eql/index.js +var require_deep_eql = __commonJS({ + "../../node_modules/deep-eql/index.js"(exports, module) { + "use strict"; + var type = require_type_detect(); + function FakeMap() { + this._key = "chai/deep-eql__" + Math.random() + Date.now(); + } + FakeMap.prototype = { + get: function get(key) { + return key[this._key]; + }, + set: function set(key, value) { + if (Object.isExtensible(key)) { + Object.defineProperty(key, this._key, { + value, + configurable: true + }); + } + } + }; + var MemoizeMap = typeof WeakMap === "function" ? WeakMap : FakeMap; + function memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) { + if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return null; + } + var leftHandMap = memoizeMap.get(leftHandOperand); + if (leftHandMap) { + var result = leftHandMap.get(rightHandOperand); + if (typeof result === "boolean") { + return result; + } + } + return null; + } + function memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) { + if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return; + } + var leftHandMap = memoizeMap.get(leftHandOperand); + if (leftHandMap) { + leftHandMap.set(rightHandOperand, result); + } else { + leftHandMap = new MemoizeMap(); + leftHandMap.set(rightHandOperand, result); + memoizeMap.set(leftHandOperand, leftHandMap); + } + } + module.exports = deepEqual; + module.exports.MemoizeMap = MemoizeMap; + function deepEqual(leftHandOperand, rightHandOperand, options) { + if (options && options.comparator) { + return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); + } + var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); + if (simpleResult !== null) { + return simpleResult; + } + return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); + } + function simpleEqual(leftHandOperand, rightHandOperand) { + if (leftHandOperand === rightHandOperand) { + return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand; + } + if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare + rightHandOperand !== rightHandOperand) { + return true; + } + if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return false; + } + return null; + } + function extensiveDeepEqual(leftHandOperand, rightHandOperand, options) { + options = options || {}; + options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap(); + var comparator = options && options.comparator; + var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize); + if (memoizeResultLeft !== null) { + return memoizeResultLeft; + } + var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize); + if (memoizeResultRight !== null) { + return memoizeResultRight; + } + if (comparator) { + var comparatorResult = comparator(leftHandOperand, rightHandOperand); + if (comparatorResult === false || comparatorResult === true) { + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult); + return comparatorResult; + } + var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); + if (simpleResult !== null) { + return simpleResult; + } + } + var leftHandType = type(leftHandOperand); + if (leftHandType !== type(rightHandOperand)) { + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false); + return false; + } + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true); + var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options); + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result); + return result; + } + function extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) { + switch (leftHandType) { + case "String": + case "Number": + case "Boolean": + case "Date": + return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf()); + case "Promise": + case "Symbol": + case "function": + case "WeakMap": + case "WeakSet": + return leftHandOperand === rightHandOperand; + case "Error": + return keysEqual(leftHandOperand, rightHandOperand, ["name", "message", "code"], options); + case "Arguments": + case "Int8Array": + case "Uint8Array": + case "Uint8ClampedArray": + case "Int16Array": + case "Uint16Array": + case "Int32Array": + case "Uint32Array": + case "Float32Array": + case "Float64Array": + case "Array": + return iterableEqual(leftHandOperand, rightHandOperand, options); + case "RegExp": + return regexpEqual(leftHandOperand, rightHandOperand); + case "Generator": + return generatorEqual(leftHandOperand, rightHandOperand, options); + case "DataView": + return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options); + case "ArrayBuffer": + return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options); + case "Set": + return entriesEqual(leftHandOperand, rightHandOperand, options); + case "Map": + return entriesEqual(leftHandOperand, rightHandOperand, options); + case "Temporal.PlainDate": + case "Temporal.PlainTime": + case "Temporal.PlainDateTime": + case "Temporal.Instant": + case "Temporal.ZonedDateTime": + case "Temporal.PlainYearMonth": + case "Temporal.PlainMonthDay": + return leftHandOperand.equals(rightHandOperand); + case "Temporal.Duration": + return leftHandOperand.total("nanoseconds") === rightHandOperand.total("nanoseconds"); + case "Temporal.TimeZone": + case "Temporal.Calendar": + return leftHandOperand.toString() === rightHandOperand.toString(); + default: + return objectEqual(leftHandOperand, rightHandOperand, options); + } + } + function regexpEqual(leftHandOperand, rightHandOperand) { + return leftHandOperand.toString() === rightHandOperand.toString(); + } + function entriesEqual(leftHandOperand, rightHandOperand, options) { + try { + if (leftHandOperand.size !== rightHandOperand.size) { + return false; + } + if (leftHandOperand.size === 0) { + return true; + } + } catch (sizeError) { + return false; + } + var leftHandItems = []; + var rightHandItems = []; + leftHandOperand.forEach(function gatherEntries(key, value) { + leftHandItems.push([key, value]); + }); + rightHandOperand.forEach(function gatherEntries(key, value) { + rightHandItems.push([key, value]); + }); + return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options); + } + function iterableEqual(leftHandOperand, rightHandOperand, options) { + var length = leftHandOperand.length; + if (length !== rightHandOperand.length) { + return false; + } + if (length === 0) { + return true; + } + var index = -1; + while (++index < length) { + if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) { + return false; + } + } + return true; + } + function generatorEqual(leftHandOperand, rightHandOperand, options) { + return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options); + } + function hasIteratorFunction(target) { + return typeof Symbol !== "undefined" && typeof target === "object" && typeof Symbol.iterator !== "undefined" && typeof target[Symbol.iterator] === "function"; + } + function getIteratorEntries(target) { + if (hasIteratorFunction(target)) { + try { + return getGeneratorEntries(target[Symbol.iterator]()); + } catch (iteratorError) { + return []; + } + } + return []; + } + function getGeneratorEntries(generator) { + var generatorResult = generator.next(); + var accumulator = [generatorResult.value]; + while (generatorResult.done === false) { + generatorResult = generator.next(); + accumulator.push(generatorResult.value); + } + return accumulator; + } + function getEnumerableKeys(target) { + var keys = []; + for (var key in target) { + keys.push(key); + } + return keys; + } + function getEnumerableSymbols(target) { + var keys = []; + var allKeys = Object.getOwnPropertySymbols(target); + for (var i = 0; i < allKeys.length; i += 1) { + var key = allKeys[i]; + if (Object.getOwnPropertyDescriptor(target, key).enumerable) { + keys.push(key); + } + } + return keys; + } + function keysEqual(leftHandOperand, rightHandOperand, keys, options) { + var length = keys.length; + if (length === 0) { + return true; + } + for (var i = 0; i < length; i += 1) { + if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) { + return false; + } + } + return true; + } + function objectEqual(leftHandOperand, rightHandOperand, options) { + var leftHandKeys = getEnumerableKeys(leftHandOperand); + var rightHandKeys = getEnumerableKeys(rightHandOperand); + var leftHandSymbols = getEnumerableSymbols(leftHandOperand); + var rightHandSymbols = getEnumerableSymbols(rightHandOperand); + leftHandKeys = leftHandKeys.concat(leftHandSymbols); + rightHandKeys = rightHandKeys.concat(rightHandSymbols); + if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) { + if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) { + return false; + } + return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options); + } + var leftHandEntries = getIteratorEntries(leftHandOperand); + var rightHandEntries = getIteratorEntries(rightHandOperand); + if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) { + leftHandEntries.sort(); + rightHandEntries.sort(); + return iterableEqual(leftHandEntries, rightHandEntries, options); + } + if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) { + return true; + } + return false; + } + function isPrimitive(value) { + return value === null || typeof value !== "object"; + } + function mapSymbols(arr) { + return arr.map(function mapSymbol(entry) { + if (typeof entry === "symbol") { + return entry.toString(); + } + return entry; + }); + } + } +}); + +// ../../node_modules/chai/lib/chai/utils/isProxyEnabled.js +var require_isProxyEnabled = __commonJS({ + "../../node_modules/chai/lib/chai/utils/isProxyEnabled.js"(exports, module) { + var config2 = require_config(); + module.exports = function isProxyEnabled() { + return config2.useProxy && typeof Proxy !== "undefined" && typeof Reflect !== "undefined"; + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/addProperty.js +var require_addProperty = __commonJS({ + "../../node_modules/chai/lib/chai/utils/addProperty.js"(exports, module) { + var chai2 = require_chai(); + var flag = require_flag(); + var isProxyEnabled = require_isProxyEnabled(); + var transferFlags = require_transferFlags(); + module.exports = function addProperty(ctx, name, getter) { + getter = getter === void 0 ? function() { + } : getter; + Object.defineProperty( + ctx, + name, + { + get: function propertyGetter() { + if (!isProxyEnabled() && !flag(this, "lockSsfi")) { + flag(this, "ssfi", propertyGetter); + } + var result = getter.call(this); + if (result !== void 0) + return result; + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }, + configurable: true + } + ); + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/addLengthGuard.js +var require_addLengthGuard = __commonJS({ + "../../node_modules/chai/lib/chai/utils/addLengthGuard.js"(exports, module) { + var fnLengthDesc = Object.getOwnPropertyDescriptor(function() { + }, "length"); + module.exports = function addLengthGuard(fn, assertionName, isChainable) { + if (!fnLengthDesc.configurable) return fn; + Object.defineProperty(fn, "length", { + get: function() { + if (isChainable) { + throw Error("Invalid Chai property: " + assertionName + '.length. Due to a compatibility issue, "length" cannot directly follow "' + assertionName + '". Use "' + assertionName + '.lengthOf" instead.'); + } + throw Error("Invalid Chai property: " + assertionName + '.length. See docs for proper usage of "' + assertionName + '".'); + } + }); + return fn; + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/getProperties.js +var require_getProperties = __commonJS({ + "../../node_modules/chai/lib/chai/utils/getProperties.js"(exports, module) { + module.exports = function getProperties(object) { + var result = Object.getOwnPropertyNames(object); + function addProperty(property) { + if (result.indexOf(property) === -1) { + result.push(property); + } + } + var proto = Object.getPrototypeOf(object); + while (proto !== null) { + Object.getOwnPropertyNames(proto).forEach(addProperty); + proto = Object.getPrototypeOf(proto); + } + return result; + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/proxify.js +var require_proxify = __commonJS({ + "../../node_modules/chai/lib/chai/utils/proxify.js"(exports, module) { + var config2 = require_config(); + var flag = require_flag(); + var getProperties = require_getProperties(); + var isProxyEnabled = require_isProxyEnabled(); + var builtins = ["__flags", "__methods", "_obj", "assert"]; + module.exports = function proxify(obj, nonChainableMethodName) { + if (!isProxyEnabled()) return obj; + return new Proxy(obj, { + get: function proxyGetter(target, property) { + if (typeof property === "string" && config2.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) { + if (nonChainableMethodName) { + throw Error("Invalid Chai property: " + nonChainableMethodName + "." + property + '. See docs for proper usage of "' + nonChainableMethodName + '".'); + } + var suggestion = null; + var suggestionDistance = 4; + getProperties(target).forEach(function(prop) { + if (!Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1) { + var dist = stringDistanceCapped( + property, + prop, + suggestionDistance + ); + if (dist < suggestionDistance) { + suggestion = prop; + suggestionDistance = dist; + } + } + }); + if (suggestion !== null) { + throw Error("Invalid Chai property: " + property + '. Did you mean "' + suggestion + '"?'); + } else { + throw Error("Invalid Chai property: " + property); + } + } + if (builtins.indexOf(property) === -1 && !flag(target, "lockSsfi")) { + flag(target, "ssfi", proxyGetter); + } + return Reflect.get(target, property); + } + }); + }; + function stringDistanceCapped(strA, strB, cap) { + if (Math.abs(strA.length - strB.length) >= cap) { + return cap; + } + var memo = []; + for (var i = 0; i <= strA.length; i++) { + memo[i] = Array(strB.length + 1).fill(0); + memo[i][0] = i; + } + for (var j = 0; j < strB.length; j++) { + memo[0][j] = j; + } + for (var i = 1; i <= strA.length; i++) { + var ch = strA.charCodeAt(i - 1); + for (var j = 1; j <= strB.length; j++) { + if (Math.abs(i - j) >= cap) { + memo[i][j] = cap; + continue; + } + memo[i][j] = Math.min( + memo[i - 1][j] + 1, + memo[i][j - 1] + 1, + memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1) + ); + } + } + return memo[strA.length][strB.length]; + } + } +}); + +// ../../node_modules/chai/lib/chai/utils/addMethod.js +var require_addMethod = __commonJS({ + "../../node_modules/chai/lib/chai/utils/addMethod.js"(exports, module) { + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + module.exports = function addMethod(ctx, name, method) { + var methodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", methodWrapper); + } + var result = method.apply(this, arguments); + if (result !== void 0) + return result; + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(methodWrapper, name, false); + ctx[name] = proxify(methodWrapper, name); + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/overwriteProperty.js +var require_overwriteProperty = __commonJS({ + "../../node_modules/chai/lib/chai/utils/overwriteProperty.js"(exports, module) { + var chai2 = require_chai(); + var flag = require_flag(); + var isProxyEnabled = require_isProxyEnabled(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteProperty(ctx, name, getter) { + var _get = Object.getOwnPropertyDescriptor(ctx, name), _super = function() { + }; + if (_get && "function" === typeof _get.get) + _super = _get.get; + Object.defineProperty( + ctx, + name, + { + get: function overwritingPropertyGetter() { + if (!isProxyEnabled() && !flag(this, "lockSsfi")) { + flag(this, "ssfi", overwritingPropertyGetter); + } + var origLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + var result = getter(_super).call(this); + flag(this, "lockSsfi", origLockSsfi); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }, + configurable: true + } + ); + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/overwriteMethod.js +var require_overwriteMethod = __commonJS({ + "../../node_modules/chai/lib/chai/utils/overwriteMethod.js"(exports, module) { + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteMethod(ctx, name, method) { + var _method = ctx[name], _super = function() { + throw new Error(name + " is not a function"); + }; + if (_method && "function" === typeof _method) + _super = _method; + var overwritingMethodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", overwritingMethodWrapper); + } + var origLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + var result = method(_super).apply(this, arguments); + flag(this, "lockSsfi", origLockSsfi); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(overwritingMethodWrapper, name, false); + ctx[name] = proxify(overwritingMethodWrapper, name); + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/addChainableMethod.js +var require_addChainableMethod = __commonJS({ + "../../node_modules/chai/lib/chai/utils/addChainableMethod.js"(exports, module) { + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + var canSetPrototype = typeof Object.setPrototypeOf === "function"; + var testFn = function() { + }; + var excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) { + var propDesc = Object.getOwnPropertyDescriptor(testFn, name); + if (typeof propDesc !== "object") + return true; + return !propDesc.configurable; + }); + var call = Function.prototype.call; + var apply = Function.prototype.apply; + module.exports = function addChainableMethod(ctx, name, method, chainingBehavior) { + if (typeof chainingBehavior !== "function") { + chainingBehavior = function() { + }; + } + var chainableBehavior = { + method, + chainingBehavior + }; + if (!ctx.__methods) { + ctx.__methods = {}; + } + ctx.__methods[name] = chainableBehavior; + Object.defineProperty( + ctx, + name, + { + get: function chainableMethodGetter() { + chainableBehavior.chainingBehavior.call(this); + var chainableMethodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", chainableMethodWrapper); + } + var result = chainableBehavior.method.apply(this, arguments); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(chainableMethodWrapper, name, true); + if (canSetPrototype) { + var prototype = Object.create(this); + prototype.call = call; + prototype.apply = apply; + Object.setPrototypeOf(chainableMethodWrapper, prototype); + } else { + var asserterNames = Object.getOwnPropertyNames(ctx); + asserterNames.forEach(function(asserterName) { + if (excludeNames.indexOf(asserterName) !== -1) { + return; + } + var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); + Object.defineProperty(chainableMethodWrapper, asserterName, pd); + }); + } + transferFlags(this, chainableMethodWrapper); + return proxify(chainableMethodWrapper); + }, + configurable: true + } + ); + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +var require_overwriteChainableMethod = __commonJS({ + "../../node_modules/chai/lib/chai/utils/overwriteChainableMethod.js"(exports, module) { + var chai2 = require_chai(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteChainableMethod(ctx, name, method, chainingBehavior) { + var chainableBehavior = ctx.__methods[name]; + var _chainingBehavior = chainableBehavior.chainingBehavior; + chainableBehavior.chainingBehavior = function overwritingChainableMethodGetter() { + var result = chainingBehavior(_chainingBehavior).call(this); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + var _method = chainableBehavior.method; + chainableBehavior.method = function overwritingChainableMethodWrapper() { + var result = method(_method).apply(this, arguments); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/compareByInspect.js +var require_compareByInspect = __commonJS({ + "../../node_modules/chai/lib/chai/utils/compareByInspect.js"(exports, module) { + var inspect = require_inspect(); + module.exports = function compareByInspect(a, b) { + return inspect(a) < inspect(b) ? -1 : 1; + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js +var require_getOwnEnumerablePropertySymbols = __commonJS({ + "../../node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js"(exports, module) { + module.exports = function getOwnEnumerablePropertySymbols(obj) { + if (typeof Object.getOwnPropertySymbols !== "function") return []; + return Object.getOwnPropertySymbols(obj).filter(function(sym) { + return Object.getOwnPropertyDescriptor(obj, sym).enumerable; + }); + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js +var require_getOwnEnumerableProperties = __commonJS({ + "../../node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js"(exports, module) { + var getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); + module.exports = function getOwnEnumerableProperties(obj) { + return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj)); + }; + } +}); + +// ../../node_modules/check-error/index.js +var require_check_error = __commonJS({ + "../../node_modules/check-error/index.js"(exports, module) { + "use strict"; + var getFunctionName = require_get_func_name(); + function compatibleInstance(thrown, errorLike) { + return errorLike instanceof Error && thrown === errorLike; + } + function compatibleConstructor(thrown, errorLike) { + if (errorLike instanceof Error) { + return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor; + } else if (errorLike.prototype instanceof Error || errorLike === Error) { + return thrown.constructor === errorLike || thrown instanceof errorLike; + } + return false; + } + function compatibleMessage(thrown, errMatcher) { + var comparisonString = typeof thrown === "string" ? thrown : thrown.message; + if (errMatcher instanceof RegExp) { + return errMatcher.test(comparisonString); + } else if (typeof errMatcher === "string") { + return comparisonString.indexOf(errMatcher) !== -1; + } + return false; + } + function getConstructorName(errorLike) { + var constructorName = errorLike; + if (errorLike instanceof Error) { + constructorName = getFunctionName(errorLike.constructor); + } else if (typeof errorLike === "function") { + constructorName = getFunctionName(errorLike); + if (constructorName === "") { + var newConstructorName = getFunctionName(new errorLike()); + constructorName = newConstructorName || constructorName; + } + } + return constructorName; + } + function getMessage(errorLike) { + var msg = ""; + if (errorLike && errorLike.message) { + msg = errorLike.message; + } else if (typeof errorLike === "string") { + msg = errorLike; + } + return msg; + } + module.exports = { + compatibleInstance, + compatibleConstructor, + compatibleMessage, + getMessage, + getConstructorName + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/isNaN.js +var require_isNaN = __commonJS({ + "../../node_modules/chai/lib/chai/utils/isNaN.js"(exports, module) { + function isNaN(value) { + return value !== value; + } + module.exports = Number.isNaN || isNaN; + } +}); + +// ../../node_modules/chai/lib/chai/utils/getOperator.js +var require_getOperator = __commonJS({ + "../../node_modules/chai/lib/chai/utils/getOperator.js"(exports, module) { + var type = require_type_detect(); + var flag = require_flag(); + function isObjectType(obj) { + var objectType = type(obj); + var objectTypes = ["Array", "Object", "function"]; + return objectTypes.indexOf(objectType) !== -1; + } + module.exports = function getOperator(obj, args) { + var operator = flag(obj, "operator"); + var negate = flag(obj, "negate"); + var expected = args[3]; + var msg = negate ? args[2] : args[1]; + if (operator) { + return operator; + } + if (typeof msg === "function") msg = msg(); + msg = msg || ""; + if (!msg) { + return void 0; + } + if (/\shave\s/.test(msg)) { + return void 0; + } + var isObject = isObjectType(expected); + if (/\snot\s/.test(msg)) { + return isObject ? "notDeepStrictEqual" : "notStrictEqual"; + } + return isObject ? "deepStrictEqual" : "strictEqual"; + }; + } +}); + +// ../../node_modules/chai/lib/chai/utils/index.js +var require_utils = __commonJS({ + "../../node_modules/chai/lib/chai/utils/index.js"(exports) { + var pathval = require_pathval(); + exports.test = require_test(); + exports.type = require_type_detect(); + exports.expectTypes = require_expectTypes(); + exports.getMessage = require_getMessage(); + exports.getActual = require_getActual(); + exports.inspect = require_inspect(); + exports.objDisplay = require_objDisplay(); + exports.flag = require_flag(); + exports.transferFlags = require_transferFlags(); + exports.eql = require_deep_eql(); + exports.getPathInfo = pathval.getPathInfo; + exports.hasProperty = pathval.hasProperty; + exports.getName = require_get_func_name(); + exports.addProperty = require_addProperty(); + exports.addMethod = require_addMethod(); + exports.overwriteProperty = require_overwriteProperty(); + exports.overwriteMethod = require_overwriteMethod(); + exports.addChainableMethod = require_addChainableMethod(); + exports.overwriteChainableMethod = require_overwriteChainableMethod(); + exports.compareByInspect = require_compareByInspect(); + exports.getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); + exports.getOwnEnumerableProperties = require_getOwnEnumerableProperties(); + exports.checkError = require_check_error(); + exports.proxify = require_proxify(); + exports.addLengthGuard = require_addLengthGuard(); + exports.isProxyEnabled = require_isProxyEnabled(); + exports.isNaN = require_isNaN(); + exports.getOperator = require_getOperator(); + } +}); + +// ../../node_modules/chai/lib/chai/assertion.js +var require_assertion = __commonJS({ + "../../node_modules/chai/lib/chai/assertion.js"(exports, module) { + var config2 = require_config(); + module.exports = function(_chai, util2) { + var AssertionError2 = _chai.AssertionError, flag = util2.flag; + _chai.Assertion = Assertion2; + function Assertion2(obj, msg, ssfi, lockSsfi) { + flag(this, "ssfi", ssfi || Assertion2); + flag(this, "lockSsfi", lockSsfi); + flag(this, "object", obj); + flag(this, "message", msg); + flag(this, "eql", config2.deepEqual || util2.eql); + return util2.proxify(this); + } + Object.defineProperty(Assertion2, "includeStack", { + get: function() { + console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); + return config2.includeStack; + }, + set: function(value) { + console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); + config2.includeStack = value; + } + }); + Object.defineProperty(Assertion2, "showDiff", { + get: function() { + console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); + return config2.showDiff; + }, + set: function(value) { + console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); + config2.showDiff = value; + } + }); + Assertion2.addProperty = function(name, fn) { + util2.addProperty(this.prototype, name, fn); + }; + Assertion2.addMethod = function(name, fn) { + util2.addMethod(this.prototype, name, fn); + }; + Assertion2.addChainableMethod = function(name, fn, chainingBehavior) { + util2.addChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + Assertion2.overwriteProperty = function(name, fn) { + util2.overwriteProperty(this.prototype, name, fn); + }; + Assertion2.overwriteMethod = function(name, fn) { + util2.overwriteMethod(this.prototype, name, fn); + }; + Assertion2.overwriteChainableMethod = function(name, fn, chainingBehavior) { + util2.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + Assertion2.prototype.assert = function(expr, msg, negateMsg, expected, _actual, showDiff) { + var ok = util2.test(this, arguments); + if (false !== showDiff) showDiff = true; + if (void 0 === expected && void 0 === _actual) showDiff = false; + if (true !== config2.showDiff) showDiff = false; + if (!ok) { + msg = util2.getMessage(this, arguments); + var actual = util2.getActual(this, arguments); + var assertionErrorObjectProperties = { + actual, + expected, + showDiff + }; + var operator = util2.getOperator(this, arguments); + if (operator) { + assertionErrorObjectProperties.operator = operator; + } + throw new AssertionError2( + msg, + assertionErrorObjectProperties, + config2.includeStack ? this.assert : flag(this, "ssfi") + ); + } + }; + Object.defineProperty( + Assertion2.prototype, + "_obj", + { + get: function() { + return flag(this, "object"); + }, + set: function(val) { + flag(this, "object", val); + } + } + ); + }; + } +}); + +// ../../node_modules/chai/lib/chai/core/assertions.js +var require_assertions = __commonJS({ + "../../node_modules/chai/lib/chai/core/assertions.js"(exports, module) { + module.exports = function(chai2, _) { + var Assertion2 = chai2.Assertion, AssertionError2 = chai2.AssertionError, flag = _.flag; + [ + "to", + "be", + "been", + "is", + "and", + "has", + "have", + "with", + "that", + "which", + "at", + "of", + "same", + "but", + "does", + "still", + "also" + ].forEach(function(chain) { + Assertion2.addProperty(chain); + }); + Assertion2.addProperty("not", function() { + flag(this, "negate", true); + }); + Assertion2.addProperty("deep", function() { + flag(this, "deep", true); + }); + Assertion2.addProperty("nested", function() { + flag(this, "nested", true); + }); + Assertion2.addProperty("own", function() { + flag(this, "own", true); + }); + Assertion2.addProperty("ordered", function() { + flag(this, "ordered", true); + }); + Assertion2.addProperty("any", function() { + flag(this, "any", true); + flag(this, "all", false); + }); + Assertion2.addProperty("all", function() { + flag(this, "all", true); + flag(this, "any", false); + }); + function an(type, msg) { + if (msg) flag(this, "message", msg); + type = type.toLowerCase(); + var obj = flag(this, "object"), article = ~["a", "e", "i", "o", "u"].indexOf(type.charAt(0)) ? "an " : "a "; + this.assert( + type === _.type(obj).toLowerCase(), + "expected #{this} to be " + article + type, + "expected #{this} not to be " + article + type + ); + } + Assertion2.addChainableMethod("an", an); + Assertion2.addChainableMethod("a", an); + function SameValueZero(a, b) { + return _.isNaN(a) && _.isNaN(b) || a === b; + } + function includeChainingBehavior() { + flag(this, "contains", true); + } + function include(val, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), negate = flag(this, "negate"), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), descriptor = isDeep ? "deep " : "", isEql = isDeep ? flag(this, "eql") : SameValueZero; + flagMsg = flagMsg ? flagMsg + ": " : ""; + var included = false; + switch (objType) { + case "string": + included = obj.indexOf(val) !== -1; + break; + case "weakset": + if (isDeep) { + throw new AssertionError2( + flagMsg + "unable to use .deep.include with WeakSet", + void 0, + ssfi + ); + } + included = obj.has(val); + break; + case "map": + obj.forEach(function(item) { + included = included || isEql(item, val); + }); + break; + case "set": + if (isDeep) { + obj.forEach(function(item) { + included = included || isEql(item, val); + }); + } else { + included = obj.has(val); + } + break; + case "array": + if (isDeep) { + included = obj.some(function(item) { + return isEql(item, val); + }); + } else { + included = obj.indexOf(val) !== -1; + } + break; + default: + if (val !== Object(val)) { + throw new AssertionError2( + flagMsg + "the given combination of arguments (" + objType + " and " + _.type(val).toLowerCase() + ") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a " + _.type(val).toLowerCase(), + void 0, + ssfi + ); + } + var props = Object.keys(val), firstErr = null, numErrs = 0; + props.forEach(function(prop) { + var propAssertion = new Assertion2(obj); + _.transferFlags(this, propAssertion, true); + flag(propAssertion, "lockSsfi", true); + if (!negate || props.length === 1) { + propAssertion.property(prop, val[prop]); + return; + } + try { + propAssertion.property(prop, val[prop]); + } catch (err) { + if (!_.checkError.compatibleConstructor(err, AssertionError2)) { + throw err; + } + if (firstErr === null) firstErr = err; + numErrs++; + } + }, this); + if (negate && props.length > 1 && numErrs === props.length) { + throw firstErr; + } + return; + } + this.assert( + included, + "expected #{this} to " + descriptor + "include " + _.inspect(val), + "expected #{this} to not " + descriptor + "include " + _.inspect(val) + ); + } + Assertion2.addChainableMethod("include", include, includeChainingBehavior); + Assertion2.addChainableMethod("contain", include, includeChainingBehavior); + Assertion2.addChainableMethod("contains", include, includeChainingBehavior); + Assertion2.addChainableMethod("includes", include, includeChainingBehavior); + Assertion2.addProperty("ok", function() { + this.assert( + flag(this, "object"), + "expected #{this} to be truthy", + "expected #{this} to be falsy" + ); + }); + Assertion2.addProperty("true", function() { + this.assert( + true === flag(this, "object"), + "expected #{this} to be true", + "expected #{this} to be false", + flag(this, "negate") ? false : true + ); + }); + Assertion2.addProperty("false", function() { + this.assert( + false === flag(this, "object"), + "expected #{this} to be false", + "expected #{this} to be true", + flag(this, "negate") ? true : false + ); + }); + Assertion2.addProperty("null", function() { + this.assert( + null === flag(this, "object"), + "expected #{this} to be null", + "expected #{this} not to be null" + ); + }); + Assertion2.addProperty("undefined", function() { + this.assert( + void 0 === flag(this, "object"), + "expected #{this} to be undefined", + "expected #{this} not to be undefined" + ); + }); + Assertion2.addProperty("NaN", function() { + this.assert( + _.isNaN(flag(this, "object")), + "expected #{this} to be NaN", + "expected #{this} not to be NaN" + ); + }); + function assertExist() { + var val = flag(this, "object"); + this.assert( + val !== null && val !== void 0, + "expected #{this} to exist", + "expected #{this} to not exist" + ); + } + Assertion2.addProperty("exist", assertExist); + Assertion2.addProperty("exists", assertExist); + Assertion2.addProperty("empty", function() { + var val = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), itemsCount; + flagMsg = flagMsg ? flagMsg + ": " : ""; + switch (_.type(val).toLowerCase()) { + case "array": + case "string": + itemsCount = val.length; + break; + case "map": + case "set": + itemsCount = val.size; + break; + case "weakmap": + case "weakset": + throw new AssertionError2( + flagMsg + ".empty was passed a weak collection", + void 0, + ssfi + ); + case "function": + var msg = flagMsg + ".empty was passed a function " + _.getName(val); + throw new AssertionError2(msg.trim(), void 0, ssfi); + default: + if (val !== Object(val)) { + throw new AssertionError2( + flagMsg + ".empty was passed non-string primitive " + _.inspect(val), + void 0, + ssfi + ); + } + itemsCount = Object.keys(val).length; + } + this.assert( + 0 === itemsCount, + "expected #{this} to be empty", + "expected #{this} not to be empty" + ); + }); + function checkArguments() { + var obj = flag(this, "object"), type = _.type(obj); + this.assert( + "Arguments" === type, + "expected #{this} to be arguments but got " + type, + "expected #{this} to not be arguments" + ); + } + Assertion2.addProperty("arguments", checkArguments); + Assertion2.addProperty("Arguments", checkArguments); + function assertEqual(val, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"); + if (flag(this, "deep")) { + var prevLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + this.eql(val); + flag(this, "lockSsfi", prevLockSsfi); + } else { + this.assert( + val === obj, + "expected #{this} to equal #{exp}", + "expected #{this} to not equal #{exp}", + val, + this._obj, + true + ); + } + } + Assertion2.addMethod("equal", assertEqual); + Assertion2.addMethod("equals", assertEqual); + Assertion2.addMethod("eq", assertEqual); + function assertEql(obj, msg) { + if (msg) flag(this, "message", msg); + var eql = flag(this, "eql"); + this.assert( + eql(obj, flag(this, "object")), + "expected #{this} to deeply equal #{exp}", + "expected #{this} to not deeply equal #{exp}", + obj, + this._obj, + true + ); + } + Assertion2.addMethod("eql", assertEql); + Assertion2.addMethod("eqls", assertEql); + function assertAbove(n, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to above must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to above must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount > n, + "expected #{this} to have a " + descriptor + " above #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " above #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj > n, + "expected #{this} to be above #{exp}", + "expected #{this} to be at most #{exp}", + n + ); + } + } + Assertion2.addMethod("above", assertAbove); + Assertion2.addMethod("gt", assertAbove); + Assertion2.addMethod("greaterThan", assertAbove); + function assertLeast(n, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to least must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to least must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount >= n, + "expected #{this} to have a " + descriptor + " at least #{exp} but got #{act}", + "expected #{this} to have a " + descriptor + " below #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj >= n, + "expected #{this} to be at least #{exp}", + "expected #{this} to be below #{exp}", + n + ); + } + } + Assertion2.addMethod("least", assertLeast); + Assertion2.addMethod("gte", assertLeast); + Assertion2.addMethod("greaterThanOrEqual", assertLeast); + function assertBelow(n, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to below must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to below must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount < n, + "expected #{this} to have a " + descriptor + " below #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " below #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj < n, + "expected #{this} to be below #{exp}", + "expected #{this} to be at least #{exp}", + n + ); + } + } + Assertion2.addMethod("below", assertBelow); + Assertion2.addMethod("lt", assertBelow); + Assertion2.addMethod("lessThan", assertBelow); + function assertMost(n, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to most must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to most must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount <= n, + "expected #{this} to have a " + descriptor + " at most #{exp} but got #{act}", + "expected #{this} to have a " + descriptor + " above #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj <= n, + "expected #{this} to be at most #{exp}", + "expected #{this} to be above #{exp}", + n + ); + } + } + Assertion2.addMethod("most", assertMost); + Assertion2.addMethod("lte", assertMost); + Assertion2.addMethod("lessThanOrEqual", assertMost); + Assertion2.addMethod("within", function(start, finish, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), startType = _.type(start).toLowerCase(), finishType = _.type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === "date" && finishType === "date" ? start.toISOString() + ".." + finish.toISOString() : start + ".." + finish; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && (startType !== "date" || finishType !== "date"))) { + errorMessage = msgPrefix + "the arguments to within must be dates"; + } else if ((startType !== "number" || finishType !== "number") && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the arguments to within must be numbers"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount >= start && itemsCount <= finish, + "expected #{this} to have a " + descriptor + " within " + range, + "expected #{this} to not have a " + descriptor + " within " + range + ); + } else { + this.assert( + obj >= start && obj <= finish, + "expected #{this} to be within " + range, + "expected #{this} to not be within " + range + ); + } + }); + function assertInstanceOf(constructor, msg) { + if (msg) flag(this, "message", msg); + var target = flag(this, "object"); + var ssfi = flag(this, "ssfi"); + var flagMsg = flag(this, "message"); + try { + var isInstanceOf = target instanceof constructor; + } catch (err) { + if (err instanceof TypeError) { + flagMsg = flagMsg ? flagMsg + ": " : ""; + throw new AssertionError2( + flagMsg + "The instanceof assertion needs a constructor but " + _.type(constructor) + " was given.", + void 0, + ssfi + ); + } + throw err; + } + var name = _.getName(constructor); + if (name === null) { + name = "an unnamed constructor"; + } + this.assert( + isInstanceOf, + "expected #{this} to be an instance of " + name, + "expected #{this} to not be an instance of " + name + ); + } + ; + Assertion2.addMethod("instanceof", assertInstanceOf); + Assertion2.addMethod("instanceOf", assertInstanceOf); + function assertProperty(name, val, msg) { + if (msg) flag(this, "message", msg); + var isNested = flag(this, "nested"), isOwn = flag(this, "own"), flagMsg = flag(this, "message"), obj = flag(this, "object"), ssfi = flag(this, "ssfi"), nameType = typeof name; + flagMsg = flagMsg ? flagMsg + ": " : ""; + if (isNested) { + if (nameType !== "string") { + throw new AssertionError2( + flagMsg + "the argument to property must be a string when using nested syntax", + void 0, + ssfi + ); + } + } else { + if (nameType !== "string" && nameType !== "number" && nameType !== "symbol") { + throw new AssertionError2( + flagMsg + "the argument to property must be a string, number, or symbol", + void 0, + ssfi + ); + } + } + if (isNested && isOwn) { + throw new AssertionError2( + flagMsg + 'The "nested" and "own" flags cannot be combined.', + void 0, + ssfi + ); + } + if (obj === null || obj === void 0) { + throw new AssertionError2( + flagMsg + "Target cannot be null or undefined.", + void 0, + ssfi + ); + } + var isDeep = flag(this, "deep"), negate = flag(this, "negate"), pathInfo = isNested ? _.getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name], isEql = isDeep ? flag(this, "eql") : (val1, val2) => val1 === val2; + ; + var descriptor = ""; + if (isDeep) descriptor += "deep "; + if (isOwn) descriptor += "own "; + if (isNested) descriptor += "nested "; + descriptor += "property "; + var hasProperty; + if (isOwn) hasProperty = Object.prototype.hasOwnProperty.call(obj, name); + else if (isNested) hasProperty = pathInfo.exists; + else hasProperty = _.hasProperty(obj, name); + if (!negate || arguments.length === 1) { + this.assert( + hasProperty, + "expected #{this} to have " + descriptor + _.inspect(name), + "expected #{this} to not have " + descriptor + _.inspect(name) + ); + } + if (arguments.length > 1) { + this.assert( + hasProperty && isEql(val, value), + "expected #{this} to have " + descriptor + _.inspect(name) + " of #{exp}, but got #{act}", + "expected #{this} to not have " + descriptor + _.inspect(name) + " of #{act}", + val, + value + ); + } + flag(this, "object", value); + } + Assertion2.addMethod("property", assertProperty); + function assertOwnProperty(name, value, msg) { + flag(this, "own", true); + assertProperty.apply(this, arguments); + } + Assertion2.addMethod("ownProperty", assertOwnProperty); + Assertion2.addMethod("haveOwnProperty", assertOwnProperty); + function assertOwnPropertyDescriptor(name, descriptor, msg) { + if (typeof descriptor === "string") { + msg = descriptor; + descriptor = null; + } + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"); + var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); + var eql = flag(this, "eql"); + if (actualDescriptor && descriptor) { + this.assert( + eql(descriptor, actualDescriptor), + "expected the own property descriptor for " + _.inspect(name) + " on #{this} to match " + _.inspect(descriptor) + ", got " + _.inspect(actualDescriptor), + "expected the own property descriptor for " + _.inspect(name) + " on #{this} to not match " + _.inspect(descriptor), + descriptor, + actualDescriptor, + true + ); + } else { + this.assert( + actualDescriptor, + "expected #{this} to have an own property descriptor for " + _.inspect(name), + "expected #{this} to not have an own property descriptor for " + _.inspect(name) + ); + } + flag(this, "object", actualDescriptor); + } + Assertion2.addMethod("ownPropertyDescriptor", assertOwnPropertyDescriptor); + Assertion2.addMethod("haveOwnPropertyDescriptor", assertOwnPropertyDescriptor); + function assertLengthChain() { + flag(this, "doLength", true); + } + function assertLength(n, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), descriptor = "length", itemsCount; + switch (objType) { + case "map": + case "set": + descriptor = "size"; + itemsCount = obj.size; + break; + default: + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + itemsCount = obj.length; + } + this.assert( + itemsCount == n, + "expected #{this} to have a " + descriptor + " of #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " of #{act}", + n, + itemsCount + ); + } + Assertion2.addChainableMethod("length", assertLength, assertLengthChain); + Assertion2.addChainableMethod("lengthOf", assertLength, assertLengthChain); + function assertMatch(re, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"); + this.assert( + re.exec(obj), + "expected #{this} to match " + re, + "expected #{this} not to match " + re + ); + } + Assertion2.addMethod("match", assertMatch); + Assertion2.addMethod("matches", assertMatch); + Assertion2.addMethod("string", function(str, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).is.a("string"); + this.assert( + ~obj.indexOf(str), + "expected #{this} to contain " + _.inspect(str), + "expected #{this} to not contain " + _.inspect(str) + ); + }); + function assertKeys(keys) { + var obj = flag(this, "object"), objType = _.type(obj), keysType = _.type(keys), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), str, deepStr = "", actual, ok = true, flagMsg = flag(this, "message"); + flagMsg = flagMsg ? flagMsg + ": " : ""; + var mixedArgsMsg = flagMsg + "when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments"; + if (objType === "Map" || objType === "Set") { + deepStr = isDeep ? "deeply " : ""; + actual = []; + obj.forEach(function(val, key) { + actual.push(key); + }); + if (keysType !== "Array") { + keys = Array.prototype.slice.call(arguments); + } + } else { + actual = _.getOwnEnumerableProperties(obj); + switch (keysType) { + case "Array": + if (arguments.length > 1) { + throw new AssertionError2(mixedArgsMsg, void 0, ssfi); + } + break; + case "Object": + if (arguments.length > 1) { + throw new AssertionError2(mixedArgsMsg, void 0, ssfi); + } + keys = Object.keys(keys); + break; + default: + keys = Array.prototype.slice.call(arguments); + } + keys = keys.map(function(val) { + return typeof val === "symbol" ? val : String(val); + }); + } + if (!keys.length) { + throw new AssertionError2(flagMsg + "keys required", void 0, ssfi); + } + var len = keys.length, any = flag(this, "any"), all = flag(this, "all"), expected = keys, isEql = isDeep ? flag(this, "eql") : (val1, val2) => val1 === val2; + if (!any && !all) { + all = true; + } + if (any) { + ok = expected.some(function(expectedKey) { + return actual.some(function(actualKey) { + return isEql(expectedKey, actualKey); + }); + }); + } + if (all) { + ok = expected.every(function(expectedKey) { + return actual.some(function(actualKey) { + return isEql(expectedKey, actualKey); + }); + }); + if (!flag(this, "contains")) { + ok = ok && keys.length == actual.length; + } + } + if (len > 1) { + keys = keys.map(function(key) { + return _.inspect(key); + }); + var last = keys.pop(); + if (all) { + str = keys.join(", ") + ", and " + last; + } + if (any) { + str = keys.join(", ") + ", or " + last; + } + } else { + str = _.inspect(keys[0]); + } + str = (len > 1 ? "keys " : "key ") + str; + str = (flag(this, "contains") ? "contain " : "have ") + str; + this.assert( + ok, + "expected #{this} to " + deepStr + str, + "expected #{this} to not " + deepStr + str, + expected.slice(0).sort(_.compareByInspect), + actual.sort(_.compareByInspect), + true + ); + } + Assertion2.addMethod("keys", assertKeys); + Assertion2.addMethod("key", assertKeys); + function assertThrows(errorLike, errMsgMatcher, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), negate = flag(this, "negate") || false; + new Assertion2(obj, flagMsg, ssfi, true).is.a("function"); + if (errorLike instanceof RegExp || typeof errorLike === "string") { + errMsgMatcher = errorLike; + errorLike = null; + } + var caughtErr; + try { + obj(); + } catch (err) { + caughtErr = err; + } + var everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0; + var everyArgIsDefined = Boolean(errorLike && errMsgMatcher); + var errorLikeFail = false; + var errMsgMatcherFail = false; + if (everyArgIsUndefined || !everyArgIsUndefined && !negate) { + var errorLikeString = "an error"; + if (errorLike instanceof Error) { + errorLikeString = "#{exp}"; + } else if (errorLike) { + errorLikeString = _.checkError.getConstructorName(errorLike); + } + this.assert( + caughtErr, + "expected #{this} to throw " + errorLikeString, + "expected #{this} to not throw an error but #{act} was thrown", + errorLike && errorLike.toString(), + caughtErr instanceof Error ? caughtErr.toString() : typeof caughtErr === "string" ? caughtErr : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + if (errorLike && caughtErr) { + if (errorLike instanceof Error) { + var isCompatibleInstance = _.checkError.compatibleInstance(caughtErr, errorLike); + if (isCompatibleInstance === negate) { + if (everyArgIsDefined && negate) { + errorLikeFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr && !negate ? " but #{act} was thrown" : ""), + errorLike.toString(), + caughtErr.toString() + ); + } + } + } + var isCompatibleConstructor = _.checkError.compatibleConstructor(caughtErr, errorLike); + if (isCompatibleConstructor === negate) { + if (everyArgIsDefined && negate) { + errorLikeFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), + errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), + caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + } + } + if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) { + var placeholder = "including"; + if (errMsgMatcher instanceof RegExp) { + placeholder = "matching"; + } + var isCompatibleMessage = _.checkError.compatibleMessage(caughtErr, errMsgMatcher); + if (isCompatibleMessage === negate) { + if (everyArgIsDefined && negate) { + errMsgMatcherFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw error " + placeholder + " #{exp} but got #{act}", + "expected #{this} to throw error not " + placeholder + " #{exp}", + errMsgMatcher, + _.checkError.getMessage(caughtErr) + ); + } + } + } + if (errorLikeFail && errMsgMatcherFail) { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), + errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), + caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + flag(this, "object", caughtErr); + } + ; + Assertion2.addMethod("throw", assertThrows); + Assertion2.addMethod("throws", assertThrows); + Assertion2.addMethod("Throw", assertThrows); + function respondTo(method, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), itself = flag(this, "itself"), context = "function" === typeof obj && !itself ? obj.prototype[method] : obj[method]; + this.assert( + "function" === typeof context, + "expected #{this} to respond to " + _.inspect(method), + "expected #{this} to not respond to " + _.inspect(method) + ); + } + Assertion2.addMethod("respondTo", respondTo); + Assertion2.addMethod("respondsTo", respondTo); + Assertion2.addProperty("itself", function() { + flag(this, "itself", true); + }); + function satisfy(matcher, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"); + var result = matcher(obj); + this.assert( + result, + "expected #{this} to satisfy " + _.objDisplay(matcher), + "expected #{this} to not satisfy" + _.objDisplay(matcher), + flag(this, "negate") ? false : true, + result + ); + } + Assertion2.addMethod("satisfy", satisfy); + Assertion2.addMethod("satisfies", satisfy); + function closeTo(expected, delta, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).is.a("number"); + if (typeof expected !== "number" || typeof delta !== "number") { + flagMsg = flagMsg ? flagMsg + ": " : ""; + var deltaMessage = delta === void 0 ? ", and a delta is required" : ""; + throw new AssertionError2( + flagMsg + "the arguments to closeTo or approximately must be numbers" + deltaMessage, + void 0, + ssfi + ); + } + this.assert( + Math.abs(obj - expected) <= delta, + "expected #{this} to be close to " + expected + " +/- " + delta, + "expected #{this} not to be close to " + expected + " +/- " + delta + ); + } + Assertion2.addMethod("closeTo", closeTo); + Assertion2.addMethod("approximately", closeTo); + function isSubsetOf(subset, superset, cmp, contains, ordered) { + if (!contains) { + if (subset.length !== superset.length) return false; + superset = superset.slice(); + } + return subset.every(function(elem, idx) { + if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx]; + if (!cmp) { + var matchIdx = superset.indexOf(elem); + if (matchIdx === -1) return false; + if (!contains) superset.splice(matchIdx, 1); + return true; + } + return superset.some(function(elem2, matchIdx2) { + if (!cmp(elem, elem2)) return false; + if (!contains) superset.splice(matchIdx2, 1); + return true; + }); + }); + } + Assertion2.addMethod("members", function(subset, msg) { + if (msg) flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).to.be.an("array"); + new Assertion2(subset, flagMsg, ssfi, true).to.be.an("array"); + var contains = flag(this, "contains"); + var ordered = flag(this, "ordered"); + var subject, failMsg, failNegateMsg; + if (contains) { + subject = ordered ? "an ordered superset" : "a superset"; + failMsg = "expected #{this} to be " + subject + " of #{exp}"; + failNegateMsg = "expected #{this} to not be " + subject + " of #{exp}"; + } else { + subject = ordered ? "ordered members" : "members"; + failMsg = "expected #{this} to have the same " + subject + " as #{exp}"; + failNegateMsg = "expected #{this} to not have the same " + subject + " as #{exp}"; + } + var cmp = flag(this, "deep") ? flag(this, "eql") : void 0; + this.assert( + isSubsetOf(subset, obj, cmp, contains, ordered), + failMsg, + failNegateMsg, + subset, + obj, + true + ); + }); + function oneOf(list, msg) { + if (msg) flag(this, "message", msg); + var expected = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), contains = flag(this, "contains"), isDeep = flag(this, "deep"), eql = flag(this, "eql"); + new Assertion2(list, flagMsg, ssfi, true).to.be.an("array"); + if (contains) { + this.assert( + list.some(function(possibility) { + return expected.indexOf(possibility) > -1; + }), + "expected #{this} to contain one of #{exp}", + "expected #{this} to not contain one of #{exp}", + list, + expected + ); + } else { + if (isDeep) { + this.assert( + list.some(function(possibility) { + return eql(expected, possibility); + }), + "expected #{this} to deeply equal one of #{exp}", + "expected #{this} to deeply equal one of #{exp}", + list, + expected + ); + } else { + this.assert( + list.indexOf(expected) > -1, + "expected #{this} to be one of #{exp}", + "expected #{this} to not be one of #{exp}", + list, + expected + ); + } + } + } + Assertion2.addMethod("oneOf", oneOf); + function assertChanges(subject, prop, msg) { + if (msg) flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "change"); + flag(this, "realDelta", final !== initial); + this.assert( + initial !== final, + "expected " + msgObj + " to change", + "expected " + msgObj + " to not change" + ); + } + Assertion2.addMethod("change", assertChanges); + Assertion2.addMethod("changes", assertChanges); + function assertIncreases(subject, prop, msg) { + if (msg) flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "increase"); + flag(this, "realDelta", final - initial); + this.assert( + final - initial > 0, + "expected " + msgObj + " to increase", + "expected " + msgObj + " to not increase" + ); + } + Assertion2.addMethod("increase", assertIncreases); + Assertion2.addMethod("increases", assertIncreases); + function assertDecreases(subject, prop, msg) { + if (msg) flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "decrease"); + flag(this, "realDelta", initial - final); + this.assert( + final - initial < 0, + "expected " + msgObj + " to decrease", + "expected " + msgObj + " to not decrease" + ); + } + Assertion2.addMethod("decrease", assertDecreases); + Assertion2.addMethod("decreases", assertDecreases); + function assertDelta(delta, msg) { + if (msg) flag(this, "message", msg); + var msgObj = flag(this, "deltaMsgObj"); + var initial = flag(this, "initialDeltaValue"); + var final = flag(this, "finalDeltaValue"); + var behavior = flag(this, "deltaBehavior"); + var realDelta = flag(this, "realDelta"); + var expression; + if (behavior === "change") { + expression = Math.abs(final - initial) === Math.abs(delta); + } else { + expression = realDelta === Math.abs(delta); + } + this.assert( + expression, + "expected " + msgObj + " to " + behavior + " by " + delta, + "expected " + msgObj + " to not " + behavior + " by " + delta + ); + } + Assertion2.addMethod("by", assertDelta); + Assertion2.addProperty("extensible", function() { + var obj = flag(this, "object"); + var isExtensible = obj === Object(obj) && Object.isExtensible(obj); + this.assert( + isExtensible, + "expected #{this} to be extensible", + "expected #{this} to not be extensible" + ); + }); + Assertion2.addProperty("sealed", function() { + var obj = flag(this, "object"); + var isSealed = obj === Object(obj) ? Object.isSealed(obj) : true; + this.assert( + isSealed, + "expected #{this} to be sealed", + "expected #{this} to not be sealed" + ); + }); + Assertion2.addProperty("frozen", function() { + var obj = flag(this, "object"); + var isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true; + this.assert( + isFrozen, + "expected #{this} to be frozen", + "expected #{this} to not be frozen" + ); + }); + Assertion2.addProperty("finite", function(msg) { + var obj = flag(this, "object"); + this.assert( + typeof obj === "number" && isFinite(obj), + "expected #{this} to be a finite number", + "expected #{this} to not be a finite number" + ); + }); + }; + } +}); + +// ../../node_modules/chai/lib/chai/interface/expect.js +var require_expect = __commonJS({ + "../../node_modules/chai/lib/chai/interface/expect.js"(exports, module) { + module.exports = function(chai2, util2) { + chai2.expect = function(val, message) { + return new chai2.Assertion(val, message); + }; + chai2.expect.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "expect.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, chai2.expect.fail); + }; + }; + } +}); + +// ../../node_modules/chai/lib/chai/interface/should.js +var require_should = __commonJS({ + "../../node_modules/chai/lib/chai/interface/should.js"(exports, module) { + module.exports = function(chai2, util2) { + var Assertion2 = chai2.Assertion; + function loadShould() { + function shouldGetter() { + if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === "function" && this instanceof Symbol || typeof BigInt === "function" && this instanceof BigInt) { + return new Assertion2(this.valueOf(), null, shouldGetter); + } + return new Assertion2(this, null, shouldGetter); + } + function shouldSetter(value) { + Object.defineProperty(this, "should", { + value, + enumerable: true, + configurable: true, + writable: true + }); + } + Object.defineProperty(Object.prototype, "should", { + set: shouldSetter, + get: shouldGetter, + configurable: true + }); + var should2 = {}; + should2.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "should.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, should2.fail); + }; + should2.equal = function(val1, val2, msg) { + new Assertion2(val1, msg).to.equal(val2); + }; + should2.Throw = function(fn, errt, errs, msg) { + new Assertion2(fn, msg).to.Throw(errt, errs); + }; + should2.exist = function(val, msg) { + new Assertion2(val, msg).to.exist; + }; + should2.not = {}; + should2.not.equal = function(val1, val2, msg) { + new Assertion2(val1, msg).to.not.equal(val2); + }; + should2.not.Throw = function(fn, errt, errs, msg) { + new Assertion2(fn, msg).to.not.Throw(errt, errs); + }; + should2.not.exist = function(val, msg) { + new Assertion2(val, msg).to.not.exist; + }; + should2["throw"] = should2["Throw"]; + should2.not["throw"] = should2.not["Throw"]; + return should2; + } + ; + chai2.should = loadShould; + chai2.Should = loadShould; + }; + } +}); + +// ../../node_modules/chai/lib/chai/interface/assert.js +var require_assert = __commonJS({ + "../../node_modules/chai/lib/chai/interface/assert.js"(exports, module) { + module.exports = function(chai2, util2) { + var Assertion2 = chai2.Assertion, flag = util2.flag; + var assert2 = chai2.assert = function(express, errmsg) { + var test = new Assertion2(null, null, chai2.assert, true); + test.assert( + express, + errmsg, + "[ negation message unavailable ]" + ); + }; + assert2.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "assert.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, assert2.fail); + }; + assert2.isOk = function(val, msg) { + new Assertion2(val, msg, assert2.isOk, true).is.ok; + }; + assert2.isNotOk = function(val, msg) { + new Assertion2(val, msg, assert2.isNotOk, true).is.not.ok; + }; + assert2.equal = function(act, exp, msg) { + var test = new Assertion2(act, msg, assert2.equal, true); + test.assert( + exp == flag(test, "object"), + "expected #{this} to equal #{exp}", + "expected #{this} to not equal #{act}", + exp, + act, + true + ); + }; + assert2.notEqual = function(act, exp, msg) { + var test = new Assertion2(act, msg, assert2.notEqual, true); + test.assert( + exp != flag(test, "object"), + "expected #{this} to not equal #{exp}", + "expected #{this} to equal #{act}", + exp, + act, + true + ); + }; + assert2.strictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.strictEqual, true).to.equal(exp); + }; + assert2.notStrictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.notStrictEqual, true).to.not.equal(exp); + }; + assert2.deepEqual = assert2.deepStrictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.deepEqual, true).to.eql(exp); + }; + assert2.notDeepEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.notDeepEqual, true).to.not.eql(exp); + }; + assert2.isAbove = function(val, abv, msg) { + new Assertion2(val, msg, assert2.isAbove, true).to.be.above(abv); + }; + assert2.isAtLeast = function(val, atlst, msg) { + new Assertion2(val, msg, assert2.isAtLeast, true).to.be.least(atlst); + }; + assert2.isBelow = function(val, blw, msg) { + new Assertion2(val, msg, assert2.isBelow, true).to.be.below(blw); + }; + assert2.isAtMost = function(val, atmst, msg) { + new Assertion2(val, msg, assert2.isAtMost, true).to.be.most(atmst); + }; + assert2.isTrue = function(val, msg) { + new Assertion2(val, msg, assert2.isTrue, true).is["true"]; + }; + assert2.isNotTrue = function(val, msg) { + new Assertion2(val, msg, assert2.isNotTrue, true).to.not.equal(true); + }; + assert2.isFalse = function(val, msg) { + new Assertion2(val, msg, assert2.isFalse, true).is["false"]; + }; + assert2.isNotFalse = function(val, msg) { + new Assertion2(val, msg, assert2.isNotFalse, true).to.not.equal(false); + }; + assert2.isNull = function(val, msg) { + new Assertion2(val, msg, assert2.isNull, true).to.equal(null); + }; + assert2.isNotNull = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNull, true).to.not.equal(null); + }; + assert2.isNaN = function(val, msg) { + new Assertion2(val, msg, assert2.isNaN, true).to.be.NaN; + }; + assert2.isNotNaN = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNaN, true).not.to.be.NaN; + }; + assert2.exists = function(val, msg) { + new Assertion2(val, msg, assert2.exists, true).to.exist; + }; + assert2.notExists = function(val, msg) { + new Assertion2(val, msg, assert2.notExists, true).to.not.exist; + }; + assert2.isUndefined = function(val, msg) { + new Assertion2(val, msg, assert2.isUndefined, true).to.equal(void 0); + }; + assert2.isDefined = function(val, msg) { + new Assertion2(val, msg, assert2.isDefined, true).to.not.equal(void 0); + }; + assert2.isFunction = function(val, msg) { + new Assertion2(val, msg, assert2.isFunction, true).to.be.a("function"); + }; + assert2.isNotFunction = function(val, msg) { + new Assertion2(val, msg, assert2.isNotFunction, true).to.not.be.a("function"); + }; + assert2.isObject = function(val, msg) { + new Assertion2(val, msg, assert2.isObject, true).to.be.a("object"); + }; + assert2.isNotObject = function(val, msg) { + new Assertion2(val, msg, assert2.isNotObject, true).to.not.be.a("object"); + }; + assert2.isArray = function(val, msg) { + new Assertion2(val, msg, assert2.isArray, true).to.be.an("array"); + }; + assert2.isNotArray = function(val, msg) { + new Assertion2(val, msg, assert2.isNotArray, true).to.not.be.an("array"); + }; + assert2.isString = function(val, msg) { + new Assertion2(val, msg, assert2.isString, true).to.be.a("string"); + }; + assert2.isNotString = function(val, msg) { + new Assertion2(val, msg, assert2.isNotString, true).to.not.be.a("string"); + }; + assert2.isNumber = function(val, msg) { + new Assertion2(val, msg, assert2.isNumber, true).to.be.a("number"); + }; + assert2.isNotNumber = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNumber, true).to.not.be.a("number"); + }; + assert2.isFinite = function(val, msg) { + new Assertion2(val, msg, assert2.isFinite, true).to.be.finite; + }; + assert2.isBoolean = function(val, msg) { + new Assertion2(val, msg, assert2.isBoolean, true).to.be.a("boolean"); + }; + assert2.isNotBoolean = function(val, msg) { + new Assertion2(val, msg, assert2.isNotBoolean, true).to.not.be.a("boolean"); + }; + assert2.typeOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.typeOf, true).to.be.a(type); + }; + assert2.notTypeOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.notTypeOf, true).to.not.be.a(type); + }; + assert2.instanceOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.instanceOf, true).to.be.instanceOf(type); + }; + assert2.notInstanceOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.notInstanceOf, true).to.not.be.instanceOf(type); + }; + assert2.include = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.include, true).include(inc); + }; + assert2.notInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notInclude, true).not.include(inc); + }; + assert2.deepInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepInclude, true).deep.include(inc); + }; + assert2.notDeepInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepInclude, true).not.deep.include(inc); + }; + assert2.nestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.nestedInclude, true).nested.include(inc); + }; + assert2.notNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notNestedInclude, true).not.nested.include(inc); + }; + assert2.deepNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepNestedInclude, true).deep.nested.include(inc); + }; + assert2.notDeepNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepNestedInclude, true).not.deep.nested.include(inc); + }; + assert2.ownInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.ownInclude, true).own.include(inc); + }; + assert2.notOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notOwnInclude, true).not.own.include(inc); + }; + assert2.deepOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepOwnInclude, true).deep.own.include(inc); + }; + assert2.notDeepOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepOwnInclude, true).not.deep.own.include(inc); + }; + assert2.match = function(exp, re, msg) { + new Assertion2(exp, msg, assert2.match, true).to.match(re); + }; + assert2.notMatch = function(exp, re, msg) { + new Assertion2(exp, msg, assert2.notMatch, true).to.not.match(re); + }; + assert2.property = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.property, true).to.have.property(prop); + }; + assert2.notProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notProperty, true).to.not.have.property(prop); + }; + assert2.propertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.propertyVal, true).to.have.property(prop, val); + }; + assert2.notPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notPropertyVal, true).to.not.have.property(prop, val); + }; + assert2.deepPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.deepPropertyVal, true).to.have.deep.property(prop, val); + }; + assert2.notDeepPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notDeepPropertyVal, true).to.not.have.deep.property(prop, val); + }; + assert2.ownProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.ownProperty, true).to.have.own.property(prop); + }; + assert2.notOwnProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notOwnProperty, true).to.not.have.own.property(prop); + }; + assert2.ownPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.ownPropertyVal, true).to.have.own.property(prop, value); + }; + assert2.notOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.notOwnPropertyVal, true).to.not.have.own.property(prop, value); + }; + assert2.deepOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.deepOwnPropertyVal, true).to.have.deep.own.property(prop, value); + }; + assert2.notDeepOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.notDeepOwnPropertyVal, true).to.not.have.deep.own.property(prop, value); + }; + assert2.nestedProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.nestedProperty, true).to.have.nested.property(prop); + }; + assert2.notNestedProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notNestedProperty, true).to.not.have.nested.property(prop); + }; + assert2.nestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.nestedPropertyVal, true).to.have.nested.property(prop, val); + }; + assert2.notNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notNestedPropertyVal, true).to.not.have.nested.property(prop, val); + }; + assert2.deepNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.deepNestedPropertyVal, true).to.have.deep.nested.property(prop, val); + }; + assert2.notDeepNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notDeepNestedPropertyVal, true).to.not.have.deep.nested.property(prop, val); + }; + assert2.lengthOf = function(exp, len, msg) { + new Assertion2(exp, msg, assert2.lengthOf, true).to.have.lengthOf(len); + }; + assert2.hasAnyKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAnyKeys, true).to.have.any.keys(keys); + }; + assert2.hasAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAllKeys, true).to.have.all.keys(keys); + }; + assert2.containsAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.containsAllKeys, true).to.contain.all.keys(keys); + }; + assert2.doesNotHaveAnyKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAnyKeys, true).to.not.have.any.keys(keys); + }; + assert2.doesNotHaveAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAllKeys, true).to.not.have.all.keys(keys); + }; + assert2.hasAnyDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAnyDeepKeys, true).to.have.any.deep.keys(keys); + }; + assert2.hasAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAllDeepKeys, true).to.have.all.deep.keys(keys); + }; + assert2.containsAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.containsAllDeepKeys, true).to.contain.all.deep.keys(keys); + }; + assert2.doesNotHaveAnyDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAnyDeepKeys, true).to.not.have.any.deep.keys(keys); + }; + assert2.doesNotHaveAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAllDeepKeys, true).to.not.have.all.deep.keys(keys); + }; + assert2.throws = function(fn, errorLike, errMsgMatcher, msg) { + if ("string" === typeof errorLike || errorLike instanceof RegExp) { + errMsgMatcher = errorLike; + errorLike = null; + } + var assertErr = new Assertion2(fn, msg, assert2.throws, true).to.throw(errorLike, errMsgMatcher); + return flag(assertErr, "object"); + }; + assert2.doesNotThrow = function(fn, errorLike, errMsgMatcher, msg) { + if ("string" === typeof errorLike || errorLike instanceof RegExp) { + errMsgMatcher = errorLike; + errorLike = null; + } + new Assertion2(fn, msg, assert2.doesNotThrow, true).to.not.throw(errorLike, errMsgMatcher); + }; + assert2.operator = function(val, operator, val2, msg) { + var ok; + switch (operator) { + case "==": + ok = val == val2; + break; + case "===": + ok = val === val2; + break; + case ">": + ok = val > val2; + break; + case ">=": + ok = val >= val2; + break; + case "<": + ok = val < val2; + break; + case "<=": + ok = val <= val2; + break; + case "!=": + ok = val != val2; + break; + case "!==": + ok = val !== val2; + break; + default: + msg = msg ? msg + ": " : msg; + throw new chai2.AssertionError( + msg + 'Invalid operator "' + operator + '"', + void 0, + assert2.operator + ); + } + var test = new Assertion2(ok, msg, assert2.operator, true); + test.assert( + true === flag(test, "object"), + "expected " + util2.inspect(val) + " to be " + operator + " " + util2.inspect(val2), + "expected " + util2.inspect(val) + " to not be " + operator + " " + util2.inspect(val2) + ); + }; + assert2.closeTo = function(act, exp, delta, msg) { + new Assertion2(act, msg, assert2.closeTo, true).to.be.closeTo(exp, delta); + }; + assert2.approximately = function(act, exp, delta, msg) { + new Assertion2(act, msg, assert2.approximately, true).to.be.approximately(exp, delta); + }; + assert2.sameMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameMembers, true).to.have.same.members(set2); + }; + assert2.notSameMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameMembers, true).to.not.have.same.members(set2); + }; + assert2.sameDeepMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameDeepMembers, true).to.have.same.deep.members(set2); + }; + assert2.notSameDeepMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameDeepMembers, true).to.not.have.same.deep.members(set2); + }; + assert2.sameOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameOrderedMembers, true).to.have.same.ordered.members(set2); + }; + assert2.notSameOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameOrderedMembers, true).to.not.have.same.ordered.members(set2); + }; + assert2.sameDeepOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameDeepOrderedMembers, true).to.have.same.deep.ordered.members(set2); + }; + assert2.notSameDeepOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameDeepOrderedMembers, true).to.not.have.same.deep.ordered.members(set2); + }; + assert2.includeMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeMembers, true).to.include.members(subset); + }; + assert2.notIncludeMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeMembers, true).to.not.include.members(subset); + }; + assert2.includeDeepMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeDeepMembers, true).to.include.deep.members(subset); + }; + assert2.notIncludeDeepMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeDeepMembers, true).to.not.include.deep.members(subset); + }; + assert2.includeOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeOrderedMembers, true).to.include.ordered.members(subset); + }; + assert2.notIncludeOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeOrderedMembers, true).to.not.include.ordered.members(subset); + }; + assert2.includeDeepOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeDeepOrderedMembers, true).to.include.deep.ordered.members(subset); + }; + assert2.notIncludeDeepOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeDeepOrderedMembers, true).to.not.include.deep.ordered.members(subset); + }; + assert2.oneOf = function(inList, list, msg) { + new Assertion2(inList, msg, assert2.oneOf, true).to.be.oneOf(list); + }; + assert2.changes = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changes, true).to.change(obj, prop); + }; + assert2.changesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changesBy, true).to.change(obj, prop).by(delta); + }; + assert2.doesNotChange = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotChange, true).to.not.change(obj, prop); + }; + assert2.changesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changesButNotBy, true).to.change(obj, prop).but.not.by(delta); + }; + assert2.increases = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.increases, true).to.increase(obj, prop); + }; + assert2.increasesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.increasesBy, true).to.increase(obj, prop).by(delta); + }; + assert2.doesNotIncrease = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotIncrease, true).to.not.increase(obj, prop); + }; + assert2.increasesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta); + }; + assert2.decreases = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.decreases, true).to.decrease(obj, prop); + }; + assert2.decreasesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.decreasesBy, true).to.decrease(obj, prop).by(delta); + }; + assert2.doesNotDecrease = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotDecrease, true).to.not.decrease(obj, prop); + }; + assert2.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta); + }; + assert2.decreasesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta); + }; + assert2.ifError = function(val) { + if (val) { + throw val; + } + }; + assert2.isExtensible = function(obj, msg) { + new Assertion2(obj, msg, assert2.isExtensible, true).to.be.extensible; + }; + assert2.isNotExtensible = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotExtensible, true).to.not.be.extensible; + }; + assert2.isSealed = function(obj, msg) { + new Assertion2(obj, msg, assert2.isSealed, true).to.be.sealed; + }; + assert2.isNotSealed = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotSealed, true).to.not.be.sealed; + }; + assert2.isFrozen = function(obj, msg) { + new Assertion2(obj, msg, assert2.isFrozen, true).to.be.frozen; + }; + assert2.isNotFrozen = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotFrozen, true).to.not.be.frozen; + }; + assert2.isEmpty = function(val, msg) { + new Assertion2(val, msg, assert2.isEmpty, true).to.be.empty; + }; + assert2.isNotEmpty = function(val, msg) { + new Assertion2(val, msg, assert2.isNotEmpty, true).to.not.be.empty; + }; + (function alias(name, as) { + assert2[as] = assert2[name]; + return alias; + })("isOk", "ok")("isNotOk", "notOk")("throws", "throw")("throws", "Throw")("isExtensible", "extensible")("isNotExtensible", "notExtensible")("isSealed", "sealed")("isNotSealed", "notSealed")("isFrozen", "frozen")("isNotFrozen", "notFrozen")("isEmpty", "empty")("isNotEmpty", "notEmpty"); + }; + } +}); + +// ../../node_modules/chai/lib/chai.js +var require_chai = __commonJS({ + "../../node_modules/chai/lib/chai.js"(exports) { + var used = []; + exports.version = "4.3.8"; + exports.AssertionError = require_assertion_error(); + var util2 = require_utils(); + exports.use = function(fn) { + if (!~used.indexOf(fn)) { + fn(exports, util2); + used.push(fn); + } + return exports; + }; + exports.util = util2; + var config2 = require_config(); + exports.config = config2; + var assertion = require_assertion(); + exports.use(assertion); + var core2 = require_assertions(); + exports.use(core2); + var expect2 = require_expect(); + exports.use(expect2); + var should2 = require_should(); + exports.use(should2); + var assert2 = require_assert(); + exports.use(assert2); + } +}); + +// ../../node_modules/chai/index.js +var require_chai2 = __commonJS({ + "../../node_modules/chai/index.js"(exports, module) { + module.exports = require_chai(); + } +}); + +// ../../node_modules/chai/index.mjs +var import_index = __toESM(require_chai2(), 1); +var expect = import_index.default.expect; +var version = import_index.default.version; +var Assertion = import_index.default.Assertion; +var AssertionError = import_index.default.AssertionError; +var util = import_index.default.util; +var config = import_index.default.config; +var use = import_index.default.use; +var should = import_index.default.should; +var assert = import_index.default.assert; +var core = import_index.default.core; +var chai_default = import_index.default; +export { + Assertion, + AssertionError, + assert, + config, + core, + chai_default as default, + expect, + should, + use, + util, + version +}; +/*! Bundled license information: + +assertion-error/index.js: + (*! + * assertion-error + * Copyright(c) 2013 Jake Luer + * MIT Licensed + *) + (*! + * Return a function that will copy properties from + * one object to another excluding any originally + * listed. Returned function will create a new `{}`. + * + * @param {String} excluded properties ... + * @return {Function} + *) + (*! + * Primary Exports + *) + (*! + * Inherit from Error.prototype + *) + (*! + * Statically set name + *) + (*! + * Ensure correct constructor + *) + +chai/lib/chai/utils/flag.js: + (*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/test.js: + (*! + * Chai - test utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/expectTypes.js: + (*! + * Chai - expectTypes utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getActual.js: + (*! + * Chai - getActual utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/objDisplay.js: + (*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/getMessage.js: + (*! + * Chai - message composition utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/transferFlags.js: + (*! + * Chai - transferFlags utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +deep-eql/index.js: + (*! + * deep-eql + * Copyright(c) 2013 Jake Luer + * MIT Licensed + *) + (*! + * Check to see if the MemoizeMap has recorded a result of the two operands + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {MemoizeMap} memoizeMap + * @returns {Boolean|null} result + *) + (*! + * Set the result of the equality into the MemoizeMap + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {MemoizeMap} memoizeMap + * @param {Boolean} result + *) + (*! + * Primary Export + *) + (*! + * The main logic of the `deepEqual` function. + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Object} [options] (optional) Additional options + * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality. + * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of + complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular + references to blow the stack. + * @return {Boolean} equal match + *) + (*! + * Compare two Regular Expressions for equality. + * + * @param {RegExp} leftHandOperand + * @param {RegExp} rightHandOperand + * @return {Boolean} result + *) + (*! + * Compare two Sets/Maps for equality. Faster than other equality functions. + * + * @param {Set} leftHandOperand + * @param {Set} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers. + * + * @param {Iterable} leftHandOperand + * @param {Iterable} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Simple equality for generator objects such as those returned by generator functions. + * + * @param {Iterable} leftHandOperand + * @param {Iterable} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Determine if the given object has an @@iterator function. + * + * @param {Object} target + * @return {Boolean} `true` if the object has an @@iterator function. + *) + (*! + * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array. + * This will consume the iterator - which could have side effects depending on the @@iterator implementation. + * + * @param {Object} target + * @returns {Array} an array of entries from the @@iterator function + *) + (*! + * Gets all entries from a Generator. This will consume the generator - which could have side effects. + * + * @param {Generator} target + * @returns {Array} an array of entries from the Generator. + *) + (*! + * Gets all own and inherited enumerable keys from a target. + * + * @param {Object} target + * @returns {Array} an array of own and inherited enumerable keys from the target. + *) + (*! + * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of + * each key. If any value of the given key is not equal, the function will return false (early). + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual` + * for each enumerable key in the object. + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Returns true if the argument is a primitive. + * + * This intentionally returns true for all objects that can be compared by reference, + * including functions and symbols. + * + * @param {Mixed} value + * @return {Boolean} result + *) + +chai/lib/chai/utils/isProxyEnabled.js: + (*! + * Chai - isProxyEnabled helper + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addProperty.js: + (*! + * Chai - addProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addLengthGuard.js: + (*! + * Chai - addLengthGuard utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getProperties.js: + (*! + * Chai - getProperties utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/proxify.js: + (*! + * Chai - proxify utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addMethod.js: + (*! + * Chai - addMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/overwriteProperty.js: + (*! + * Chai - overwriteProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/overwriteMethod.js: + (*! + * Chai - overwriteMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addChainableMethod.js: + (*! + * Chai - addChainingMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + (*! + * Module variables + *) + +chai/lib/chai/utils/overwriteChainableMethod.js: + (*! + * Chai - overwriteChainableMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/compareByInspect.js: + (*! + * Chai - compareByInspect utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js: + (*! + * Chai - getOwnEnumerablePropertySymbols utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getOwnEnumerableProperties.js: + (*! + * Chai - getOwnEnumerableProperties utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/isNaN.js: + (*! + * Chai - isNaN utility + * Copyright(c) 2012-2015 Sakthipriyan Vairamani + * MIT Licensed + *) + +chai/lib/chai/utils/index.js: + (*! + * chai + * Copyright(c) 2011 Jake Luer + * MIT Licensed + *) + (*! + * Dependencies that are used for multiple exports are required here only once + *) + (*! + * test utility + *) + (*! + * type utility + *) + (*! + * expectTypes utility + *) + (*! + * message utility + *) + (*! + * actual utility + *) + (*! + * Inspect util + *) + (*! + * Object Display util + *) + (*! + * Flag utility + *) + (*! + * Flag transferring utility + *) + (*! + * Deep equal utility + *) + (*! + * Deep path info + *) + (*! + * Check if a property exists + *) + (*! + * Function name + *) + (*! + * add Property + *) + (*! + * add Method + *) + (*! + * overwrite Property + *) + (*! + * overwrite Method + *) + (*! + * Add a chainable method + *) + (*! + * Overwrite chainable method + *) + (*! + * Compare by inspect method + *) + (*! + * Get own enumerable property symbols method + *) + (*! + * Get own enumerable properties method + *) + (*! + * Checks error against a given set of criteria + *) + (*! + * Proxify util + *) + (*! + * addLengthGuard util + *) + (*! + * isProxyEnabled helper + *) + (*! + * isNaN method + *) + (*! + * getOperator method + *) + +chai/lib/chai/assertion.js: + (*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies. + *) + (*! + * Module export. + *) + (*! + * Assertion Constructor + * + * Creates object for chaining. + * + * `Assertion` objects contain metadata in the form of flags. Three flags can + * be assigned during instantiation by passing arguments to this constructor: + * + * - `object`: This flag contains the target of the assertion. For example, in + * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will + * contain `numKittens` so that the `equal` assertion can reference it when + * needed. + * + * - `message`: This flag contains an optional custom error message to be + * prepended to the error message that's generated by the assertion when it + * fails. + * + * - `ssfi`: This flag stands for "start stack function indicator". It + * contains a function reference that serves as the starting point for + * removing frames from the stack trace of the error that's created by the + * assertion when it fails. The goal is to provide a cleaner stack trace to + * end users by removing Chai's internal functions. Note that it only works + * in environments that support `Error.captureStackTrace`, and only when + * `Chai.config.includeStack` hasn't been set to `false`. + * + * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag + * should retain its current value, even as assertions are chained off of + * this object. This is usually set to `true` when creating a new assertion + * from within another assertion. It's also temporarily set to `true` before + * an overwritten assertion gets called by the overwriting assertion. + * + * - `eql`: This flag contains the deepEqual function to be used by the assertion. + * + * @param {Mixed} obj target of the assertion + * @param {String} msg (optional) custom error message + * @param {Function} ssfi (optional) starting point for removing stack frames + * @param {Boolean} lockSsfi (optional) whether or not the ssfi flag is locked + * @api private + *) + (*! + * ### ._obj + * + * Quick reference to stored `actual` value for plugin developers. + * + * @api private + *) + +chai/lib/chai/core/assertions.js: + (*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/expect.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/should.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/assert.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Chai dependencies. + *) + (*! + * Module export. + *) + (*! + * ### .ifError(object) + * + * Asserts if value is not a false value, and throws if it is a true value. + * This is added to allow for chai to be a drop-in replacement for Node's + * assert class. + * + * var err = new Error('I am a custom error'); + * assert.ifError(err); // Rethrows err! + * + * @name ifError + * @param {Object} object + * @namespace Assert + * @api public + *) + (*! + * Aliases. + *) + +chai/lib/chai.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Chai version + *) + (*! + * Assertion Error + *) + (*! + * Utils for plugins (not exported) + *) + (*! + * Utility Functions + *) + (*! + * Configuration + *) + (*! + * Primary `Assertion` prototype + *) + (*! + * Core Assertions + *) + (*! + * Expect interface + *) + (*! + * Should interface + *) + (*! + * Assert interface + *) +*/ +//# sourceMappingURL=vitest___chai.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___chai.js.map b/packages/ridb/node_modules/.vite/deps/vitest___chai.js.map new file mode 100644 index 0000000..e85808d --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___chai.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/assertion-error/index.js", "../../../../../node_modules/pathval/index.js", "../../../../../node_modules/chai/lib/chai/utils/flag.js", "../../../../../node_modules/chai/lib/chai/utils/test.js", "../../../../../node_modules/type-detect/type-detect.js", "../../../../../node_modules/chai/lib/chai/utils/expectTypes.js", "../../../../../node_modules/chai/lib/chai/utils/getActual.js", "../../../../../node_modules/get-func-name/index.js", "vite:cjs-external-facade:loupe", "../../../../../node_modules/chai/lib/chai/config.js", "../../../../../node_modules/chai/lib/chai/utils/inspect.js", "../../../../../node_modules/chai/lib/chai/utils/objDisplay.js", "../../../../../node_modules/chai/lib/chai/utils/getMessage.js", "../../../../../node_modules/chai/lib/chai/utils/transferFlags.js", "../../../../../node_modules/deep-eql/index.js", "../../../../../node_modules/chai/lib/chai/utils/isProxyEnabled.js", "../../../../../node_modules/chai/lib/chai/utils/addProperty.js", "../../../../../node_modules/chai/lib/chai/utils/addLengthGuard.js", "../../../../../node_modules/chai/lib/chai/utils/getProperties.js", "../../../../../node_modules/chai/lib/chai/utils/proxify.js", "../../../../../node_modules/chai/lib/chai/utils/addMethod.js", "../../../../../node_modules/chai/lib/chai/utils/overwriteProperty.js", "../../../../../node_modules/chai/lib/chai/utils/overwriteMethod.js", "../../../../../node_modules/chai/lib/chai/utils/addChainableMethod.js", "../../../../../node_modules/chai/lib/chai/utils/overwriteChainableMethod.js", "../../../../../node_modules/chai/lib/chai/utils/compareByInspect.js", "../../../../../node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js", "../../../../../node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js", "../../../../../node_modules/check-error/index.js", "../../../../../node_modules/chai/lib/chai/utils/isNaN.js", "../../../../../node_modules/chai/lib/chai/utils/getOperator.js", "../../../../../node_modules/chai/lib/chai/utils/index.js", "../../../../../node_modules/chai/lib/chai/assertion.js", "../../../../../node_modules/chai/lib/chai/core/assertions.js", "../../../../../node_modules/chai/lib/chai/interface/expect.js", "../../../../../node_modules/chai/lib/chai/interface/should.js", "../../../../../node_modules/chai/lib/chai/interface/assert.js", "../../../../../node_modules/chai/lib/chai.js", "../../../../../node_modules/chai/index.js", "../../../../../node_modules/chai/index.mjs"], + "sourcesContent": ["/*!\n * assertion-error\n * Copyright(c) 2013 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Return a function that will copy properties from\n * one object to another excluding any originally\n * listed. Returned function will create a new `{}`.\n *\n * @param {String} excluded properties ...\n * @return {Function}\n */\n\nfunction exclude () {\n var excludes = [].slice.call(arguments);\n\n function excludeProps (res, obj) {\n Object.keys(obj).forEach(function (key) {\n if (!~excludes.indexOf(key)) res[key] = obj[key];\n });\n }\n\n return function extendExclude () {\n var args = [].slice.call(arguments)\n , i = 0\n , res = {};\n\n for (; i < args.length; i++) {\n excludeProps(res, args[i]);\n }\n\n return res;\n };\n};\n\n/*!\n * Primary Exports\n */\n\nmodule.exports = AssertionError;\n\n/**\n * ### AssertionError\n *\n * An extension of the JavaScript `Error` constructor for\n * assertion and validation scenarios.\n *\n * @param {String} message\n * @param {Object} properties to include (optional)\n * @param {callee} start stack function (optional)\n */\n\nfunction AssertionError (message, _props, ssf) {\n var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON')\n , props = extend(_props || {});\n\n // default values\n this.message = message || 'Unspecified AssertionError';\n this.showDiff = false;\n\n // copy from properties\n for (var key in props) {\n this[key] = props[key];\n }\n\n // capture stack trace\n ssf = ssf || AssertionError;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ssf);\n } else {\n try {\n throw new Error();\n } catch(e) {\n this.stack = e.stack;\n }\n }\n}\n\n/*!\n * Inherit from Error.prototype\n */\n\nAssertionError.prototype = Object.create(Error.prototype);\n\n/*!\n * Statically set name\n */\n\nAssertionError.prototype.name = 'AssertionError';\n\n/*!\n * Ensure correct constructor\n */\n\nAssertionError.prototype.constructor = AssertionError;\n\n/**\n * Allow errors to be converted to JSON for static transfer.\n *\n * @param {Boolean} include stack (default: `true`)\n * @return {Object} object that can be `JSON.stringify`\n */\n\nAssertionError.prototype.toJSON = function (stack) {\n var extend = exclude('constructor', 'toJSON', 'stack')\n , props = extend({ name: this.name }, this);\n\n // include stack if exists and not turned off\n if (false !== stack && this.stack) {\n props.stack = this.stack;\n }\n\n return props;\n};\n", "'use strict';\n\n/* !\n * Chai - pathval utility\n * Copyright(c) 2012-2014 Jake Luer \n * @see https://github.com/logicalparadox/filtr\n * MIT Licensed\n */\n\n/**\n * ### .hasProperty(object, name)\n *\n * This allows checking whether an object has own\n * or inherited from prototype chain named property.\n *\n * Basically does the same thing as the `in`\n * operator but works properly with null/undefined values\n * and other primitives.\n *\n * var obj = {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n *\n * The following would be the results.\n *\n * hasProperty(obj, 'str'); // true\n * hasProperty(obj, 'constructor'); // true\n * hasProperty(obj, 'bar'); // false\n *\n * hasProperty(obj.str, 'length'); // true\n * hasProperty(obj.str, 1); // true\n * hasProperty(obj.str, 5); // false\n *\n * hasProperty(obj.arr, 'length'); // true\n * hasProperty(obj.arr, 2); // true\n * hasProperty(obj.arr, 3); // false\n *\n * @param {Object} object\n * @param {String|Symbol} name\n * @returns {Boolean} whether it exists\n * @namespace Utils\n * @name hasProperty\n * @api public\n */\n\nfunction hasProperty(obj, name) {\n if (typeof obj === 'undefined' || obj === null) {\n return false;\n }\n\n // The `in` operator does not work with primitives.\n return name in Object(obj);\n}\n\n/* !\n * ## parsePath(path)\n *\n * Helper function used to parse string object\n * paths. Use in conjunction with `internalGetPathValue`.\n *\n * var parsed = parsePath('myobject.property.subprop');\n *\n * ### Paths:\n *\n * * Can be infinitely deep and nested.\n * * Arrays are also valid using the formal `myobject.document[3].property`.\n * * Literal dots and brackets (not delimiter) must be backslash-escaped.\n *\n * @param {String} path\n * @returns {Object} parsed\n * @api private\n */\n\nfunction parsePath(path) {\n var str = path.replace(/([^\\\\])\\[/g, '$1.[');\n var parts = str.match(/(\\\\\\.|[^.]+?)+/g);\n return parts.map(function mapMatches(value) {\n if (\n value === 'constructor' ||\n value === '__proto__' ||\n value === 'prototype'\n ) {\n return {};\n }\n var regexp = /^\\[(\\d+)\\]$/;\n var mArr = regexp.exec(value);\n var parsed = null;\n if (mArr) {\n parsed = { i: parseFloat(mArr[1]) };\n } else {\n parsed = { p: value.replace(/\\\\([.[\\]])/g, '$1') };\n }\n\n return parsed;\n });\n}\n\n/* !\n * ## internalGetPathValue(obj, parsed[, pathDepth])\n *\n * Helper companion function for `.parsePath` that returns\n * the value located at the parsed address.\n *\n * var value = getPathValue(obj, parsed);\n *\n * @param {Object} object to search against\n * @param {Object} parsed definition from `parsePath`.\n * @param {Number} depth (nesting level) of the property we want to retrieve\n * @returns {Object|Undefined} value\n * @api private\n */\n\nfunction internalGetPathValue(obj, parsed, pathDepth) {\n var temporaryValue = obj;\n var res = null;\n pathDepth = typeof pathDepth === 'undefined' ? parsed.length : pathDepth;\n\n for (var i = 0; i < pathDepth; i++) {\n var part = parsed[i];\n if (temporaryValue) {\n if (typeof part.p === 'undefined') {\n temporaryValue = temporaryValue[part.i];\n } else {\n temporaryValue = temporaryValue[part.p];\n }\n\n if (i === pathDepth - 1) {\n res = temporaryValue;\n }\n }\n }\n\n return res;\n}\n\n/* !\n * ## internalSetPathValue(obj, value, parsed)\n *\n * Companion function for `parsePath` that sets\n * the value located at a parsed address.\n *\n * internalSetPathValue(obj, 'value', parsed);\n *\n * @param {Object} object to search and define on\n * @param {*} value to use upon set\n * @param {Object} parsed definition from `parsePath`\n * @api private\n */\n\nfunction internalSetPathValue(obj, val, parsed) {\n var tempObj = obj;\n var pathDepth = parsed.length;\n var part = null;\n // Here we iterate through every part of the path\n for (var i = 0; i < pathDepth; i++) {\n var propName = null;\n var propVal = null;\n part = parsed[i];\n\n // If it's the last part of the path, we set the 'propName' value with the property name\n if (i === pathDepth - 1) {\n propName = typeof part.p === 'undefined' ? part.i : part.p;\n // Now we set the property with the name held by 'propName' on object with the desired val\n tempObj[propName] = val;\n } else if (typeof part.p !== 'undefined' && tempObj[part.p]) {\n tempObj = tempObj[part.p];\n } else if (typeof part.i !== 'undefined' && tempObj[part.i]) {\n tempObj = tempObj[part.i];\n } else {\n // If the obj doesn't have the property we create one with that name to define it\n var next = parsed[i + 1];\n // Here we set the name of the property which will be defined\n propName = typeof part.p === 'undefined' ? part.i : part.p;\n // Here we decide if this property will be an array or a new object\n propVal = typeof next.p === 'undefined' ? [] : {};\n tempObj[propName] = propVal;\n tempObj = tempObj[propName];\n }\n }\n}\n\n/**\n * ### .getPathInfo(object, path)\n *\n * This allows the retrieval of property info in an\n * object given a string path.\n *\n * The path info consists of an object with the\n * following properties:\n *\n * * parent - The parent object of the property referenced by `path`\n * * name - The name of the final property, a number if it was an array indexer\n * * value - The value of the property, if it exists, otherwise `undefined`\n * * exists - Whether the property exists or not\n *\n * @param {Object} object\n * @param {String} path\n * @returns {Object} info\n * @namespace Utils\n * @name getPathInfo\n * @api public\n */\n\nfunction getPathInfo(obj, path) {\n var parsed = parsePath(path);\n var last = parsed[parsed.length - 1];\n var info = {\n parent:\n parsed.length > 1 ?\n internalGetPathValue(obj, parsed, parsed.length - 1) :\n obj,\n name: last.p || last.i,\n value: internalGetPathValue(obj, parsed),\n };\n info.exists = hasProperty(info.parent, info.name);\n\n return info;\n}\n\n/**\n * ### .getPathValue(object, path)\n *\n * This allows the retrieval of values in an\n * object given a string path.\n *\n * var obj = {\n * prop1: {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n * , prop2: {\n * arr: [ { nested: 'Universe' } ]\n * , str: 'Hello again!'\n * }\n * }\n *\n * The following would be the results.\n *\n * getPathValue(obj, 'prop1.str'); // Hello\n * getPathValue(obj, 'prop1.att[2]'); // b\n * getPathValue(obj, 'prop2.arr[0].nested'); // Universe\n *\n * @param {Object} object\n * @param {String} path\n * @returns {Object} value or `undefined`\n * @namespace Utils\n * @name getPathValue\n * @api public\n */\n\nfunction getPathValue(obj, path) {\n var info = getPathInfo(obj, path);\n return info.value;\n}\n\n/**\n * ### .setPathValue(object, path, value)\n *\n * Define the value in an object at a given string path.\n *\n * ```js\n * var obj = {\n * prop1: {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n * , prop2: {\n * arr: [ { nested: 'Universe' } ]\n * , str: 'Hello again!'\n * }\n * };\n * ```\n *\n * The following would be acceptable.\n *\n * ```js\n * var properties = require('tea-properties');\n * properties.set(obj, 'prop1.str', 'Hello Universe!');\n * properties.set(obj, 'prop1.arr[2]', 'B');\n * properties.set(obj, 'prop2.arr[0].nested.value', { hello: 'universe' });\n * ```\n *\n * @param {Object} object\n * @param {String} path\n * @param {Mixed} value\n * @api private\n */\n\nfunction setPathValue(obj, path, val) {\n var parsed = parsePath(path);\n internalSetPathValue(obj, val, parsed);\n return obj;\n}\n\nmodule.exports = {\n hasProperty: hasProperty,\n getPathInfo: getPathInfo,\n getPathValue: getPathValue,\n setPathValue: setPathValue,\n};\n", "/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .flag(object, key, [value])\n *\n * Get or set a flag value on an object. If a\n * value is provided it will be set, else it will\n * return the currently set value or `undefined` if\n * the value is not set.\n *\n * utils.flag(this, 'foo', 'bar'); // setter\n * utils.flag(this, 'foo'); // getter, returns `bar`\n *\n * @param {Object} object constructed Assertion\n * @param {String} key\n * @param {Mixed} value (optional)\n * @namespace Utils\n * @name flag\n * @api private\n */\n\nmodule.exports = function flag(obj, key, value) {\n var flags = obj.__flags || (obj.__flags = Object.create(null));\n if (arguments.length === 3) {\n flags[key] = value;\n } else {\n return flags[key];\n }\n};\n", "/*!\n * Chai - test utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar flag = require('./flag');\n\n/**\n * ### .test(object, expression)\n *\n * Test an object for expression.\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name test\n */\n\nmodule.exports = function test(obj, args) {\n var negate = flag(obj, 'negate')\n , expr = args[0];\n return negate ? !expr : expr;\n};\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.typeDetect = factory());\n})(this, (function () { 'use strict';\n\n var promiseExists = typeof Promise === 'function';\n var globalObject = (function (Obj) {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Obj, 'typeDetectGlobalObject', {\n get: function get() {\n return this;\n },\n configurable: true,\n });\n var global = typeDetectGlobalObject;\n delete Obj.typeDetectGlobalObject;\n return global;\n })(Object.prototype);\n var symbolExists = typeof Symbol !== 'undefined';\n var mapExists = typeof Map !== 'undefined';\n var setExists = typeof Set !== 'undefined';\n var weakMapExists = typeof WeakMap !== 'undefined';\n var weakSetExists = typeof WeakSet !== 'undefined';\n var dataViewExists = typeof DataView !== 'undefined';\n var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\n var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\n var setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\n var mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\n var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\n var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\n var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\n var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\n var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\n var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\n var toStringLeftSliceLength = 8;\n var toStringRightSliceLength = -1;\n function typeDetect(obj) {\n var typeofObj = typeof obj;\n if (typeofObj !== 'object') {\n return typeofObj;\n }\n if (obj === null) {\n return 'null';\n }\n if (obj === globalObject) {\n return 'global';\n }\n if (Array.isArray(obj) &&\n (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) {\n return 'Array';\n }\n if (typeof window === 'object' && window !== null) {\n if (typeof window.location === 'object' && obj === window.location) {\n return 'Location';\n }\n if (typeof window.document === 'object' && obj === window.document) {\n return 'Document';\n }\n if (typeof window.navigator === 'object') {\n if (typeof window.navigator.mimeTypes === 'object' &&\n obj === window.navigator.mimeTypes) {\n return 'MimeTypeArray';\n }\n if (typeof window.navigator.plugins === 'object' &&\n obj === window.navigator.plugins) {\n return 'PluginArray';\n }\n }\n if ((typeof window.HTMLElement === 'function' ||\n typeof window.HTMLElement === 'object') &&\n obj instanceof window.HTMLElement) {\n if (obj.tagName === 'BLOCKQUOTE') {\n return 'HTMLQuoteElement';\n }\n if (obj.tagName === 'TD') {\n return 'HTMLTableDataCellElement';\n }\n if (obj.tagName === 'TH') {\n return 'HTMLTableHeaderCellElement';\n }\n }\n }\n var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n if (typeof stringTag === 'string') {\n return stringTag;\n }\n var objPrototype = Object.getPrototypeOf(obj);\n if (objPrototype === RegExp.prototype) {\n return 'RegExp';\n }\n if (objPrototype === Date.prototype) {\n return 'Date';\n }\n if (promiseExists && objPrototype === Promise.prototype) {\n return 'Promise';\n }\n if (setExists && objPrototype === Set.prototype) {\n return 'Set';\n }\n if (mapExists && objPrototype === Map.prototype) {\n return 'Map';\n }\n if (weakSetExists && objPrototype === WeakSet.prototype) {\n return 'WeakSet';\n }\n if (weakMapExists && objPrototype === WeakMap.prototype) {\n return 'WeakMap';\n }\n if (dataViewExists && objPrototype === DataView.prototype) {\n return 'DataView';\n }\n if (mapExists && objPrototype === mapIteratorPrototype) {\n return 'Map Iterator';\n }\n if (setExists && objPrototype === setIteratorPrototype) {\n return 'Set Iterator';\n }\n if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n return 'Array Iterator';\n }\n if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n return 'String Iterator';\n }\n if (objPrototype === null) {\n return 'Object';\n }\n return Object\n .prototype\n .toString\n .call(obj)\n .slice(toStringLeftSliceLength, toStringRightSliceLength);\n }\n\n return typeDetect;\n\n}));\n", "/*!\n * Chai - expectTypes utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .expectTypes(obj, types)\n *\n * Ensures that the object being tested against is of a valid type.\n *\n * utils.expectTypes(this, ['array', 'object', 'string']);\n *\n * @param {Mixed} obj constructed Assertion\n * @param {Array} type A list of allowed types for this assertion\n * @namespace Utils\n * @name expectTypes\n * @api public\n */\n\nvar AssertionError = require('assertion-error');\nvar flag = require('./flag');\nvar type = require('type-detect');\n\nmodule.exports = function expectTypes(obj, types) {\n var flagMsg = flag(obj, 'message');\n var ssfi = flag(obj, 'ssfi');\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n obj = flag(obj, 'object');\n types = types.map(function (t) { return t.toLowerCase(); });\n types.sort();\n\n // Transforms ['lorem', 'ipsum'] into 'a lorem, or an ipsum'\n var str = types.map(function (t, index) {\n var art = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(t.charAt(0)) ? 'an' : 'a';\n var or = types.length > 1 && index === types.length - 1 ? 'or ' : '';\n return or + art + ' ' + t;\n }).join(', ');\n\n var objType = type(obj).toLowerCase();\n\n if (!types.some(function (expected) { return objType === expected; })) {\n throw new AssertionError(\n flagMsg + 'object tested must be ' + str + ', but ' + objType + ' given',\n undefined,\n ssfi\n );\n }\n};\n", "/*!\n * Chai - getActual utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getActual(object, [actual])\n *\n * Returns the `actual` value for an Assertion.\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getActual\n */\n\nmodule.exports = function getActual(obj, args) {\n return args.length > 4 ? args[4] : obj._obj;\n};\n", "'use strict';\n\n/* !\n * Chai - getFuncName utility\n * Copyright(c) 2012-2016 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getFuncName(constructorFn)\n *\n * Returns the name of a function.\n * When a non-function instance is passed, returns `null`.\n * This also includes a polyfill function if `aFunc.name` is not defined.\n *\n * @name getFuncName\n * @param {Function} funct\n * @namespace Utils\n * @api public\n */\n\nvar toString = Function.prototype.toString;\nvar functionNameMatch = /\\s*function(?:\\s|\\s*\\/\\*[^(?:*\\/)]+\\*\\/\\s*)*([^\\s\\(\\/]+)/;\nvar maxFunctionSourceLength = 512;\nfunction getFuncName(aFunc) {\n if (typeof aFunc !== 'function') {\n return null;\n }\n\n var name = '';\n if (typeof Function.prototype.name === 'undefined' && typeof aFunc.name === 'undefined') {\n // eslint-disable-next-line prefer-reflect\n var functionSource = toString.call(aFunc);\n // To avoid unconstrained resource consumption due to pathalogically large function names,\n // we limit the available return value to be less than 512 characters.\n if (functionSource.indexOf('(') > maxFunctionSourceLength) {\n return name;\n }\n // Here we run a polyfill if Function does not support the `name` property and if aFunc.name is not defined\n var match = functionSource.match(functionNameMatch);\n if (match) {\n name = match[1];\n }\n } else {\n // If we've got a `name` property we just use it\n name = aFunc.name;\n }\n\n return name;\n}\n\nmodule.exports = getFuncName;\n", "import * as m from \"vite-cjs-external-facade:loupe\";module.exports = m;", "module.exports = {\n\n /**\n * ### config.includeStack\n *\n * User configurable property, influences whether stack trace\n * is included in Assertion error message. Default of false\n * suppresses stack trace in the error message.\n *\n * chai.config.includeStack = true; // enable stack on error\n *\n * @param {Boolean}\n * @api public\n */\n\n includeStack: false,\n\n /**\n * ### config.showDiff\n *\n * User configurable property, influences whether or not\n * the `showDiff` flag should be included in the thrown\n * AssertionErrors. `false` will always be `false`; `true`\n * will be true when the assertion has requested a diff\n * be shown.\n *\n * @param {Boolean}\n * @api public\n */\n\n showDiff: true,\n\n /**\n * ### config.truncateThreshold\n *\n * User configurable property, sets length threshold for actual and\n * expected values in assertion errors. If this threshold is exceeded, for\n * example for large data structures, the value is replaced with something\n * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.\n *\n * Set it to zero if you want to disable truncating altogether.\n *\n * This is especially userful when doing assertions on arrays: having this\n * set to a reasonable large value makes the failure messages readily\n * inspectable.\n *\n * chai.config.truncateThreshold = 0; // disable truncating\n *\n * @param {Number}\n * @api public\n */\n\n truncateThreshold: 40,\n\n /**\n * ### config.useProxy\n *\n * User configurable property, defines if chai will use a Proxy to throw\n * an error when a non-existent property is read, which protects users\n * from typos when using property-based assertions.\n *\n * Set it to false if you want to disable this feature.\n *\n * chai.config.useProxy = false; // disable use of Proxy\n *\n * This feature is automatically disabled regardless of this config value\n * in environments that don't support proxies.\n *\n * @param {Boolean}\n * @api public\n */\n\n useProxy: true,\n\n /**\n * ### config.proxyExcludedKeys\n *\n * User configurable property, defines which properties should be ignored\n * instead of throwing an error if they do not exist on the assertion.\n * This is only applied if the environment Chai is running in supports proxies and\n * if the `useProxy` configuration setting is enabled.\n * By default, `then` and `inspect` will not throw an error if they do not exist on the\n * assertion object because the `.inspect` property is read by `util.inspect` (for example, when\n * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking.\n *\n * // By default these keys will not throw an error if they do not exist on the assertion object\n * chai.config.proxyExcludedKeys = ['then', 'inspect'];\n *\n * @param {Array}\n * @api public\n */\n\n proxyExcludedKeys: ['then', 'catch', 'inspect', 'toJSON'],\n\n /**\n * ### config.deepEqual\n *\n * User configurable property, defines which a custom function to use for deepEqual\n * comparisons.\n * By default, the function used is the one from the `deep-eql` package without custom comparator.\n *\n * // use a custom comparator\n * chai.config.deepEqual = (expected, actual) => {\n * return chai.util.eql(expected, actual, {\n * comparator: (expected, actual) => {\n * // for non number comparison, use the default behavior\n * if(typeof expected !== 'number') return null;\n * // allow a difference of 10 between compared numbers\n * return typeof actual === 'number' && Math.abs(actual - expected) < 10\n * }\n * })\n * };\n *\n * @param {Function}\n * @api public\n */\n\n deepEqual: null\n\n};\n", "// This is (almost) directly from Node.js utils\n// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js\n\nvar getName = require('get-func-name');\nvar loupe = require('loupe');\nvar config = require('../config');\n\nmodule.exports = inspect;\n\n/**\n * ### .inspect(obj, [showHidden], [depth], [colors])\n *\n * Echoes the value of a value. Tries to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Boolean} showHidden Flag that shows hidden (not enumerable)\n * properties of objects. Default is false.\n * @param {Number} depth Depth in which to descend in object. Default is 2.\n * @param {Boolean} colors Flag to turn on ANSI escape codes to color the\n * output. Default is false (no coloring).\n * @namespace Utils\n * @name inspect\n */\nfunction inspect(obj, showHidden, depth, colors) {\n var options = {\n colors: colors,\n depth: (typeof depth === 'undefined' ? 2 : depth),\n showHidden: showHidden,\n truncate: config.truncateThreshold ? config.truncateThreshold : Infinity,\n };\n return loupe.inspect(obj, options);\n}\n", "/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar inspect = require('./inspect');\nvar config = require('../config');\n\n/**\n * ### .objDisplay(object)\n *\n * Determines if an object or an array matches\n * criteria to be inspected in-line for error\n * messages or should be truncated.\n *\n * @param {Mixed} javascript object to inspect\n * @returns {string} stringified object\n * @name objDisplay\n * @namespace Utils\n * @api public\n */\n\nmodule.exports = function objDisplay(obj) {\n var str = inspect(obj)\n , type = Object.prototype.toString.call(obj);\n\n if (config.truncateThreshold && str.length >= config.truncateThreshold) {\n if (type === '[object Function]') {\n return !obj.name || obj.name === ''\n ? '[Function]'\n : '[Function: ' + obj.name + ']';\n } else if (type === '[object Array]') {\n return '[ Array(' + obj.length + ') ]';\n } else if (type === '[object Object]') {\n var keys = Object.keys(obj)\n , kstr = keys.length > 2\n ? keys.splice(0, 2).join(', ') + ', ...'\n : keys.join(', ');\n return '{ Object (' + kstr + ') }';\n } else {\n return str;\n }\n } else {\n return str;\n }\n};\n", "/*!\n * Chai - message composition utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar flag = require('./flag')\n , getActual = require('./getActual')\n , objDisplay = require('./objDisplay');\n\n/**\n * ### .getMessage(object, message, negateMessage)\n *\n * Construct the error message based on flags\n * and template tags. Template tags will return\n * a stringified inspection of the object referenced.\n *\n * Message template tags:\n * - `#{this}` current asserted object\n * - `#{act}` actual value\n * - `#{exp}` expected value\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getMessage\n * @api public\n */\n\nmodule.exports = function getMessage(obj, args) {\n var negate = flag(obj, 'negate')\n , val = flag(obj, 'object')\n , expected = args[3]\n , actual = getActual(obj, args)\n , msg = negate ? args[2] : args[1]\n , flagMsg = flag(obj, 'message');\n\n if(typeof msg === \"function\") msg = msg();\n msg = msg || '';\n msg = msg\n .replace(/#\\{this\\}/g, function () { return objDisplay(val); })\n .replace(/#\\{act\\}/g, function () { return objDisplay(actual); })\n .replace(/#\\{exp\\}/g, function () { return objDisplay(expected); });\n\n return flagMsg ? flagMsg + ': ' + msg : msg;\n};\n", "/*!\n * Chai - transferFlags utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .transferFlags(assertion, object, includeAll = true)\n *\n * Transfer all the flags for `assertion` to `object`. If\n * `includeAll` is set to `false`, then the base Chai\n * assertion flags (namely `object`, `ssfi`, `lockSsfi`,\n * and `message`) will not be transferred.\n *\n *\n * var newAssertion = new Assertion();\n * utils.transferFlags(assertion, newAssertion);\n *\n * var anotherAssertion = new Assertion(myObj);\n * utils.transferFlags(assertion, anotherAssertion, false);\n *\n * @param {Assertion} assertion the assertion to transfer the flags from\n * @param {Object} object the object to transfer the flags to; usually a new assertion\n * @param {Boolean} includeAll\n * @namespace Utils\n * @name transferFlags\n * @api private\n */\n\nmodule.exports = function transferFlags(assertion, object, includeAll) {\n var flags = assertion.__flags || (assertion.__flags = Object.create(null));\n\n if (!object.__flags) {\n object.__flags = Object.create(null);\n }\n\n includeAll = arguments.length === 3 ? includeAll : true;\n\n for (var flag in flags) {\n if (includeAll ||\n (flag !== 'object' && flag !== 'ssfi' && flag !== 'lockSsfi' && flag != 'message')) {\n object.__flags[flag] = flags[flag];\n }\n }\n};\n", "'use strict';\n/* globals Symbol: false, Uint8Array: false, WeakMap: false */\n/*!\n * deep-eql\n * Copyright(c) 2013 Jake Luer \n * MIT Licensed\n */\n\nvar type = require('type-detect');\nfunction FakeMap() {\n this._key = 'chai/deep-eql__' + Math.random() + Date.now();\n}\n\nFakeMap.prototype = {\n get: function get(key) {\n return key[this._key];\n },\n set: function set(key, value) {\n if (Object.isExtensible(key)) {\n Object.defineProperty(key, this._key, {\n value: value,\n configurable: true,\n });\n }\n },\n};\n\nvar MemoizeMap = typeof WeakMap === 'function' ? WeakMap : FakeMap;\n/*!\n * Check to see if the MemoizeMap has recorded a result of the two operands\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @returns {Boolean|null} result\n*/\nfunction memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) {\n // Technically, WeakMap keys can *only* be objects, not primitives.\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return null;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n var result = leftHandMap.get(rightHandOperand);\n if (typeof result === 'boolean') {\n return result;\n }\n }\n return null;\n}\n\n/*!\n * Set the result of the equality into the MemoizeMap\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @param {Boolean} result\n*/\nfunction memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) {\n // Technically, WeakMap keys can *only* be objects, not primitives.\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n leftHandMap.set(rightHandOperand, result);\n } else {\n leftHandMap = new MemoizeMap();\n leftHandMap.set(rightHandOperand, result);\n memoizeMap.set(leftHandOperand, leftHandMap);\n }\n}\n\n/*!\n * Primary Export\n */\n\nmodule.exports = deepEqual;\nmodule.exports.MemoizeMap = MemoizeMap;\n\n/**\n * Assert deeply nested sameValue equality between two objects of any type.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (optional) Additional options\n * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality.\n * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of\n complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular\n references to blow the stack.\n * @return {Boolean} equal match\n */\nfunction deepEqual(leftHandOperand, rightHandOperand, options) {\n // If we have a comparator, we can't assume anything; so bail to its check first.\n if (options && options.comparator) {\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n }\n\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n\n // Deeper comparisons are pushed through to a larger function\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n}\n\n/**\n * Many comparisons can be canceled out early via simple equality or primitive checks.\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @return {Boolean|null} equal match\n */\nfunction simpleEqual(leftHandOperand, rightHandOperand) {\n // Equal references (except for Numbers) can be returned early\n if (leftHandOperand === rightHandOperand) {\n // Handle +-0 cases\n return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand;\n }\n\n // handle NaN cases\n if (\n leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare\n rightHandOperand !== rightHandOperand // eslint-disable-line no-self-compare\n ) {\n return true;\n }\n\n // Anything that is not an 'object', i.e. symbols, functions, booleans, numbers,\n // strings, and undefined, can be compared by reference.\n if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n // Easy out b/c it would have passed the first equality check\n return false;\n }\n return null;\n}\n\n/*!\n * The main logic of the `deepEqual` function.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (optional) Additional options\n * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality.\n * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of\n complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular\n references to blow the stack.\n * @return {Boolean} equal match\n*/\nfunction extensiveDeepEqual(leftHandOperand, rightHandOperand, options) {\n options = options || {};\n options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap();\n var comparator = options && options.comparator;\n\n // Check if a memoized result exists.\n var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize);\n if (memoizeResultLeft !== null) {\n return memoizeResultLeft;\n }\n var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize);\n if (memoizeResultRight !== null) {\n return memoizeResultRight;\n }\n\n // If a comparator is present, use it.\n if (comparator) {\n var comparatorResult = comparator(leftHandOperand, rightHandOperand);\n // Comparators may return null, in which case we want to go back to default behavior.\n if (comparatorResult === false || comparatorResult === true) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult);\n return comparatorResult;\n }\n // To allow comparators to override *any* behavior, we ran them first. Since it didn't decide\n // what to do, we need to make sure to return the basic tests first before we move on.\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n // Don't memoize this, it takes longer to set/retrieve than to just compare.\n return simpleResult;\n }\n }\n\n var leftHandType = type(leftHandOperand);\n if (leftHandType !== type(rightHandOperand)) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false);\n return false;\n }\n\n // Temporarily set the operands in the memoize object to prevent blowing the stack\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true);\n\n var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options);\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result);\n return result;\n}\n\nfunction extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) {\n switch (leftHandType) {\n case 'String':\n case 'Number':\n case 'Boolean':\n case 'Date':\n // If these types are their instance types (e.g. `new Number`) then re-deepEqual against their values\n return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf());\n case 'Promise':\n case 'Symbol':\n case 'function':\n case 'WeakMap':\n case 'WeakSet':\n return leftHandOperand === rightHandOperand;\n case 'Error':\n return keysEqual(leftHandOperand, rightHandOperand, [ 'name', 'message', 'code' ], options);\n case 'Arguments':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'Array':\n return iterableEqual(leftHandOperand, rightHandOperand, options);\n case 'RegExp':\n return regexpEqual(leftHandOperand, rightHandOperand);\n case 'Generator':\n return generatorEqual(leftHandOperand, rightHandOperand, options);\n case 'DataView':\n return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options);\n case 'ArrayBuffer':\n return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options);\n case 'Set':\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case 'Map':\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case 'Temporal.PlainDate':\n case 'Temporal.PlainTime':\n case 'Temporal.PlainDateTime':\n case 'Temporal.Instant':\n case 'Temporal.ZonedDateTime':\n case 'Temporal.PlainYearMonth':\n case 'Temporal.PlainMonthDay':\n return leftHandOperand.equals(rightHandOperand);\n case 'Temporal.Duration':\n return leftHandOperand.total('nanoseconds') === rightHandOperand.total('nanoseconds');\n case 'Temporal.TimeZone':\n case 'Temporal.Calendar':\n return leftHandOperand.toString() === rightHandOperand.toString();\n default:\n return objectEqual(leftHandOperand, rightHandOperand, options);\n }\n}\n\n/*!\n * Compare two Regular Expressions for equality.\n *\n * @param {RegExp} leftHandOperand\n * @param {RegExp} rightHandOperand\n * @return {Boolean} result\n */\n\nfunction regexpEqual(leftHandOperand, rightHandOperand) {\n return leftHandOperand.toString() === rightHandOperand.toString();\n}\n\n/*!\n * Compare two Sets/Maps for equality. Faster than other equality functions.\n *\n * @param {Set} leftHandOperand\n * @param {Set} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\n\nfunction entriesEqual(leftHandOperand, rightHandOperand, options) {\n try {\n // IE11 doesn't support Set#entries or Set#@@iterator, so we need manually populate using Set#forEach\n if (leftHandOperand.size !== rightHandOperand.size) {\n return false;\n }\n if (leftHandOperand.size === 0) {\n return true;\n }\n } catch (sizeError) {\n // things that aren't actual Maps or Sets will throw here\n return false;\n }\n var leftHandItems = [];\n var rightHandItems = [];\n leftHandOperand.forEach(function gatherEntries(key, value) {\n leftHandItems.push([ key, value ]);\n });\n rightHandOperand.forEach(function gatherEntries(key, value) {\n rightHandItems.push([ key, value ]);\n });\n return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options);\n}\n\n/*!\n * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\n\nfunction iterableEqual(leftHandOperand, rightHandOperand, options) {\n var length = leftHandOperand.length;\n if (length !== rightHandOperand.length) {\n return false;\n }\n if (length === 0) {\n return true;\n }\n var index = -1;\n while (++index < length) {\n if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) {\n return false;\n }\n }\n return true;\n}\n\n/*!\n * Simple equality for generator objects such as those returned by generator functions.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\n\nfunction generatorEqual(leftHandOperand, rightHandOperand, options) {\n return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options);\n}\n\n/*!\n * Determine if the given object has an @@iterator function.\n *\n * @param {Object} target\n * @return {Boolean} `true` if the object has an @@iterator function.\n */\nfunction hasIteratorFunction(target) {\n return typeof Symbol !== 'undefined' &&\n typeof target === 'object' &&\n typeof Symbol.iterator !== 'undefined' &&\n typeof target[Symbol.iterator] === 'function';\n}\n\n/*!\n * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array.\n * This will consume the iterator - which could have side effects depending on the @@iterator implementation.\n *\n * @param {Object} target\n * @returns {Array} an array of entries from the @@iterator function\n */\nfunction getIteratorEntries(target) {\n if (hasIteratorFunction(target)) {\n try {\n return getGeneratorEntries(target[Symbol.iterator]());\n } catch (iteratorError) {\n return [];\n }\n }\n return [];\n}\n\n/*!\n * Gets all entries from a Generator. This will consume the generator - which could have side effects.\n *\n * @param {Generator} target\n * @returns {Array} an array of entries from the Generator.\n */\nfunction getGeneratorEntries(generator) {\n var generatorResult = generator.next();\n var accumulator = [ generatorResult.value ];\n while (generatorResult.done === false) {\n generatorResult = generator.next();\n accumulator.push(generatorResult.value);\n }\n return accumulator;\n}\n\n/*!\n * Gets all own and inherited enumerable keys from a target.\n *\n * @param {Object} target\n * @returns {Array} an array of own and inherited enumerable keys from the target.\n */\nfunction getEnumerableKeys(target) {\n var keys = [];\n for (var key in target) {\n keys.push(key);\n }\n return keys;\n}\n\nfunction getEnumerableSymbols(target) {\n var keys = [];\n var allKeys = Object.getOwnPropertySymbols(target);\n for (var i = 0; i < allKeys.length; i += 1) {\n var key = allKeys[i];\n if (Object.getOwnPropertyDescriptor(target, key).enumerable) {\n keys.push(key);\n }\n }\n return keys;\n}\n\n/*!\n * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of\n * each key. If any value of the given key is not equal, the function will return false (early).\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\nfunction keysEqual(leftHandOperand, rightHandOperand, keys, options) {\n var length = keys.length;\n if (length === 0) {\n return true;\n }\n for (var i = 0; i < length; i += 1) {\n if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) {\n return false;\n }\n }\n return true;\n}\n\n/*!\n * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual`\n * for each enumerable key in the object.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\nfunction objectEqual(leftHandOperand, rightHandOperand, options) {\n var leftHandKeys = getEnumerableKeys(leftHandOperand);\n var rightHandKeys = getEnumerableKeys(rightHandOperand);\n var leftHandSymbols = getEnumerableSymbols(leftHandOperand);\n var rightHandSymbols = getEnumerableSymbols(rightHandOperand);\n leftHandKeys = leftHandKeys.concat(leftHandSymbols);\n rightHandKeys = rightHandKeys.concat(rightHandSymbols);\n\n if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) {\n if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) {\n return false;\n }\n return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options);\n }\n\n var leftHandEntries = getIteratorEntries(leftHandOperand);\n var rightHandEntries = getIteratorEntries(rightHandOperand);\n if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) {\n leftHandEntries.sort();\n rightHandEntries.sort();\n return iterableEqual(leftHandEntries, rightHandEntries, options);\n }\n\n if (leftHandKeys.length === 0 &&\n leftHandEntries.length === 0 &&\n rightHandKeys.length === 0 &&\n rightHandEntries.length === 0) {\n return true;\n }\n\n return false;\n}\n\n/*!\n * Returns true if the argument is a primitive.\n *\n * This intentionally returns true for all objects that can be compared by reference,\n * including functions and symbols.\n *\n * @param {Mixed} value\n * @return {Boolean} result\n */\nfunction isPrimitive(value) {\n return value === null || typeof value !== 'object';\n}\n\nfunction mapSymbols(arr) {\n return arr.map(function mapSymbol(entry) {\n if (typeof entry === 'symbol') {\n return entry.toString();\n }\n\n return entry;\n });\n}\n", "var config = require('../config');\n\n/*!\n * Chai - isProxyEnabled helper\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .isProxyEnabled()\n *\n * Helper function to check if Chai's proxy protection feature is enabled. If\n * proxies are unsupported or disabled via the user's Chai config, then return\n * false. Otherwise, return true.\n *\n * @namespace Utils\n * @name isProxyEnabled\n */\n\nmodule.exports = function isProxyEnabled() {\n return config.useProxy &&\n typeof Proxy !== 'undefined' &&\n typeof Reflect !== 'undefined';\n};\n", "/*!\n * Chai - addProperty utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar isProxyEnabled = require('./isProxyEnabled');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .addProperty(ctx, name, getter)\n *\n * Adds a property to the prototype of an object.\n *\n * utils.addProperty(chai.Assertion.prototype, 'foo', function () {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.instanceof(Foo);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addProperty('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.be.foo;\n *\n * @param {Object} ctx object to which the property is added\n * @param {String} name of property to add\n * @param {Function} getter function to be used for name\n * @namespace Utils\n * @name addProperty\n * @api public\n */\n\nmodule.exports = function addProperty(ctx, name, getter) {\n getter = getter === undefined ? function () {} : getter;\n\n Object.defineProperty(ctx, name,\n { get: function propertyGetter() {\n // Setting the `ssfi` flag to `propertyGetter` causes this function to\n // be the starting point for removing implementation frames from the\n // stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if\n // the `lockSsfi` flag isn't set and proxy protection is disabled.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked\n // from inside of another assertion. In the first case, the `ssfi` flag\n // has already been set by the overwriting assertion. In the second\n // case, the `ssfi` flag has already been set by the outer assertion.\n //\n // If proxy protection is enabled, then the `ssfi` flag has already been\n // set by the proxy getter.\n if (!isProxyEnabled() && !flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', propertyGetter);\n }\n\n var result = getter.call(this);\n if (result !== undefined)\n return result;\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }\n , configurable: true\n });\n};\n", "var fnLengthDesc = Object.getOwnPropertyDescriptor(function () {}, 'length');\n\n/*!\n * Chai - addLengthGuard utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .addLengthGuard(fn, assertionName, isChainable)\n *\n * Define `length` as a getter on the given uninvoked method assertion. The\n * getter acts as a guard against chaining `length` directly off of an uninvoked\n * method assertion, which is a problem because it references `function`'s\n * built-in `length` property instead of Chai's `length` assertion. When the\n * getter catches the user making this mistake, it throws an error with a\n * helpful message.\n *\n * There are two ways in which this mistake can be made. The first way is by\n * chaining the `length` assertion directly off of an uninvoked chainable\n * method. In this case, Chai suggests that the user use `lengthOf` instead. The\n * second way is by chaining the `length` assertion directly off of an uninvoked\n * non-chainable method. Non-chainable methods must be invoked prior to\n * chaining. In this case, Chai suggests that the user consult the docs for the\n * given assertion.\n *\n * If the `length` property of functions is unconfigurable, then return `fn`\n * without modification.\n *\n * Note that in ES6, the function's `length` property is configurable, so once\n * support for legacy environments is dropped, Chai's `length` property can\n * replace the built-in function's `length` property, and this length guard will\n * no longer be necessary. In the mean time, maintaining consistency across all\n * environments is the priority.\n *\n * @param {Function} fn\n * @param {String} assertionName\n * @param {Boolean} isChainable\n * @namespace Utils\n * @name addLengthGuard\n */\n\nmodule.exports = function addLengthGuard (fn, assertionName, isChainable) {\n if (!fnLengthDesc.configurable) return fn;\n\n Object.defineProperty(fn, 'length', {\n get: function () {\n if (isChainable) {\n throw Error('Invalid Chai property: ' + assertionName + '.length. Due' +\n ' to a compatibility issue, \"length\" cannot directly follow \"' +\n assertionName + '\". Use \"' + assertionName + '.lengthOf\" instead.');\n }\n\n throw Error('Invalid Chai property: ' + assertionName + '.length. See' +\n ' docs for proper usage of \"' + assertionName + '\".');\n }\n });\n\n return fn;\n};\n", "/*!\n * Chai - getProperties utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getProperties(object)\n *\n * This allows the retrieval of property names of an object, enumerable or not,\n * inherited or not.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getProperties\n * @api public\n */\n\nmodule.exports = function getProperties(object) {\n var result = Object.getOwnPropertyNames(object);\n\n function addProperty(property) {\n if (result.indexOf(property) === -1) {\n result.push(property);\n }\n }\n\n var proto = Object.getPrototypeOf(object);\n while (proto !== null) {\n Object.getOwnPropertyNames(proto).forEach(addProperty);\n proto = Object.getPrototypeOf(proto);\n }\n\n return result;\n};\n", "var config = require('../config');\nvar flag = require('./flag');\nvar getProperties = require('./getProperties');\nvar isProxyEnabled = require('./isProxyEnabled');\n\n/*!\n * Chai - proxify utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .proxify(object)\n *\n * Return a proxy of given object that throws an error when a non-existent\n * property is read. By default, the root cause is assumed to be a misspelled\n * property, and thus an attempt is made to offer a reasonable suggestion from\n * the list of existing properties. However, if a nonChainableMethodName is\n * provided, then the root cause is instead a failure to invoke a non-chainable\n * method prior to reading the non-existent property.\n *\n * If proxies are unsupported or disabled via the user's Chai config, then\n * return object without modification.\n *\n * @param {Object} obj\n * @param {String} nonChainableMethodName\n * @namespace Utils\n * @name proxify\n */\n\nvar builtins = ['__flags', '__methods', '_obj', 'assert'];\n\nmodule.exports = function proxify(obj, nonChainableMethodName) {\n if (!isProxyEnabled()) return obj;\n\n return new Proxy(obj, {\n get: function proxyGetter(target, property) {\n // This check is here because we should not throw errors on Symbol properties\n // such as `Symbol.toStringTag`.\n // The values for which an error should be thrown can be configured using\n // the `config.proxyExcludedKeys` setting.\n if (typeof property === 'string' &&\n config.proxyExcludedKeys.indexOf(property) === -1 &&\n !Reflect.has(target, property)) {\n // Special message for invalid property access of non-chainable methods.\n if (nonChainableMethodName) {\n throw Error('Invalid Chai property: ' + nonChainableMethodName + '.' +\n property + '. See docs for proper usage of \"' +\n nonChainableMethodName + '\".');\n }\n\n // If the property is reasonably close to an existing Chai property,\n // suggest that property to the user. Only suggest properties with a\n // distance less than 4.\n var suggestion = null;\n var suggestionDistance = 4;\n getProperties(target).forEach(function(prop) {\n if (\n !Object.prototype.hasOwnProperty(prop) &&\n builtins.indexOf(prop) === -1\n ) {\n var dist = stringDistanceCapped(\n property,\n prop,\n suggestionDistance\n );\n if (dist < suggestionDistance) {\n suggestion = prop;\n suggestionDistance = dist;\n }\n }\n });\n\n if (suggestion !== null) {\n throw Error('Invalid Chai property: ' + property +\n '. Did you mean \"' + suggestion + '\"?');\n } else {\n throw Error('Invalid Chai property: ' + property);\n }\n }\n\n // Use this proxy getter as the starting point for removing implementation\n // frames from the stack trace of a failed assertion. For property\n // assertions, this prevents the proxy getter from showing up in the stack\n // trace since it's invoked before the property getter. For method and\n // chainable method assertions, this flag will end up getting changed to\n // the method wrapper, which is good since this frame will no longer be in\n // the stack once the method is invoked. Note that Chai builtin assertion\n // properties such as `__flags` are skipped since this is only meant to\n // capture the starting point of an assertion. This step is also skipped\n // if the `lockSsfi` flag is set, thus indicating that this assertion is\n // being called from within another assertion. In that case, the `ssfi`\n // flag is already set to the outer assertion's starting point.\n if (builtins.indexOf(property) === -1 && !flag(target, 'lockSsfi')) {\n flag(target, 'ssfi', proxyGetter);\n }\n\n return Reflect.get(target, property);\n }\n });\n};\n\n/**\n * # stringDistanceCapped(strA, strB, cap)\n * Return the Levenshtein distance between two strings, but no more than cap.\n * @param {string} strA\n * @param {string} strB\n * @param {number} number\n * @return {number} min(string distance between strA and strB, cap)\n * @api private\n */\n\nfunction stringDistanceCapped(strA, strB, cap) {\n if (Math.abs(strA.length - strB.length) >= cap) {\n return cap;\n }\n\n var memo = [];\n // `memo` is a two-dimensional array containing distances.\n // memo[i][j] is the distance between strA.slice(0, i) and\n // strB.slice(0, j).\n for (var i = 0; i <= strA.length; i++) {\n memo[i] = Array(strB.length + 1).fill(0);\n memo[i][0] = i;\n }\n for (var j = 0; j < strB.length; j++) {\n memo[0][j] = j;\n }\n\n for (var i = 1; i <= strA.length; i++) {\n var ch = strA.charCodeAt(i - 1);\n for (var j = 1; j <= strB.length; j++) {\n if (Math.abs(i - j) >= cap) {\n memo[i][j] = cap;\n continue;\n }\n memo[i][j] = Math.min(\n memo[i - 1][j] + 1,\n memo[i][j - 1] + 1,\n memo[i - 1][j - 1] +\n (ch === strB.charCodeAt(j - 1) ? 0 : 1)\n );\n }\n }\n\n return memo[strA.length][strB.length];\n}\n", "/*!\n * Chai - addMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar addLengthGuard = require('./addLengthGuard');\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar proxify = require('./proxify');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .addMethod(ctx, name, method)\n *\n * Adds a method to the prototype of an object.\n *\n * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.equal(str);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addMethod('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(fooStr).to.be.foo('bar');\n *\n * @param {Object} ctx object to which the method is added\n * @param {String} name of method to add\n * @param {Function} method function to be used for name\n * @namespace Utils\n * @name addMethod\n * @api public\n */\n\nmodule.exports = function addMethod(ctx, name, method) {\n var methodWrapper = function () {\n // Setting the `ssfi` flag to `methodWrapper` causes this function to be the\n // starting point for removing implementation frames from the stack trace of\n // a failed assertion.\n //\n // However, we only want to use this function as the starting point if the\n // `lockSsfi` flag isn't set.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked from\n // inside of another assertion. In the first case, the `ssfi` flag has\n // already been set by the overwriting assertion. In the second case, the\n // `ssfi` flag has already been set by the outer assertion.\n if (!flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', methodWrapper);\n }\n\n var result = method.apply(this, arguments);\n if (result !== undefined)\n return result;\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n\n addLengthGuard(methodWrapper, name, false);\n ctx[name] = proxify(methodWrapper, name);\n};\n", "/*!\n * Chai - overwriteProperty utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar isProxyEnabled = require('./isProxyEnabled');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .overwriteProperty(ctx, name, fn)\n *\n * Overwrites an already existing property getter and provides\n * access to previous value. Must return function to use as getter.\n *\n * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) {\n * return function () {\n * var obj = utils.flag(this, 'object');\n * if (obj instanceof Foo) {\n * new chai.Assertion(obj.name).to.equal('bar');\n * } else {\n * _super.call(this);\n * }\n * }\n * });\n *\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteProperty('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.be.ok;\n *\n * @param {Object} ctx object whose property is to be overwritten\n * @param {String} name of property to overwrite\n * @param {Function} getter function that returns a getter function to be used for name\n * @namespace Utils\n * @name overwriteProperty\n * @api public\n */\n\nmodule.exports = function overwriteProperty(ctx, name, getter) {\n var _get = Object.getOwnPropertyDescriptor(ctx, name)\n , _super = function () {};\n\n if (_get && 'function' === typeof _get.get)\n _super = _get.get\n\n Object.defineProperty(ctx, name,\n { get: function overwritingPropertyGetter() {\n // Setting the `ssfi` flag to `overwritingPropertyGetter` causes this\n // function to be the starting point for removing implementation frames\n // from the stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if\n // the `lockSsfi` flag isn't set and proxy protection is disabled.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked\n // from inside of another assertion. In the first case, the `ssfi` flag\n // has already been set by the overwriting assertion. In the second\n // case, the `ssfi` flag has already been set by the outer assertion.\n //\n // If proxy protection is enabled, then the `ssfi` flag has already been\n // set by the proxy getter.\n if (!isProxyEnabled() && !flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', overwritingPropertyGetter);\n }\n\n // Setting the `lockSsfi` flag to `true` prevents the overwritten\n // assertion from changing the `ssfi` flag. By this point, the `ssfi`\n // flag is already set to the correct starting point for this assertion.\n var origLockSsfi = flag(this, 'lockSsfi');\n flag(this, 'lockSsfi', true);\n var result = getter(_super).call(this);\n flag(this, 'lockSsfi', origLockSsfi);\n\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }\n , configurable: true\n });\n};\n", "/*!\n * Chai - overwriteMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar addLengthGuard = require('./addLengthGuard');\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar proxify = require('./proxify');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .overwriteMethod(ctx, name, fn)\n *\n * Overwrites an already existing method and provides\n * access to previous function. Must return function\n * to be used for name.\n *\n * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) {\n * return function (str) {\n * var obj = utils.flag(this, 'object');\n * if (obj instanceof Foo) {\n * new chai.Assertion(obj.value).to.equal(str);\n * } else {\n * _super.apply(this, arguments);\n * }\n * }\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteMethod('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.equal('bar');\n *\n * @param {Object} ctx object whose method is to be overwritten\n * @param {String} name of method to overwrite\n * @param {Function} method function that returns a function to be used for name\n * @namespace Utils\n * @name overwriteMethod\n * @api public\n */\n\nmodule.exports = function overwriteMethod(ctx, name, method) {\n var _method = ctx[name]\n , _super = function () {\n throw new Error(name + ' is not a function');\n };\n\n if (_method && 'function' === typeof _method)\n _super = _method;\n\n var overwritingMethodWrapper = function () {\n // Setting the `ssfi` flag to `overwritingMethodWrapper` causes this\n // function to be the starting point for removing implementation frames from\n // the stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if the\n // `lockSsfi` flag isn't set.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked from\n // inside of another assertion. In the first case, the `ssfi` flag has\n // already been set by the overwriting assertion. In the second case, the\n // `ssfi` flag has already been set by the outer assertion.\n if (!flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', overwritingMethodWrapper);\n }\n\n // Setting the `lockSsfi` flag to `true` prevents the overwritten assertion\n // from changing the `ssfi` flag. By this point, the `ssfi` flag is already\n // set to the correct starting point for this assertion.\n var origLockSsfi = flag(this, 'lockSsfi');\n flag(this, 'lockSsfi', true);\n var result = method(_super).apply(this, arguments);\n flag(this, 'lockSsfi', origLockSsfi);\n\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }\n\n addLengthGuard(overwritingMethodWrapper, name, false);\n ctx[name] = proxify(overwritingMethodWrapper, name);\n};\n", "/*!\n * Chai - addChainingMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar addLengthGuard = require('./addLengthGuard');\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar proxify = require('./proxify');\nvar transferFlags = require('./transferFlags');\n\n/*!\n * Module variables\n */\n\n// Check whether `Object.setPrototypeOf` is supported\nvar canSetPrototype = typeof Object.setPrototypeOf === 'function';\n\n// Without `Object.setPrototypeOf` support, this module will need to add properties to a function.\n// However, some of functions' own props are not configurable and should be skipped.\nvar testFn = function() {};\nvar excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) {\n var propDesc = Object.getOwnPropertyDescriptor(testFn, name);\n\n // Note: PhantomJS 1.x includes `callee` as one of `testFn`'s own properties,\n // but then returns `undefined` as the property descriptor for `callee`. As a\n // workaround, we perform an otherwise unnecessary type-check for `propDesc`,\n // and then filter it out if it's not an object as it should be.\n if (typeof propDesc !== 'object')\n return true;\n\n return !propDesc.configurable;\n});\n\n// Cache `Function` properties\nvar call = Function.prototype.call,\n apply = Function.prototype.apply;\n\n/**\n * ### .addChainableMethod(ctx, name, method, chainingBehavior)\n *\n * Adds a method to an object, such that the method can also be chained.\n *\n * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.equal(str);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior);\n *\n * The result can then be used as both a method assertion, executing both `method` and\n * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`.\n *\n * expect(fooStr).to.be.foo('bar');\n * expect(fooStr).to.be.foo.equal('foo');\n *\n * @param {Object} ctx object to which the method is added\n * @param {String} name of method to add\n * @param {Function} method function to be used for `name`, when called\n * @param {Function} chainingBehavior function to be called every time the property is accessed\n * @namespace Utils\n * @name addChainableMethod\n * @api public\n */\n\nmodule.exports = function addChainableMethod(ctx, name, method, chainingBehavior) {\n if (typeof chainingBehavior !== 'function') {\n chainingBehavior = function () { };\n }\n\n var chainableBehavior = {\n method: method\n , chainingBehavior: chainingBehavior\n };\n\n // save the methods so we can overwrite them later, if we need to.\n if (!ctx.__methods) {\n ctx.__methods = {};\n }\n ctx.__methods[name] = chainableBehavior;\n\n Object.defineProperty(ctx, name,\n { get: function chainableMethodGetter() {\n chainableBehavior.chainingBehavior.call(this);\n\n var chainableMethodWrapper = function () {\n // Setting the `ssfi` flag to `chainableMethodWrapper` causes this\n // function to be the starting point for removing implementation\n // frames from the stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if\n // the `lockSsfi` flag isn't set.\n //\n // If the `lockSsfi` flag is set, then this assertion is being\n // invoked from inside of another assertion. In this case, the `ssfi`\n // flag has already been set by the outer assertion.\n //\n // Note that overwriting a chainable method merely replaces the saved\n // methods in `ctx.__methods` instead of completely replacing the\n // overwritten assertion. Therefore, an overwriting assertion won't\n // set the `ssfi` or `lockSsfi` flags.\n if (!flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', chainableMethodWrapper);\n }\n\n var result = chainableBehavior.method.apply(this, arguments);\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n\n addLengthGuard(chainableMethodWrapper, name, true);\n\n // Use `Object.setPrototypeOf` if available\n if (canSetPrototype) {\n // Inherit all properties from the object by replacing the `Function` prototype\n var prototype = Object.create(this);\n // Restore the `call` and `apply` methods from `Function`\n prototype.call = call;\n prototype.apply = apply;\n Object.setPrototypeOf(chainableMethodWrapper, prototype);\n }\n // Otherwise, redefine all properties (slow!)\n else {\n var asserterNames = Object.getOwnPropertyNames(ctx);\n asserterNames.forEach(function (asserterName) {\n if (excludeNames.indexOf(asserterName) !== -1) {\n return;\n }\n\n var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);\n Object.defineProperty(chainableMethodWrapper, asserterName, pd);\n });\n }\n\n transferFlags(this, chainableMethodWrapper);\n return proxify(chainableMethodWrapper);\n }\n , configurable: true\n });\n};\n", "/*!\n * Chai - overwriteChainableMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar chai = require('../../chai');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .overwriteChainableMethod(ctx, name, method, chainingBehavior)\n *\n * Overwrites an already existing chainable method\n * and provides access to the previous function or\n * property. Must return functions to be used for\n * name.\n *\n * utils.overwriteChainableMethod(chai.Assertion.prototype, 'lengthOf',\n * function (_super) {\n * }\n * , function (_super) {\n * }\n * );\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteChainableMethod('foo', fn, fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.have.lengthOf(3);\n * expect(myFoo).to.have.lengthOf.above(3);\n *\n * @param {Object} ctx object whose method / property is to be overwritten\n * @param {String} name of method / property to overwrite\n * @param {Function} method function that returns a function to be used for name\n * @param {Function} chainingBehavior function that returns a function to be used for property\n * @namespace Utils\n * @name overwriteChainableMethod\n * @api public\n */\n\nmodule.exports = function overwriteChainableMethod(ctx, name, method, chainingBehavior) {\n var chainableBehavior = ctx.__methods[name];\n\n var _chainingBehavior = chainableBehavior.chainingBehavior;\n chainableBehavior.chainingBehavior = function overwritingChainableMethodGetter() {\n var result = chainingBehavior(_chainingBehavior).call(this);\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n\n var _method = chainableBehavior.method;\n chainableBehavior.method = function overwritingChainableMethodWrapper() {\n var result = method(_method).apply(this, arguments);\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n};\n", "/*!\n * Chai - compareByInspect utility\n * Copyright(c) 2011-2016 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar inspect = require('./inspect');\n\n/**\n * ### .compareByInspect(mixed, mixed)\n *\n * To be used as a compareFunction with Array.prototype.sort. Compares elements\n * using inspect instead of default behavior of using toString so that Symbols\n * and objects with irregular/missing toString can still be sorted without a\n * TypeError.\n *\n * @param {Mixed} first element to compare\n * @param {Mixed} second element to compare\n * @returns {Number} -1 if 'a' should come before 'b'; otherwise 1\n * @name compareByInspect\n * @namespace Utils\n * @api public\n */\n\nmodule.exports = function compareByInspect(a, b) {\n return inspect(a) < inspect(b) ? -1 : 1;\n};\n", "/*!\n * Chai - getOwnEnumerablePropertySymbols utility\n * Copyright(c) 2011-2016 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getOwnEnumerablePropertySymbols(object)\n *\n * This allows the retrieval of directly-owned enumerable property symbols of an\n * object. This function is necessary because Object.getOwnPropertySymbols\n * returns both enumerable and non-enumerable property symbols.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getOwnEnumerablePropertySymbols\n * @api public\n */\n\nmodule.exports = function getOwnEnumerablePropertySymbols(obj) {\n if (typeof Object.getOwnPropertySymbols !== 'function') return [];\n\n return Object.getOwnPropertySymbols(obj).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(obj, sym).enumerable;\n });\n};\n", "/*!\n * Chai - getOwnEnumerableProperties utility\n * Copyright(c) 2011-2016 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar getOwnEnumerablePropertySymbols = require('./getOwnEnumerablePropertySymbols');\n\n/**\n * ### .getOwnEnumerableProperties(object)\n *\n * This allows the retrieval of directly-owned enumerable property names and\n * symbols of an object. This function is necessary because Object.keys only\n * returns enumerable property names, not enumerable property symbols.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getOwnEnumerableProperties\n * @api public\n */\n\nmodule.exports = function getOwnEnumerableProperties(obj) {\n return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj));\n};\n", "'use strict';\n\n/* !\n * Chai - checkError utility\n * Copyright(c) 2012-2016 Jake Luer \n * MIT Licensed\n */\n\nvar getFunctionName = require('get-func-name');\n/**\n * ### .checkError\n *\n * Checks that an error conforms to a given set of criteria and/or retrieves information about it.\n *\n * @api public\n */\n\n/**\n * ### .compatibleInstance(thrown, errorLike)\n *\n * Checks if two instances are compatible (strict equal).\n * Returns false if errorLike is not an instance of Error, because instances\n * can only be compatible if they're both error instances.\n *\n * @name compatibleInstance\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleInstance(thrown, errorLike) {\n return errorLike instanceof Error && thrown === errorLike;\n}\n\n/**\n * ### .compatibleConstructor(thrown, errorLike)\n *\n * Checks if two constructors are compatible.\n * This function can receive either an error constructor or\n * an error instance as the `errorLike` argument.\n * Constructors are compatible if they're the same or if one is\n * an instance of another.\n *\n * @name compatibleConstructor\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleConstructor(thrown, errorLike) {\n if (errorLike instanceof Error) {\n // If `errorLike` is an instance of any error we compare their constructors\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if (errorLike.prototype instanceof Error || errorLike === Error) {\n // If `errorLike` is a constructor that inherits from Error, we compare `thrown` to `errorLike` directly\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n\n return false;\n}\n\n/**\n * ### .compatibleMessage(thrown, errMatcher)\n *\n * Checks if an error's message is compatible with a matcher (String or RegExp).\n * If the message contains the String or passes the RegExp test,\n * it is considered compatible.\n *\n * @name compatibleMessage\n * @param {Error} thrown error\n * @param {String|RegExp} errMatcher to look for into the message\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleMessage(thrown, errMatcher) {\n var comparisonString = typeof thrown === 'string' ? thrown : thrown.message;\n if (errMatcher instanceof RegExp) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === 'string') {\n return comparisonString.indexOf(errMatcher) !== -1; // eslint-disable-line no-magic-numbers\n }\n\n return false;\n}\n\n/**\n * ### .getConstructorName(errorLike)\n *\n * Gets the constructor name for an Error instance or constructor itself.\n *\n * @name getConstructorName\n * @param {Error|ErrorConstructor} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getConstructorName(errorLike) {\n var constructorName = errorLike;\n if (errorLike instanceof Error) {\n constructorName = getFunctionName(errorLike.constructor);\n } else if (typeof errorLike === 'function') {\n // If `err` is not an instance of Error it is an error constructor itself or another function.\n // If we've got a common function we get its name, otherwise we may need to create a new instance\n // of the error just in case it's a poorly-constructed error. Please see chaijs/chai/issues/45 to know more.\n constructorName = getFunctionName(errorLike);\n if (constructorName === '') {\n var newConstructorName = getFunctionName(new errorLike()); // eslint-disable-line new-cap\n constructorName = newConstructorName || constructorName;\n }\n }\n\n return constructorName;\n}\n\n/**\n * ### .getMessage(errorLike)\n *\n * Gets the error message from an error.\n * If `err` is a String itself, we return it.\n * If the error has no message, we return an empty string.\n *\n * @name getMessage\n * @param {Error|String} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getMessage(errorLike) {\n var msg = '';\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === 'string') {\n msg = errorLike;\n }\n\n return msg;\n}\n\nmodule.exports = {\n compatibleInstance: compatibleInstance,\n compatibleConstructor: compatibleConstructor,\n compatibleMessage: compatibleMessage,\n getMessage: getMessage,\n getConstructorName: getConstructorName,\n};\n", "/*!\n * Chai - isNaN utility\n * Copyright(c) 2012-2015 Sakthipriyan Vairamani \n * MIT Licensed\n */\n\n/**\n * ### .isNaN(value)\n *\n * Checks if the given value is NaN or not.\n *\n * utils.isNaN(NaN); // true\n *\n * @param {Value} The value which has to be checked if it is NaN\n * @name isNaN\n * @api private\n */\n\nfunction isNaN(value) {\n // Refer http://www.ecma-international.org/ecma-262/6.0/#sec-isnan-number\n // section's NOTE.\n return value !== value;\n}\n\n// If ECMAScript 6's Number.isNaN is present, prefer that.\nmodule.exports = Number.isNaN || isNaN;\n", "var type = require('type-detect');\n\nvar flag = require('./flag');\n\nfunction isObjectType(obj) {\n var objectType = type(obj);\n var objectTypes = ['Array', 'Object', 'function'];\n\n return objectTypes.indexOf(objectType) !== -1;\n}\n\n/**\n * ### .getOperator(message)\n *\n * Extract the operator from error message.\n * Operator defined is based on below link\n * https://nodejs.org/api/assert.html#assert_assert.\n *\n * Returns the `operator` or `undefined` value for an Assertion.\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getOperator\n * @api public\n */\n\nmodule.exports = function getOperator(obj, args) {\n var operator = flag(obj, 'operator');\n var negate = flag(obj, 'negate');\n var expected = args[3];\n var msg = negate ? args[2] : args[1];\n\n if (operator) {\n return operator;\n }\n\n if (typeof msg === 'function') msg = msg();\n\n msg = msg || '';\n if (!msg) {\n return undefined;\n }\n\n if (/\\shave\\s/.test(msg)) {\n return undefined;\n }\n\n var isObject = isObjectType(expected);\n if (/\\snot\\s/.test(msg)) {\n return isObject ? 'notDeepStrictEqual' : 'notStrictEqual';\n }\n\n return isObject ? 'deepStrictEqual' : 'strictEqual';\n};\n", "/*!\n * chai\n * Copyright(c) 2011 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Dependencies that are used for multiple exports are required here only once\n */\n\nvar pathval = require('pathval');\n\n/*!\n * test utility\n */\n\nexports.test = require('./test');\n\n/*!\n * type utility\n */\n\nexports.type = require('type-detect');\n\n/*!\n * expectTypes utility\n */\nexports.expectTypes = require('./expectTypes');\n\n/*!\n * message utility\n */\n\nexports.getMessage = require('./getMessage');\n\n/*!\n * actual utility\n */\n\nexports.getActual = require('./getActual');\n\n/*!\n * Inspect util\n */\n\nexports.inspect = require('./inspect');\n\n/*!\n * Object Display util\n */\n\nexports.objDisplay = require('./objDisplay');\n\n/*!\n * Flag utility\n */\n\nexports.flag = require('./flag');\n\n/*!\n * Flag transferring utility\n */\n\nexports.transferFlags = require('./transferFlags');\n\n/*!\n * Deep equal utility\n */\n\nexports.eql = require('deep-eql');\n\n/*!\n * Deep path info\n */\n\nexports.getPathInfo = pathval.getPathInfo;\n\n/*!\n * Check if a property exists\n */\n\nexports.hasProperty = pathval.hasProperty;\n\n/*!\n * Function name\n */\n\nexports.getName = require('get-func-name');\n\n/*!\n * add Property\n */\n\nexports.addProperty = require('./addProperty');\n\n/*!\n * add Method\n */\n\nexports.addMethod = require('./addMethod');\n\n/*!\n * overwrite Property\n */\n\nexports.overwriteProperty = require('./overwriteProperty');\n\n/*!\n * overwrite Method\n */\n\nexports.overwriteMethod = require('./overwriteMethod');\n\n/*!\n * Add a chainable method\n */\n\nexports.addChainableMethod = require('./addChainableMethod');\n\n/*!\n * Overwrite chainable method\n */\n\nexports.overwriteChainableMethod = require('./overwriteChainableMethod');\n\n/*!\n * Compare by inspect method\n */\n\nexports.compareByInspect = require('./compareByInspect');\n\n/*!\n * Get own enumerable property symbols method\n */\n\nexports.getOwnEnumerablePropertySymbols = require('./getOwnEnumerablePropertySymbols');\n\n/*!\n * Get own enumerable properties method\n */\n\nexports.getOwnEnumerableProperties = require('./getOwnEnumerableProperties');\n\n/*!\n * Checks error against a given set of criteria\n */\n\nexports.checkError = require('check-error');\n\n/*!\n * Proxify util\n */\n\nexports.proxify = require('./proxify');\n\n/*!\n * addLengthGuard util\n */\n\nexports.addLengthGuard = require('./addLengthGuard');\n\n/*!\n * isProxyEnabled helper\n */\n\nexports.isProxyEnabled = require('./isProxyEnabled');\n\n/*!\n * isNaN method\n */\n\nexports.isNaN = require('./isNaN');\n\n/*!\n * getOperator method\n */\n\nexports.getOperator = require('./getOperator');", "/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nvar config = require('./config');\n\nmodule.exports = function (_chai, util) {\n /*!\n * Module dependencies.\n */\n\n var AssertionError = _chai.AssertionError\n , flag = util.flag;\n\n /*!\n * Module export.\n */\n\n _chai.Assertion = Assertion;\n\n /*!\n * Assertion Constructor\n *\n * Creates object for chaining.\n *\n * `Assertion` objects contain metadata in the form of flags. Three flags can\n * be assigned during instantiation by passing arguments to this constructor:\n *\n * - `object`: This flag contains the target of the assertion. For example, in\n * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will\n * contain `numKittens` so that the `equal` assertion can reference it when\n * needed.\n *\n * - `message`: This flag contains an optional custom error message to be\n * prepended to the error message that's generated by the assertion when it\n * fails.\n *\n * - `ssfi`: This flag stands for \"start stack function indicator\". It\n * contains a function reference that serves as the starting point for\n * removing frames from the stack trace of the error that's created by the\n * assertion when it fails. The goal is to provide a cleaner stack trace to\n * end users by removing Chai's internal functions. Note that it only works\n * in environments that support `Error.captureStackTrace`, and only when\n * `Chai.config.includeStack` hasn't been set to `false`.\n *\n * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag\n * should retain its current value, even as assertions are chained off of\n * this object. This is usually set to `true` when creating a new assertion\n * from within another assertion. It's also temporarily set to `true` before\n * an overwritten assertion gets called by the overwriting assertion.\n *\n * - `eql`: This flag contains the deepEqual function to be used by the assertion.\n *\n * @param {Mixed} obj target of the assertion\n * @param {String} msg (optional) custom error message\n * @param {Function} ssfi (optional) starting point for removing stack frames\n * @param {Boolean} lockSsfi (optional) whether or not the ssfi flag is locked\n * @api private\n */\n\n function Assertion (obj, msg, ssfi, lockSsfi) {\n flag(this, 'ssfi', ssfi || Assertion);\n flag(this, 'lockSsfi', lockSsfi);\n flag(this, 'object', obj);\n flag(this, 'message', msg);\n flag(this, 'eql', config.deepEqual || util.eql);\n\n return util.proxify(this);\n }\n\n Object.defineProperty(Assertion, 'includeStack', {\n get: function() {\n console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');\n return config.includeStack;\n },\n set: function(value) {\n console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');\n config.includeStack = value;\n }\n });\n\n Object.defineProperty(Assertion, 'showDiff', {\n get: function() {\n console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');\n return config.showDiff;\n },\n set: function(value) {\n console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');\n config.showDiff = value;\n }\n });\n\n Assertion.addProperty = function (name, fn) {\n util.addProperty(this.prototype, name, fn);\n };\n\n Assertion.addMethod = function (name, fn) {\n util.addMethod(this.prototype, name, fn);\n };\n\n Assertion.addChainableMethod = function (name, fn, chainingBehavior) {\n util.addChainableMethod(this.prototype, name, fn, chainingBehavior);\n };\n\n Assertion.overwriteProperty = function (name, fn) {\n util.overwriteProperty(this.prototype, name, fn);\n };\n\n Assertion.overwriteMethod = function (name, fn) {\n util.overwriteMethod(this.prototype, name, fn);\n };\n\n Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) {\n util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);\n };\n\n /**\n * ### .assert(expression, message, negateMessage, expected, actual, showDiff)\n *\n * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.\n *\n * @name assert\n * @param {Philosophical} expression to be tested\n * @param {String|Function} message or function that returns message to display if expression fails\n * @param {String|Function} negatedMessage or function that returns negatedMessage to display if negated expression fails\n * @param {Mixed} expected value (remember to check for negation)\n * @param {Mixed} actual (optional) will default to `this.obj`\n * @param {Boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails\n * @api private\n */\n\n Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) {\n var ok = util.test(this, arguments);\n if (false !== showDiff) showDiff = true;\n if (undefined === expected && undefined === _actual) showDiff = false;\n if (true !== config.showDiff) showDiff = false;\n\n if (!ok) {\n msg = util.getMessage(this, arguments);\n var actual = util.getActual(this, arguments);\n var assertionErrorObjectProperties = {\n actual: actual\n , expected: expected\n , showDiff: showDiff\n };\n\n var operator = util.getOperator(this, arguments);\n if (operator) {\n assertionErrorObjectProperties.operator = operator;\n }\n\n throw new AssertionError(\n msg,\n assertionErrorObjectProperties,\n (config.includeStack) ? this.assert : flag(this, 'ssfi'));\n }\n };\n\n /*!\n * ### ._obj\n *\n * Quick reference to stored `actual` value for plugin developers.\n *\n * @api private\n */\n\n Object.defineProperty(Assertion.prototype, '_obj',\n { get: function () {\n return flag(this, 'object');\n }\n , set: function (val) {\n flag(this, 'object', val);\n }\n });\n};\n", "/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, _) {\n var Assertion = chai.Assertion\n , AssertionError = chai.AssertionError\n , flag = _.flag;\n\n /**\n * ### Language Chains\n *\n * The following are provided as chainable getters to improve the readability\n * of your assertions.\n *\n * **Chains**\n *\n * - to\n * - be\n * - been\n * - is\n * - that\n * - which\n * - and\n * - has\n * - have\n * - with\n * - at\n * - of\n * - same\n * - but\n * - does\n * - still\n * - also\n *\n * @name language chains\n * @namespace BDD\n * @api public\n */\n\n [ 'to', 'be', 'been', 'is'\n , 'and', 'has', 'have', 'with'\n , 'that', 'which', 'at', 'of'\n , 'same', 'but', 'does', 'still', \"also\" ].forEach(function (chain) {\n Assertion.addProperty(chain);\n });\n\n /**\n * ### .not\n *\n * Negates all assertions that follow in the chain.\n *\n * expect(function () {}).to.not.throw();\n * expect({a: 1}).to.not.have.property('b');\n * expect([1, 2]).to.be.an('array').that.does.not.include(3);\n *\n * Just because you can negate any assertion with `.not` doesn't mean you\n * should. With great power comes great responsibility. It's often best to\n * assert that the one expected output was produced, rather than asserting\n * that one of countless unexpected outputs wasn't produced. See individual\n * assertions for specific guidance.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.not.equal(1); // Not recommended\n *\n * @name not\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('not', function () {\n flag(this, 'negate', true);\n });\n\n /**\n * ### .deep\n *\n * Causes all `.equal`, `.include`, `.members`, `.keys`, and `.property`\n * assertions that follow in the chain to use deep equality instead of strict\n * (`===`) equality. See the `deep-eql` project page for info on the deep\n * equality algorithm: https://github.com/chaijs/deep-eql.\n *\n * // Target object deeply (but not strictly) equals `{a: 1}`\n * expect({a: 1}).to.deep.equal({a: 1});\n * expect({a: 1}).to.not.equal({a: 1});\n *\n * // Target array deeply (but not strictly) includes `{a: 1}`\n * expect([{a: 1}]).to.deep.include({a: 1});\n * expect([{a: 1}]).to.not.include({a: 1});\n *\n * // Target object deeply (but not strictly) includes `x: {a: 1}`\n * expect({x: {a: 1}}).to.deep.include({x: {a: 1}});\n * expect({x: {a: 1}}).to.not.include({x: {a: 1}});\n *\n * // Target array deeply (but not strictly) has member `{a: 1}`\n * expect([{a: 1}]).to.have.deep.members([{a: 1}]);\n * expect([{a: 1}]).to.not.have.members([{a: 1}]);\n *\n * // Target set deeply (but not strictly) has key `{a: 1}`\n * expect(new Set([{a: 1}])).to.have.deep.keys([{a: 1}]);\n * expect(new Set([{a: 1}])).to.not.have.keys([{a: 1}]);\n *\n * // Target object deeply (but not strictly) has property `x: {a: 1}`\n * expect({x: {a: 1}}).to.have.deep.property('x', {a: 1});\n * expect({x: {a: 1}}).to.not.have.property('x', {a: 1});\n *\n * @name deep\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('deep', function () {\n flag(this, 'deep', true);\n });\n\n /**\n * ### .nested\n *\n * Enables dot- and bracket-notation in all `.property` and `.include`\n * assertions that follow in the chain.\n *\n * expect({a: {b: ['x', 'y']}}).to.have.nested.property('a.b[1]');\n * expect({a: {b: ['x', 'y']}}).to.nested.include({'a.b[1]': 'y'});\n *\n * If `.` or `[]` are part of an actual property name, they can be escaped by\n * adding two backslashes before them.\n *\n * expect({'.a': {'[b]': 'x'}}).to.have.nested.property('\\\\.a.\\\\[b\\\\]');\n * expect({'.a': {'[b]': 'x'}}).to.nested.include({'\\\\.a.\\\\[b\\\\]': 'x'});\n *\n * `.nested` cannot be combined with `.own`.\n *\n * @name nested\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('nested', function () {\n flag(this, 'nested', true);\n });\n\n /**\n * ### .own\n *\n * Causes all `.property` and `.include` assertions that follow in the chain\n * to ignore inherited properties.\n *\n * Object.prototype.b = 2;\n *\n * expect({a: 1}).to.have.own.property('a');\n * expect({a: 1}).to.have.property('b');\n * expect({a: 1}).to.not.have.own.property('b');\n *\n * expect({a: 1}).to.own.include({a: 1});\n * expect({a: 1}).to.include({b: 2}).but.not.own.include({b: 2});\n *\n * `.own` cannot be combined with `.nested`.\n *\n * @name own\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('own', function () {\n flag(this, 'own', true);\n });\n\n /**\n * ### .ordered\n *\n * Causes all `.members` assertions that follow in the chain to require that\n * members be in the same order.\n *\n * expect([1, 2]).to.have.ordered.members([1, 2])\n * .but.not.have.ordered.members([2, 1]);\n *\n * When `.include` and `.ordered` are combined, the ordering begins at the\n * start of both arrays.\n *\n * expect([1, 2, 3]).to.include.ordered.members([1, 2])\n * .but.not.include.ordered.members([2, 3]);\n *\n * @name ordered\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('ordered', function () {\n flag(this, 'ordered', true);\n });\n\n /**\n * ### .any\n *\n * Causes all `.keys` assertions that follow in the chain to only require that\n * the target have at least one of the given keys. This is the opposite of\n * `.all`, which requires that the target have all of the given keys.\n *\n * expect({a: 1, b: 2}).to.not.have.any.keys('c', 'd');\n *\n * See the `.keys` doc for guidance on when to use `.any` or `.all`.\n *\n * @name any\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('any', function () {\n flag(this, 'any', true);\n flag(this, 'all', false);\n });\n\n /**\n * ### .all\n *\n * Causes all `.keys` assertions that follow in the chain to require that the\n * target have all of the given keys. This is the opposite of `.any`, which\n * only requires that the target have at least one of the given keys.\n *\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b');\n *\n * Note that `.all` is used by default when neither `.all` nor `.any` are\n * added earlier in the chain. However, it's often best to add `.all` anyway\n * because it improves readability.\n *\n * See the `.keys` doc for guidance on when to use `.any` or `.all`.\n *\n * @name all\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('all', function () {\n flag(this, 'all', true);\n flag(this, 'any', false);\n });\n\n /**\n * ### .a(type[, msg])\n *\n * Asserts that the target's type is equal to the given string `type`. Types\n * are case insensitive. See the `type-detect` project page for info on the\n * type detection algorithm: https://github.com/chaijs/type-detect.\n *\n * expect('foo').to.be.a('string');\n * expect({a: 1}).to.be.an('object');\n * expect(null).to.be.a('null');\n * expect(undefined).to.be.an('undefined');\n * expect(new Error).to.be.an('error');\n * expect(Promise.resolve()).to.be.a('promise');\n * expect(new Float32Array).to.be.a('float32array');\n * expect(Symbol()).to.be.a('symbol');\n *\n * `.a` supports objects that have a custom type set via `Symbol.toStringTag`.\n *\n * var myObj = {\n * [Symbol.toStringTag]: 'myCustomType'\n * };\n *\n * expect(myObj).to.be.a('myCustomType').but.not.an('object');\n *\n * It's often best to use `.a` to check a target's type before making more\n * assertions on the same target. That way, you avoid unexpected behavior from\n * any assertion that does different things based on the target's type.\n *\n * expect([1, 2, 3]).to.be.an('array').that.includes(2);\n * expect([]).to.be.an('array').that.is.empty;\n *\n * Add `.not` earlier in the chain to negate `.a`. However, it's often best to\n * assert that the target is the expected type, rather than asserting that it\n * isn't one of many unexpected types.\n *\n * expect('foo').to.be.a('string'); // Recommended\n * expect('foo').to.not.be.an('array'); // Not recommended\n *\n * `.a` accepts an optional `msg` argument which is a custom error message to\n * show when the assertion fails. The message can also be given as the second\n * argument to `expect`.\n *\n * expect(1).to.be.a('string', 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.a('string');\n *\n * `.a` can also be used as a language chain to improve the readability of\n * your assertions.\n *\n * expect({b: 2}).to.have.a.property('b');\n *\n * The alias `.an` can be used interchangeably with `.a`.\n *\n * @name a\n * @alias an\n * @param {String} type\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function an (type, msg) {\n if (msg) flag(this, 'message', msg);\n type = type.toLowerCase();\n var obj = flag(this, 'object')\n , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a ';\n\n this.assert(\n type === _.type(obj).toLowerCase()\n , 'expected #{this} to be ' + article + type\n , 'expected #{this} not to be ' + article + type\n );\n }\n\n Assertion.addChainableMethod('an', an);\n Assertion.addChainableMethod('a', an);\n\n /**\n * ### .include(val[, msg])\n *\n * When the target is a string, `.include` asserts that the given string `val`\n * is a substring of the target.\n *\n * expect('foobar').to.include('foo');\n *\n * When the target is an array, `.include` asserts that the given `val` is a\n * member of the target.\n *\n * expect([1, 2, 3]).to.include(2);\n *\n * When the target is an object, `.include` asserts that the given object\n * `val`'s properties are a subset of the target's properties.\n *\n * expect({a: 1, b: 2, c: 3}).to.include({a: 1, b: 2});\n *\n * When the target is a Set or WeakSet, `.include` asserts that the given `val` is a\n * member of the target. SameValueZero equality algorithm is used.\n *\n * expect(new Set([1, 2])).to.include(2);\n *\n * When the target is a Map, `.include` asserts that the given `val` is one of\n * the values of the target. SameValueZero equality algorithm is used.\n *\n * expect(new Map([['a', 1], ['b', 2]])).to.include(2);\n *\n * Because `.include` does different things based on the target's type, it's\n * important to check the target's type before using `.include`. See the `.a`\n * doc for info on testing a target's type.\n *\n * expect([1, 2, 3]).to.be.an('array').that.includes(2);\n *\n * By default, strict (`===`) equality is used to compare array members and\n * object properties. Add `.deep` earlier in the chain to use deep equality\n * instead (WeakSet targets are not supported). See the `deep-eql` project\n * page for info on the deep equality algorithm: https://github.com/chaijs/deep-eql.\n *\n * // Target array deeply (but not strictly) includes `{a: 1}`\n * expect([{a: 1}]).to.deep.include({a: 1});\n * expect([{a: 1}]).to.not.include({a: 1});\n *\n * // Target object deeply (but not strictly) includes `x: {a: 1}`\n * expect({x: {a: 1}}).to.deep.include({x: {a: 1}});\n * expect({x: {a: 1}}).to.not.include({x: {a: 1}});\n *\n * By default, all of the target's properties are searched when working with\n * objects. This includes properties that are inherited and/or non-enumerable.\n * Add `.own` earlier in the chain to exclude the target's inherited\n * properties from the search.\n *\n * Object.prototype.b = 2;\n *\n * expect({a: 1}).to.own.include({a: 1});\n * expect({a: 1}).to.include({b: 2}).but.not.own.include({b: 2});\n *\n * Note that a target object is always only searched for `val`'s own\n * enumerable properties.\n *\n * `.deep` and `.own` can be combined.\n *\n * expect({a: {b: 2}}).to.deep.own.include({a: {b: 2}});\n *\n * Add `.nested` earlier in the chain to enable dot- and bracket-notation when\n * referencing nested properties.\n *\n * expect({a: {b: ['x', 'y']}}).to.nested.include({'a.b[1]': 'y'});\n *\n * If `.` or `[]` are part of an actual property name, they can be escaped by\n * adding two backslashes before them.\n *\n * expect({'.a': {'[b]': 2}}).to.nested.include({'\\\\.a.\\\\[b\\\\]': 2});\n *\n * `.deep` and `.nested` can be combined.\n *\n * expect({a: {b: [{c: 3}]}}).to.deep.nested.include({'a.b[0]': {c: 3}});\n *\n * `.own` and `.nested` cannot be combined.\n *\n * Add `.not` earlier in the chain to negate `.include`.\n *\n * expect('foobar').to.not.include('taco');\n * expect([1, 2, 3]).to.not.include(4);\n *\n * However, it's dangerous to negate `.include` when the target is an object.\n * The problem is that it creates uncertain expectations by asserting that the\n * target object doesn't have all of `val`'s key/value pairs but may or may\n * not have some of them. It's often best to identify the exact output that's\n * expected, and then write an assertion that only accepts that exact output.\n *\n * When the target object isn't even expected to have `val`'s keys, it's\n * often best to assert exactly that.\n *\n * expect({c: 3}).to.not.have.any.keys('a', 'b'); // Recommended\n * expect({c: 3}).to.not.include({a: 1, b: 2}); // Not recommended\n *\n * When the target object is expected to have `val`'s keys, it's often best to\n * assert that each of the properties has its expected value, rather than\n * asserting that each property doesn't have one of many unexpected values.\n *\n * expect({a: 3, b: 4}).to.include({a: 3, b: 4}); // Recommended\n * expect({a: 3, b: 4}).to.not.include({a: 1, b: 2}); // Not recommended\n *\n * `.include` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect([1, 2, 3]).to.include(4, 'nooo why fail??');\n * expect([1, 2, 3], 'nooo why fail??').to.include(4);\n *\n * `.include` can also be used as a language chain, causing all `.members` and\n * `.keys` assertions that follow in the chain to require the target to be a\n * superset of the expected set, rather than an identical set. Note that\n * `.members` ignores duplicates in the subset when `.include` is added.\n *\n * // Target object's keys are a superset of ['a', 'b'] but not identical\n * expect({a: 1, b: 2, c: 3}).to.include.all.keys('a', 'b');\n * expect({a: 1, b: 2, c: 3}).to.not.have.all.keys('a', 'b');\n *\n * // Target array is a superset of [1, 2] but not identical\n * expect([1, 2, 3]).to.include.members([1, 2]);\n * expect([1, 2, 3]).to.not.have.members([1, 2]);\n *\n * // Duplicates in the subset are ignored\n * expect([1, 2, 3]).to.include.members([1, 2, 2, 2]);\n *\n * Note that adding `.any` earlier in the chain causes the `.keys` assertion\n * to ignore `.include`.\n *\n * // Both assertions are identical\n * expect({a: 1}).to.include.any.keys('a', 'b');\n * expect({a: 1}).to.have.any.keys('a', 'b');\n *\n * The aliases `.includes`, `.contain`, and `.contains` can be used\n * interchangeably with `.include`.\n *\n * @name include\n * @alias contain\n * @alias includes\n * @alias contains\n * @param {Mixed} val\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function SameValueZero(a, b) {\n return (_.isNaN(a) && _.isNaN(b)) || a === b;\n }\n\n function includeChainingBehavior () {\n flag(this, 'contains', true);\n }\n\n function include (val, msg) {\n if (msg) flag(this, 'message', msg);\n\n var obj = flag(this, 'object')\n , objType = _.type(obj).toLowerCase()\n , flagMsg = flag(this, 'message')\n , negate = flag(this, 'negate')\n , ssfi = flag(this, 'ssfi')\n , isDeep = flag(this, 'deep')\n , descriptor = isDeep ? 'deep ' : ''\n , isEql = isDeep ? flag(this, 'eql') : SameValueZero;\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n var included = false;\n\n switch (objType) {\n case 'string':\n included = obj.indexOf(val) !== -1;\n break;\n\n case 'weakset':\n if (isDeep) {\n throw new AssertionError(\n flagMsg + 'unable to use .deep.include with WeakSet',\n undefined,\n ssfi\n );\n }\n\n included = obj.has(val);\n break;\n\n case 'map':\n obj.forEach(function (item) {\n included = included || isEql(item, val);\n });\n break;\n\n case 'set':\n if (isDeep) {\n obj.forEach(function (item) {\n included = included || isEql(item, val);\n });\n } else {\n included = obj.has(val);\n }\n break;\n\n case 'array':\n if (isDeep) {\n included = obj.some(function (item) {\n return isEql(item, val);\n })\n } else {\n included = obj.indexOf(val) !== -1;\n }\n break;\n\n default:\n // This block is for asserting a subset of properties in an object.\n // `_.expectTypes` isn't used here because `.include` should work with\n // objects with a custom `@@toStringTag`.\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + 'the given combination of arguments ('\n + objType + ' and '\n + _.type(val).toLowerCase() + ')'\n + ' is invalid for this assertion. '\n + 'You can use an array, a map, an object, a set, a string, '\n + 'or a weakset instead of a '\n + _.type(val).toLowerCase(),\n undefined,\n ssfi\n );\n }\n\n var props = Object.keys(val)\n , firstErr = null\n , numErrs = 0;\n\n props.forEach(function (prop) {\n var propAssertion = new Assertion(obj);\n _.transferFlags(this, propAssertion, true);\n flag(propAssertion, 'lockSsfi', true);\n\n if (!negate || props.length === 1) {\n propAssertion.property(prop, val[prop]);\n return;\n }\n\n try {\n propAssertion.property(prop, val[prop]);\n } catch (err) {\n if (!_.checkError.compatibleConstructor(err, AssertionError)) {\n throw err;\n }\n if (firstErr === null) firstErr = err;\n numErrs++;\n }\n }, this);\n\n // When validating .not.include with multiple properties, we only want\n // to throw an assertion error if all of the properties are included,\n // in which case we throw the first property assertion error that we\n // encountered.\n if (negate && props.length > 1 && numErrs === props.length) {\n throw firstErr;\n }\n return;\n }\n\n // Assert inclusion in collection or substring in a string.\n this.assert(\n included\n , 'expected #{this} to ' + descriptor + 'include ' + _.inspect(val)\n , 'expected #{this} to not ' + descriptor + 'include ' + _.inspect(val));\n }\n\n Assertion.addChainableMethod('include', include, includeChainingBehavior);\n Assertion.addChainableMethod('contain', include, includeChainingBehavior);\n Assertion.addChainableMethod('contains', include, includeChainingBehavior);\n Assertion.addChainableMethod('includes', include, includeChainingBehavior);\n\n /**\n * ### .ok\n *\n * Asserts that the target is a truthy value (considered `true` in boolean context).\n * However, it's often best to assert that the target is strictly (`===`) or\n * deeply equal to its expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.ok; // Not recommended\n *\n * expect(true).to.be.true; // Recommended\n * expect(true).to.be.ok; // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.ok`.\n *\n * expect(0).to.equal(0); // Recommended\n * expect(0).to.not.be.ok; // Not recommended\n *\n * expect(false).to.be.false; // Recommended\n * expect(false).to.not.be.ok; // Not recommended\n *\n * expect(null).to.be.null; // Recommended\n * expect(null).to.not.be.ok; // Not recommended\n *\n * expect(undefined).to.be.undefined; // Recommended\n * expect(undefined).to.not.be.ok; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(false, 'nooo why fail??').to.be.ok;\n *\n * @name ok\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('ok', function () {\n this.assert(\n flag(this, 'object')\n , 'expected #{this} to be truthy'\n , 'expected #{this} to be falsy');\n });\n\n /**\n * ### .true\n *\n * Asserts that the target is strictly (`===`) equal to `true`.\n *\n * expect(true).to.be.true;\n *\n * Add `.not` earlier in the chain to negate `.true`. However, it's often best\n * to assert that the target is equal to its expected value, rather than not\n * equal to `true`.\n *\n * expect(false).to.be.false; // Recommended\n * expect(false).to.not.be.true; // Not recommended\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.true; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(false, 'nooo why fail??').to.be.true;\n *\n * @name true\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('true', function () {\n this.assert(\n true === flag(this, 'object')\n , 'expected #{this} to be true'\n , 'expected #{this} to be false'\n , flag(this, 'negate') ? false : true\n );\n });\n\n /**\n * ### .false\n *\n * Asserts that the target is strictly (`===`) equal to `false`.\n *\n * expect(false).to.be.false;\n *\n * Add `.not` earlier in the chain to negate `.false`. However, it's often\n * best to assert that the target is equal to its expected value, rather than\n * not equal to `false`.\n *\n * expect(true).to.be.true; // Recommended\n * expect(true).to.not.be.false; // Not recommended\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.false; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(true, 'nooo why fail??').to.be.false;\n *\n * @name false\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('false', function () {\n this.assert(\n false === flag(this, 'object')\n , 'expected #{this} to be false'\n , 'expected #{this} to be true'\n , flag(this, 'negate') ? true : false\n );\n });\n\n /**\n * ### .null\n *\n * Asserts that the target is strictly (`===`) equal to `null`.\n *\n * expect(null).to.be.null;\n *\n * Add `.not` earlier in the chain to negate `.null`. However, it's often best\n * to assert that the target is equal to its expected value, rather than not\n * equal to `null`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.null; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(42, 'nooo why fail??').to.be.null;\n *\n * @name null\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('null', function () {\n this.assert(\n null === flag(this, 'object')\n , 'expected #{this} to be null'\n , 'expected #{this} not to be null'\n );\n });\n\n /**\n * ### .undefined\n *\n * Asserts that the target is strictly (`===`) equal to `undefined`.\n *\n * expect(undefined).to.be.undefined;\n *\n * Add `.not` earlier in the chain to negate `.undefined`. However, it's often\n * best to assert that the target is equal to its expected value, rather than\n * not equal to `undefined`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.undefined; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(42, 'nooo why fail??').to.be.undefined;\n *\n * @name undefined\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('undefined', function () {\n this.assert(\n undefined === flag(this, 'object')\n , 'expected #{this} to be undefined'\n , 'expected #{this} not to be undefined'\n );\n });\n\n /**\n * ### .NaN\n *\n * Asserts that the target is exactly `NaN`.\n *\n * expect(NaN).to.be.NaN;\n *\n * Add `.not` earlier in the chain to negate `.NaN`. However, it's often best\n * to assert that the target is equal to its expected value, rather than not\n * equal to `NaN`.\n *\n * expect('foo').to.equal('foo'); // Recommended\n * expect('foo').to.not.be.NaN; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(42, 'nooo why fail??').to.be.NaN;\n *\n * @name NaN\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('NaN', function () {\n this.assert(\n _.isNaN(flag(this, 'object'))\n , 'expected #{this} to be NaN'\n , 'expected #{this} not to be NaN'\n );\n });\n\n /**\n * ### .exist\n *\n * Asserts that the target is not strictly (`===`) equal to either `null` or\n * `undefined`. However, it's often best to assert that the target is equal to\n * its expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.exist; // Not recommended\n *\n * expect(0).to.equal(0); // Recommended\n * expect(0).to.exist; // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.exist`.\n *\n * expect(null).to.be.null; // Recommended\n * expect(null).to.not.exist; // Not recommended\n *\n * expect(undefined).to.be.undefined; // Recommended\n * expect(undefined).to.not.exist; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(null, 'nooo why fail??').to.exist;\n *\n * The alias `.exists` can be used interchangeably with `.exist`.\n *\n * @name exist\n * @alias exists\n * @namespace BDD\n * @api public\n */\n\n function assertExist () {\n var val = flag(this, 'object');\n this.assert(\n val !== null && val !== undefined\n , 'expected #{this} to exist'\n , 'expected #{this} to not exist'\n );\n }\n\n Assertion.addProperty('exist', assertExist);\n Assertion.addProperty('exists', assertExist);\n\n /**\n * ### .empty\n *\n * When the target is a string or array, `.empty` asserts that the target's\n * `length` property is strictly (`===`) equal to `0`.\n *\n * expect([]).to.be.empty;\n * expect('').to.be.empty;\n *\n * When the target is a map or set, `.empty` asserts that the target's `size`\n * property is strictly equal to `0`.\n *\n * expect(new Set()).to.be.empty;\n * expect(new Map()).to.be.empty;\n *\n * When the target is a non-function object, `.empty` asserts that the target\n * doesn't have any own enumerable properties. Properties with Symbol-based\n * keys are excluded from the count.\n *\n * expect({}).to.be.empty;\n *\n * Because `.empty` does different things based on the target's type, it's\n * important to check the target's type before using `.empty`. See the `.a`\n * doc for info on testing a target's type.\n *\n * expect([]).to.be.an('array').that.is.empty;\n *\n * Add `.not` earlier in the chain to negate `.empty`. However, it's often\n * best to assert that the target contains its expected number of values,\n * rather than asserting that it's not empty.\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.not.be.empty; // Not recommended\n *\n * expect(new Set([1, 2, 3])).to.have.property('size', 3); // Recommended\n * expect(new Set([1, 2, 3])).to.not.be.empty; // Not recommended\n *\n * expect(Object.keys({a: 1})).to.have.lengthOf(1); // Recommended\n * expect({a: 1}).to.not.be.empty; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect([1, 2, 3], 'nooo why fail??').to.be.empty;\n *\n * @name empty\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('empty', function () {\n var val = flag(this, 'object')\n , ssfi = flag(this, 'ssfi')\n , flagMsg = flag(this, 'message')\n , itemsCount;\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n switch (_.type(val).toLowerCase()) {\n case 'array':\n case 'string':\n itemsCount = val.length;\n break;\n case 'map':\n case 'set':\n itemsCount = val.size;\n break;\n case 'weakmap':\n case 'weakset':\n throw new AssertionError(\n flagMsg + '.empty was passed a weak collection',\n undefined,\n ssfi\n );\n case 'function':\n var msg = flagMsg + '.empty was passed a function ' + _.getName(val);\n throw new AssertionError(msg.trim(), undefined, ssfi);\n default:\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + '.empty was passed non-string primitive ' + _.inspect(val),\n undefined,\n ssfi\n );\n }\n itemsCount = Object.keys(val).length;\n }\n\n this.assert(\n 0 === itemsCount\n , 'expected #{this} to be empty'\n , 'expected #{this} not to be empty'\n );\n });\n\n /**\n * ### .arguments\n *\n * Asserts that the target is an `arguments` object.\n *\n * function test () {\n * expect(arguments).to.be.arguments;\n * }\n *\n * test();\n *\n * Add `.not` earlier in the chain to negate `.arguments`. However, it's often\n * best to assert which type the target is expected to be, rather than\n * asserting that it’s not an `arguments` object.\n *\n * expect('foo').to.be.a('string'); // Recommended\n * expect('foo').to.not.be.arguments; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({}, 'nooo why fail??').to.be.arguments;\n *\n * The alias `.Arguments` can be used interchangeably with `.arguments`.\n *\n * @name arguments\n * @alias Arguments\n * @namespace BDD\n * @api public\n */\n\n function checkArguments () {\n var obj = flag(this, 'object')\n , type = _.type(obj);\n this.assert(\n 'Arguments' === type\n , 'expected #{this} to be arguments but got ' + type\n , 'expected #{this} to not be arguments'\n );\n }\n\n Assertion.addProperty('arguments', checkArguments);\n Assertion.addProperty('Arguments', checkArguments);\n\n /**\n * ### .equal(val[, msg])\n *\n * Asserts that the target is strictly (`===`) equal to the given `val`.\n *\n * expect(1).to.equal(1);\n * expect('foo').to.equal('foo');\n *\n * Add `.deep` earlier in the chain to use deep equality instead. See the\n * `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target object deeply (but not strictly) equals `{a: 1}`\n * expect({a: 1}).to.deep.equal({a: 1});\n * expect({a: 1}).to.not.equal({a: 1});\n *\n * // Target array deeply (but not strictly) equals `[1, 2]`\n * expect([1, 2]).to.deep.equal([1, 2]);\n * expect([1, 2]).to.not.equal([1, 2]);\n *\n * Add `.not` earlier in the chain to negate `.equal`. However, it's often\n * best to assert that the target is equal to its expected value, rather than\n * not equal to one of countless unexpected values.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.equal(2); // Not recommended\n *\n * `.equal` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.equal(2, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.equal(2);\n *\n * The aliases `.equals` and `eq` can be used interchangeably with `.equal`.\n *\n * @name equal\n * @alias equals\n * @alias eq\n * @param {Mixed} val\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertEqual (val, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n if (flag(this, 'deep')) {\n var prevLockSsfi = flag(this, 'lockSsfi');\n flag(this, 'lockSsfi', true);\n this.eql(val);\n flag(this, 'lockSsfi', prevLockSsfi);\n } else {\n this.assert(\n val === obj\n , 'expected #{this} to equal #{exp}'\n , 'expected #{this} to not equal #{exp}'\n , val\n , this._obj\n , true\n );\n }\n }\n\n Assertion.addMethod('equal', assertEqual);\n Assertion.addMethod('equals', assertEqual);\n Assertion.addMethod('eq', assertEqual);\n\n /**\n * ### .eql(obj[, msg])\n *\n * Asserts that the target is deeply equal to the given `obj`. See the\n * `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target object is deeply (but not strictly) equal to {a: 1}\n * expect({a: 1}).to.eql({a: 1}).but.not.equal({a: 1});\n *\n * // Target array is deeply (but not strictly) equal to [1, 2]\n * expect([1, 2]).to.eql([1, 2]).but.not.equal([1, 2]);\n *\n * Add `.not` earlier in the chain to negate `.eql`. However, it's often best\n * to assert that the target is deeply equal to its expected value, rather\n * than not deeply equal to one of countless unexpected values.\n *\n * expect({a: 1}).to.eql({a: 1}); // Recommended\n * expect({a: 1}).to.not.eql({b: 2}); // Not recommended\n *\n * `.eql` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect({a: 1}).to.eql({b: 2}, 'nooo why fail??');\n * expect({a: 1}, 'nooo why fail??').to.eql({b: 2});\n *\n * The alias `.eqls` can be used interchangeably with `.eql`.\n *\n * The `.deep.equal` assertion is almost identical to `.eql` but with one\n * difference: `.deep.equal` causes deep equality comparisons to also be used\n * for any other assertions that follow in the chain.\n *\n * @name eql\n * @alias eqls\n * @param {Mixed} obj\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertEql(obj, msg) {\n if (msg) flag(this, 'message', msg);\n var eql = flag(this, 'eql');\n this.assert(\n eql(obj, flag(this, 'object'))\n , 'expected #{this} to deeply equal #{exp}'\n , 'expected #{this} to not deeply equal #{exp}'\n , obj\n , this._obj\n , true\n );\n }\n\n Assertion.addMethod('eql', assertEql);\n Assertion.addMethod('eqls', assertEql);\n\n /**\n * ### .above(n[, msg])\n *\n * Asserts that the target is a number or a date greater than the given number or date `n` respectively.\n * However, it's often best to assert that the target is equal to its expected\n * value.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.be.above(1); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is greater than the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.above(2); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.above(2); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.above`.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(1).to.not.be.above(2); // Not recommended\n *\n * `.above` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.be.above(2, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.above(2);\n *\n * The aliases `.gt` and `.greaterThan` can be used interchangeably with\n * `.above`.\n *\n * @name above\n * @alias gt\n * @alias greaterThan\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertAbove (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to above must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to above must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount > n\n , 'expected #{this} to have a ' + descriptor + ' above #{exp} but got #{act}'\n , 'expected #{this} to not have a ' + descriptor + ' above #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj > n\n , 'expected #{this} to be above #{exp}'\n , 'expected #{this} to be at most #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('above', assertAbove);\n Assertion.addMethod('gt', assertAbove);\n Assertion.addMethod('greaterThan', assertAbove);\n\n /**\n * ### .least(n[, msg])\n *\n * Asserts that the target is a number or a date greater than or equal to the given\n * number or date `n` respectively. However, it's often best to assert that the target is equal to\n * its expected value.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.be.at.least(1); // Not recommended\n * expect(2).to.be.at.least(2); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is greater than or equal to the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.at.least(2); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.at.least(2); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.least`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.at.least(2); // Not recommended\n *\n * `.least` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.be.at.least(2, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.at.least(2);\n *\n * The aliases `.gte` and `.greaterThanOrEqual` can be used interchangeably with\n * `.least`.\n *\n * @name least\n * @alias gte\n * @alias greaterThanOrEqual\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertLeast (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to least must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to least must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= n\n , 'expected #{this} to have a ' + descriptor + ' at least #{exp} but got #{act}'\n , 'expected #{this} to have a ' + descriptor + ' below #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj >= n\n , 'expected #{this} to be at least #{exp}'\n , 'expected #{this} to be below #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('least', assertLeast);\n Assertion.addMethod('gte', assertLeast);\n Assertion.addMethod('greaterThanOrEqual', assertLeast);\n\n /**\n * ### .below(n[, msg])\n *\n * Asserts that the target is a number or a date less than the given number or date `n` respectively.\n * However, it's often best to assert that the target is equal to its expected\n * value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.below(2); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is less than the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.below(4); // Not recommended\n *\n * expect([1, 2, 3]).to.have.length(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.below(4); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.below`.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.not.be.below(1); // Not recommended\n *\n * `.below` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(2).to.be.below(1, 'nooo why fail??');\n * expect(2, 'nooo why fail??').to.be.below(1);\n *\n * The aliases `.lt` and `.lessThan` can be used interchangeably with\n * `.below`.\n *\n * @name below\n * @alias lt\n * @alias lessThan\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertBelow (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to below must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to below must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount < n\n , 'expected #{this} to have a ' + descriptor + ' below #{exp} but got #{act}'\n , 'expected #{this} to not have a ' + descriptor + ' below #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj < n\n , 'expected #{this} to be below #{exp}'\n , 'expected #{this} to be at least #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('below', assertBelow);\n Assertion.addMethod('lt', assertBelow);\n Assertion.addMethod('lessThan', assertBelow);\n\n /**\n * ### .most(n[, msg])\n *\n * Asserts that the target is a number or a date less than or equal to the given number\n * or date `n` respectively. However, it's often best to assert that the target is equal to its\n * expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.at.most(2); // Not recommended\n * expect(1).to.be.at.most(1); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is less than or equal to the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.at.most(4); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.at.most(4); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.most`.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.not.be.at.most(1); // Not recommended\n *\n * `.most` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(2).to.be.at.most(1, 'nooo why fail??');\n * expect(2, 'nooo why fail??').to.be.at.most(1);\n *\n * The aliases `.lte` and `.lessThanOrEqual` can be used interchangeably with\n * `.most`.\n *\n * @name most\n * @alias lte\n * @alias lessThanOrEqual\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertMost (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to most must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to most must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount <= n\n , 'expected #{this} to have a ' + descriptor + ' at most #{exp} but got #{act}'\n , 'expected #{this} to have a ' + descriptor + ' above #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj <= n\n , 'expected #{this} to be at most #{exp}'\n , 'expected #{this} to be above #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('most', assertMost);\n Assertion.addMethod('lte', assertMost);\n Assertion.addMethod('lessThanOrEqual', assertMost);\n\n /**\n * ### .within(start, finish[, msg])\n *\n * Asserts that the target is a number or a date greater than or equal to the given\n * number or date `start`, and less than or equal to the given number or date `finish` respectively.\n * However, it's often best to assert that the target is equal to its expected\n * value.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.be.within(1, 3); // Not recommended\n * expect(2).to.be.within(2, 3); // Not recommended\n * expect(2).to.be.within(1, 2); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is greater than or equal to the given number `start`, and less\n * than or equal to the given number `finish`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.within(2, 4); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.within(2, 4); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.within`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.within(2, 4); // Not recommended\n *\n * `.within` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(4).to.be.within(1, 3, 'nooo why fail??');\n * expect(4, 'nooo why fail??').to.be.within(1, 3);\n *\n * @name within\n * @param {Number} start lower bound inclusive\n * @param {Number} finish upper bound inclusive\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('within', function (start, finish, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , startType = _.type(start).toLowerCase()\n , finishType = _.type(finish).toLowerCase()\n , errorMessage\n , shouldThrow = true\n , range = (startType === 'date' && finishType === 'date')\n ? start.toISOString() + '..' + finish.toISOString()\n : start + '..' + finish;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && (startType !== 'date' || finishType !== 'date'))) {\n errorMessage = msgPrefix + 'the arguments to within must be dates';\n } else if ((startType !== 'number' || finishType !== 'number') && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the arguments to within must be numbers';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= start && itemsCount <= finish\n , 'expected #{this} to have a ' + descriptor + ' within ' + range\n , 'expected #{this} to not have a ' + descriptor + ' within ' + range\n );\n } else {\n this.assert(\n obj >= start && obj <= finish\n , 'expected #{this} to be within ' + range\n , 'expected #{this} to not be within ' + range\n );\n }\n });\n\n /**\n * ### .instanceof(constructor[, msg])\n *\n * Asserts that the target is an instance of the given `constructor`.\n *\n * function Cat () { }\n *\n * expect(new Cat()).to.be.an.instanceof(Cat);\n * expect([1, 2]).to.be.an.instanceof(Array);\n *\n * Add `.not` earlier in the chain to negate `.instanceof`.\n *\n * expect({a: 1}).to.not.be.an.instanceof(Array);\n *\n * `.instanceof` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(1).to.be.an.instanceof(Array, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.an.instanceof(Array);\n *\n * Due to limitations in ES5, `.instanceof` may not always work as expected\n * when using a transpiler such as Babel or TypeScript. In particular, it may\n * produce unexpected results when subclassing built-in object such as\n * `Array`, `Error`, and `Map`. See your transpiler's docs for details:\n *\n * - ([Babel](https://babeljs.io/docs/usage/caveats/#classes))\n * - ([TypeScript](https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work))\n *\n * The alias `.instanceOf` can be used interchangeably with `.instanceof`.\n *\n * @name instanceof\n * @param {Constructor} constructor\n * @param {String} msg _optional_\n * @alias instanceOf\n * @namespace BDD\n * @api public\n */\n\n function assertInstanceOf (constructor, msg) {\n if (msg) flag(this, 'message', msg);\n\n var target = flag(this, 'object')\n var ssfi = flag(this, 'ssfi');\n var flagMsg = flag(this, 'message');\n\n try {\n var isInstanceOf = target instanceof constructor;\n } catch (err) {\n if (err instanceof TypeError) {\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n throw new AssertionError(\n flagMsg + 'The instanceof assertion needs a constructor but '\n + _.type(constructor) + ' was given.',\n undefined,\n ssfi\n );\n }\n throw err;\n }\n\n var name = _.getName(constructor);\n if (name === null) {\n name = 'an unnamed constructor';\n }\n\n this.assert(\n isInstanceOf\n , 'expected #{this} to be an instance of ' + name\n , 'expected #{this} to not be an instance of ' + name\n );\n };\n\n Assertion.addMethod('instanceof', assertInstanceOf);\n Assertion.addMethod('instanceOf', assertInstanceOf);\n\n /**\n * ### .property(name[, val[, msg]])\n *\n * Asserts that the target has a property with the given key `name`.\n *\n * expect({a: 1}).to.have.property('a');\n *\n * When `val` is provided, `.property` also asserts that the property's value\n * is equal to the given `val`.\n *\n * expect({a: 1}).to.have.property('a', 1);\n *\n * By default, strict (`===`) equality is used. Add `.deep` earlier in the\n * chain to use deep equality instead. See the `deep-eql` project page for\n * info on the deep equality algorithm: https://github.com/chaijs/deep-eql.\n *\n * // Target object deeply (but not strictly) has property `x: {a: 1}`\n * expect({x: {a: 1}}).to.have.deep.property('x', {a: 1});\n * expect({x: {a: 1}}).to.not.have.property('x', {a: 1});\n *\n * The target's enumerable and non-enumerable properties are always included\n * in the search. By default, both own and inherited properties are included.\n * Add `.own` earlier in the chain to exclude inherited properties from the\n * search.\n *\n * Object.prototype.b = 2;\n *\n * expect({a: 1}).to.have.own.property('a');\n * expect({a: 1}).to.have.own.property('a', 1);\n * expect({a: 1}).to.have.property('b');\n * expect({a: 1}).to.not.have.own.property('b');\n *\n * `.deep` and `.own` can be combined.\n *\n * expect({x: {a: 1}}).to.have.deep.own.property('x', {a: 1});\n *\n * Add `.nested` earlier in the chain to enable dot- and bracket-notation when\n * referencing nested properties.\n *\n * expect({a: {b: ['x', 'y']}}).to.have.nested.property('a.b[1]');\n * expect({a: {b: ['x', 'y']}}).to.have.nested.property('a.b[1]', 'y');\n *\n * If `.` or `[]` are part of an actual property name, they can be escaped by\n * adding two backslashes before them.\n *\n * expect({'.a': {'[b]': 'x'}}).to.have.nested.property('\\\\.a.\\\\[b\\\\]');\n *\n * `.deep` and `.nested` can be combined.\n *\n * expect({a: {b: [{c: 3}]}})\n * .to.have.deep.nested.property('a.b[0]', {c: 3});\n *\n * `.own` and `.nested` cannot be combined.\n *\n * Add `.not` earlier in the chain to negate `.property`.\n *\n * expect({a: 1}).to.not.have.property('b');\n *\n * However, it's dangerous to negate `.property` when providing `val`. The\n * problem is that it creates uncertain expectations by asserting that the\n * target either doesn't have a property with the given key `name`, or that it\n * does have a property with the given key `name` but its value isn't equal to\n * the given `val`. It's often best to identify the exact output that's\n * expected, and then write an assertion that only accepts that exact output.\n *\n * When the target isn't expected to have a property with the given key\n * `name`, it's often best to assert exactly that.\n *\n * expect({b: 2}).to.not.have.property('a'); // Recommended\n * expect({b: 2}).to.not.have.property('a', 1); // Not recommended\n *\n * When the target is expected to have a property with the given key `name`,\n * it's often best to assert that the property has its expected value, rather\n * than asserting that it doesn't have one of many unexpected values.\n *\n * expect({a: 3}).to.have.property('a', 3); // Recommended\n * expect({a: 3}).to.not.have.property('a', 1); // Not recommended\n *\n * `.property` changes the target of any assertions that follow in the chain\n * to be the value of the property from the original target object.\n *\n * expect({a: 1}).to.have.property('a').that.is.a('number');\n *\n * `.property` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing `val`, only use the\n * second form.\n *\n * // Recommended\n * expect({a: 1}).to.have.property('a', 2, 'nooo why fail??');\n * expect({a: 1}, 'nooo why fail??').to.have.property('a', 2);\n * expect({a: 1}, 'nooo why fail??').to.have.property('b');\n *\n * // Not recommended\n * expect({a: 1}).to.have.property('b', undefined, 'nooo why fail??');\n *\n * The above assertion isn't the same thing as not providing `val`. Instead,\n * it's asserting that the target object has a `b` property that's equal to\n * `undefined`.\n *\n * The assertions `.ownProperty` and `.haveOwnProperty` can be used\n * interchangeably with `.own.property`.\n *\n * @name property\n * @param {String} name\n * @param {Mixed} val (optional)\n * @param {String} msg _optional_\n * @returns value of property for chaining\n * @namespace BDD\n * @api public\n */\n\n function assertProperty (name, val, msg) {\n if (msg) flag(this, 'message', msg);\n\n var isNested = flag(this, 'nested')\n , isOwn = flag(this, 'own')\n , flagMsg = flag(this, 'message')\n , obj = flag(this, 'object')\n , ssfi = flag(this, 'ssfi')\n , nameType = typeof name;\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n if (isNested) {\n if (nameType !== 'string') {\n throw new AssertionError(\n flagMsg + 'the argument to property must be a string when using nested syntax',\n undefined,\n ssfi\n );\n }\n } else {\n if (nameType !== 'string' && nameType !== 'number' && nameType !== 'symbol') {\n throw new AssertionError(\n flagMsg + 'the argument to property must be a string, number, or symbol',\n undefined,\n ssfi\n );\n }\n }\n\n if (isNested && isOwn) {\n throw new AssertionError(\n flagMsg + 'The \"nested\" and \"own\" flags cannot be combined.',\n undefined,\n ssfi\n );\n }\n\n if (obj === null || obj === undefined) {\n throw new AssertionError(\n flagMsg + 'Target cannot be null or undefined.',\n undefined,\n ssfi\n );\n }\n\n var isDeep = flag(this, 'deep')\n , negate = flag(this, 'negate')\n , pathInfo = isNested ? _.getPathInfo(obj, name) : null\n , value = isNested ? pathInfo.value : obj[name]\n , isEql = isDeep ? flag(this, 'eql') : (val1, val2) => val1 === val2;;\n\n var descriptor = '';\n if (isDeep) descriptor += 'deep ';\n if (isOwn) descriptor += 'own ';\n if (isNested) descriptor += 'nested ';\n descriptor += 'property ';\n\n var hasProperty;\n if (isOwn) hasProperty = Object.prototype.hasOwnProperty.call(obj, name);\n else if (isNested) hasProperty = pathInfo.exists;\n else hasProperty = _.hasProperty(obj, name);\n\n // When performing a negated assertion for both name and val, merely having\n // a property with the given name isn't enough to cause the assertion to\n // fail. It must both have a property with the given name, and the value of\n // that property must equal the given val. Therefore, skip this assertion in\n // favor of the next.\n if (!negate || arguments.length === 1) {\n this.assert(\n hasProperty\n , 'expected #{this} to have ' + descriptor + _.inspect(name)\n , 'expected #{this} to not have ' + descriptor + _.inspect(name));\n }\n\n if (arguments.length > 1) {\n this.assert(\n hasProperty && isEql(val, value)\n , 'expected #{this} to have ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}'\n , 'expected #{this} to not have ' + descriptor + _.inspect(name) + ' of #{act}'\n , val\n , value\n );\n }\n\n flag(this, 'object', value);\n }\n\n Assertion.addMethod('property', assertProperty);\n\n function assertOwnProperty (name, value, msg) {\n flag(this, 'own', true);\n assertProperty.apply(this, arguments);\n }\n\n Assertion.addMethod('ownProperty', assertOwnProperty);\n Assertion.addMethod('haveOwnProperty', assertOwnProperty);\n\n /**\n * ### .ownPropertyDescriptor(name[, descriptor[, msg]])\n *\n * Asserts that the target has its own property descriptor with the given key\n * `name`. Enumerable and non-enumerable properties are included in the\n * search.\n *\n * expect({a: 1}).to.have.ownPropertyDescriptor('a');\n *\n * When `descriptor` is provided, `.ownPropertyDescriptor` also asserts that\n * the property's descriptor is deeply equal to the given `descriptor`. See\n * the `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * expect({a: 1}).to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 1,\n * });\n *\n * Add `.not` earlier in the chain to negate `.ownPropertyDescriptor`.\n *\n * expect({a: 1}).to.not.have.ownPropertyDescriptor('b');\n *\n * However, it's dangerous to negate `.ownPropertyDescriptor` when providing\n * a `descriptor`. The problem is that it creates uncertain expectations by\n * asserting that the target either doesn't have a property descriptor with\n * the given key `name`, or that it does have a property descriptor with the\n * given key `name` but it’s not deeply equal to the given `descriptor`. It's\n * often best to identify the exact output that's expected, and then write an\n * assertion that only accepts that exact output.\n *\n * When the target isn't expected to have a property descriptor with the given\n * key `name`, it's often best to assert exactly that.\n *\n * // Recommended\n * expect({b: 2}).to.not.have.ownPropertyDescriptor('a');\n *\n * // Not recommended\n * expect({b: 2}).to.not.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 1,\n * });\n *\n * When the target is expected to have a property descriptor with the given\n * key `name`, it's often best to assert that the property has its expected\n * descriptor, rather than asserting that it doesn't have one of many\n * unexpected descriptors.\n *\n * // Recommended\n * expect({a: 3}).to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 3,\n * });\n *\n * // Not recommended\n * expect({a: 3}).to.not.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 1,\n * });\n *\n * `.ownPropertyDescriptor` changes the target of any assertions that follow\n * in the chain to be the value of the property descriptor from the original\n * target object.\n *\n * expect({a: 1}).to.have.ownPropertyDescriptor('a')\n * .that.has.property('enumerable', true);\n *\n * `.ownPropertyDescriptor` accepts an optional `msg` argument which is a\n * custom error message to show when the assertion fails. The message can also\n * be given as the second argument to `expect`. When not providing\n * `descriptor`, only use the second form.\n *\n * // Recommended\n * expect({a: 1}).to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 2,\n * }, 'nooo why fail??');\n *\n * // Recommended\n * expect({a: 1}, 'nooo why fail??').to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 2,\n * });\n *\n * // Recommended\n * expect({a: 1}, 'nooo why fail??').to.have.ownPropertyDescriptor('b');\n *\n * // Not recommended\n * expect({a: 1})\n * .to.have.ownPropertyDescriptor('b', undefined, 'nooo why fail??');\n *\n * The above assertion isn't the same thing as not providing `descriptor`.\n * Instead, it's asserting that the target object has a `b` property\n * descriptor that's deeply equal to `undefined`.\n *\n * The alias `.haveOwnPropertyDescriptor` can be used interchangeably with\n * `.ownPropertyDescriptor`.\n *\n * @name ownPropertyDescriptor\n * @alias haveOwnPropertyDescriptor\n * @param {String} name\n * @param {Object} descriptor _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertOwnPropertyDescriptor (name, descriptor, msg) {\n if (typeof descriptor === 'string') {\n msg = descriptor;\n descriptor = null;\n }\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);\n var eql = flag(this, 'eql');\n if (actualDescriptor && descriptor) {\n this.assert(\n eql(descriptor, actualDescriptor)\n , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to match ' + _.inspect(descriptor) + ', got ' + _.inspect(actualDescriptor)\n , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to not match ' + _.inspect(descriptor)\n , descriptor\n , actualDescriptor\n , true\n );\n } else {\n this.assert(\n actualDescriptor\n , 'expected #{this} to have an own property descriptor for ' + _.inspect(name)\n , 'expected #{this} to not have an own property descriptor for ' + _.inspect(name)\n );\n }\n flag(this, 'object', actualDescriptor);\n }\n\n Assertion.addMethod('ownPropertyDescriptor', assertOwnPropertyDescriptor);\n Assertion.addMethod('haveOwnPropertyDescriptor', assertOwnPropertyDescriptor);\n\n /**\n * ### .lengthOf(n[, msg])\n *\n * Asserts that the target's `length` or `size` is equal to the given number\n * `n`.\n *\n * expect([1, 2, 3]).to.have.lengthOf(3);\n * expect('foo').to.have.lengthOf(3);\n * expect(new Set([1, 2, 3])).to.have.lengthOf(3);\n * expect(new Map([['a', 1], ['b', 2], ['c', 3]])).to.have.lengthOf(3);\n *\n * Add `.not` earlier in the chain to negate `.lengthOf`. However, it's often\n * best to assert that the target's `length` property is equal to its expected\n * value, rather than not equal to one of many unexpected values.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.not.have.lengthOf(4); // Not recommended\n *\n * `.lengthOf` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect([1, 2, 3]).to.have.lengthOf(2, 'nooo why fail??');\n * expect([1, 2, 3], 'nooo why fail??').to.have.lengthOf(2);\n *\n * `.lengthOf` can also be used as a language chain, causing all `.above`,\n * `.below`, `.least`, `.most`, and `.within` assertions that follow in the\n * chain to use the target's `length` property as the target. However, it's\n * often best to assert that the target's `length` property is equal to its\n * expected length, rather than asserting that its `length` property falls\n * within some range of values.\n *\n * // Recommended\n * expect([1, 2, 3]).to.have.lengthOf(3);\n *\n * // Not recommended\n * expect([1, 2, 3]).to.have.lengthOf.above(2);\n * expect([1, 2, 3]).to.have.lengthOf.below(4);\n * expect([1, 2, 3]).to.have.lengthOf.at.least(3);\n * expect([1, 2, 3]).to.have.lengthOf.at.most(3);\n * expect([1, 2, 3]).to.have.lengthOf.within(2,4);\n *\n * Due to a compatibility issue, the alias `.length` can't be chained directly\n * off of an uninvoked method such as `.a`. Therefore, `.length` can't be used\n * interchangeably with `.lengthOf` in every situation. It's recommended to\n * always use `.lengthOf` instead of `.length`.\n *\n * expect([1, 2, 3]).to.have.a.length(3); // incompatible; throws error\n * expect([1, 2, 3]).to.have.a.lengthOf(3); // passes as expected\n *\n * @name lengthOf\n * @alias length\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertLengthChain () {\n flag(this, 'doLength', true);\n }\n\n function assertLength (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , objType = _.type(obj).toLowerCase()\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi')\n , descriptor = 'length'\n , itemsCount;\n\n switch (objType) {\n case 'map':\n case 'set':\n descriptor = 'size';\n itemsCount = obj.size;\n break;\n default:\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n itemsCount = obj.length;\n }\n\n this.assert(\n itemsCount == n\n , 'expected #{this} to have a ' + descriptor + ' of #{exp} but got #{act}'\n , 'expected #{this} to not have a ' + descriptor + ' of #{act}'\n , n\n , itemsCount\n );\n }\n\n Assertion.addChainableMethod('length', assertLength, assertLengthChain);\n Assertion.addChainableMethod('lengthOf', assertLength, assertLengthChain);\n\n /**\n * ### .match(re[, msg])\n *\n * Asserts that the target matches the given regular expression `re`.\n *\n * expect('foobar').to.match(/^foo/);\n *\n * Add `.not` earlier in the chain to negate `.match`.\n *\n * expect('foobar').to.not.match(/taco/);\n *\n * `.match` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect('foobar').to.match(/taco/, 'nooo why fail??');\n * expect('foobar', 'nooo why fail??').to.match(/taco/);\n *\n * The alias `.matches` can be used interchangeably with `.match`.\n *\n * @name match\n * @alias matches\n * @param {RegExp} re\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n function assertMatch(re, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n this.assert(\n re.exec(obj)\n , 'expected #{this} to match ' + re\n , 'expected #{this} not to match ' + re\n );\n }\n\n Assertion.addMethod('match', assertMatch);\n Assertion.addMethod('matches', assertMatch);\n\n /**\n * ### .string(str[, msg])\n *\n * Asserts that the target string contains the given substring `str`.\n *\n * expect('foobar').to.have.string('bar');\n *\n * Add `.not` earlier in the chain to negate `.string`.\n *\n * expect('foobar').to.not.have.string('taco');\n *\n * `.string` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect('foobar').to.have.string('taco', 'nooo why fail??');\n * expect('foobar', 'nooo why fail??').to.have.string('taco');\n *\n * @name string\n * @param {String} str\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('string', function (str, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(obj, flagMsg, ssfi, true).is.a('string');\n\n this.assert(\n ~obj.indexOf(str)\n , 'expected #{this} to contain ' + _.inspect(str)\n , 'expected #{this} to not contain ' + _.inspect(str)\n );\n });\n\n /**\n * ### .keys(key1[, key2[, ...]])\n *\n * Asserts that the target object, array, map, or set has the given keys. Only\n * the target's own inherited properties are included in the search.\n *\n * When the target is an object or array, keys can be provided as one or more\n * string arguments, a single array argument, or a single object argument. In\n * the latter case, only the keys in the given object matter; the values are\n * ignored.\n *\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b');\n * expect(['x', 'y']).to.have.all.keys(0, 1);\n *\n * expect({a: 1, b: 2}).to.have.all.keys(['a', 'b']);\n * expect(['x', 'y']).to.have.all.keys([0, 1]);\n *\n * expect({a: 1, b: 2}).to.have.all.keys({a: 4, b: 5}); // ignore 4 and 5\n * expect(['x', 'y']).to.have.all.keys({0: 4, 1: 5}); // ignore 4 and 5\n *\n * When the target is a map or set, each key must be provided as a separate\n * argument.\n *\n * expect(new Map([['a', 1], ['b', 2]])).to.have.all.keys('a', 'b');\n * expect(new Set(['a', 'b'])).to.have.all.keys('a', 'b');\n *\n * Because `.keys` does different things based on the target's type, it's\n * important to check the target's type before using `.keys`. See the `.a` doc\n * for info on testing a target's type.\n *\n * expect({a: 1, b: 2}).to.be.an('object').that.has.all.keys('a', 'b');\n *\n * By default, strict (`===`) equality is used to compare keys of maps and\n * sets. Add `.deep` earlier in the chain to use deep equality instead. See\n * the `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target set deeply (but not strictly) has key `{a: 1}`\n * expect(new Set([{a: 1}])).to.have.all.deep.keys([{a: 1}]);\n * expect(new Set([{a: 1}])).to.not.have.all.keys([{a: 1}]);\n *\n * By default, the target must have all of the given keys and no more. Add\n * `.any` earlier in the chain to only require that the target have at least\n * one of the given keys. Also, add `.not` earlier in the chain to negate\n * `.keys`. It's often best to add `.any` when negating `.keys`, and to use\n * `.all` when asserting `.keys` without negation.\n *\n * When negating `.keys`, `.any` is preferred because `.not.any.keys` asserts\n * exactly what's expected of the output, whereas `.not.all.keys` creates\n * uncertain expectations.\n *\n * // Recommended; asserts that target doesn't have any of the given keys\n * expect({a: 1, b: 2}).to.not.have.any.keys('c', 'd');\n *\n * // Not recommended; asserts that target doesn't have all of the given\n * // keys but may or may not have some of them\n * expect({a: 1, b: 2}).to.not.have.all.keys('c', 'd');\n *\n * When asserting `.keys` without negation, `.all` is preferred because\n * `.all.keys` asserts exactly what's expected of the output, whereas\n * `.any.keys` creates uncertain expectations.\n *\n * // Recommended; asserts that target has all the given keys\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b');\n *\n * // Not recommended; asserts that target has at least one of the given\n * // keys but may or may not have more of them\n * expect({a: 1, b: 2}).to.have.any.keys('a', 'b');\n *\n * Note that `.all` is used by default when neither `.all` nor `.any` appear\n * earlier in the chain. However, it's often best to add `.all` anyway because\n * it improves readability.\n *\n * // Both assertions are identical\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b'); // Recommended\n * expect({a: 1, b: 2}).to.have.keys('a', 'b'); // Not recommended\n *\n * Add `.include` earlier in the chain to require that the target's keys be a\n * superset of the expected keys, rather than identical sets.\n *\n * // Target object's keys are a superset of ['a', 'b'] but not identical\n * expect({a: 1, b: 2, c: 3}).to.include.all.keys('a', 'b');\n * expect({a: 1, b: 2, c: 3}).to.not.have.all.keys('a', 'b');\n *\n * However, if `.any` and `.include` are combined, only the `.any` takes\n * effect. The `.include` is ignored in this case.\n *\n * // Both assertions are identical\n * expect({a: 1}).to.have.any.keys('a', 'b');\n * expect({a: 1}).to.include.any.keys('a', 'b');\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({a: 1}, 'nooo why fail??').to.have.key('b');\n *\n * The alias `.key` can be used interchangeably with `.keys`.\n *\n * @name keys\n * @alias key\n * @param {...String|Array|Object} keys\n * @namespace BDD\n * @api public\n */\n\n function assertKeys (keys) {\n var obj = flag(this, 'object')\n , objType = _.type(obj)\n , keysType = _.type(keys)\n , ssfi = flag(this, 'ssfi')\n , isDeep = flag(this, 'deep')\n , str\n , deepStr = ''\n , actual\n , ok = true\n , flagMsg = flag(this, 'message');\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n var mixedArgsMsg = flagMsg + 'when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments';\n\n if (objType === 'Map' || objType === 'Set') {\n deepStr = isDeep ? 'deeply ' : '';\n actual = [];\n\n // Map and Set '.keys' aren't supported in IE 11. Therefore, use .forEach.\n obj.forEach(function (val, key) { actual.push(key) });\n\n if (keysType !== 'Array') {\n keys = Array.prototype.slice.call(arguments);\n }\n } else {\n actual = _.getOwnEnumerableProperties(obj);\n\n switch (keysType) {\n case 'Array':\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, undefined, ssfi);\n }\n break;\n case 'Object':\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, undefined, ssfi);\n }\n keys = Object.keys(keys);\n break;\n default:\n keys = Array.prototype.slice.call(arguments);\n }\n\n // Only stringify non-Symbols because Symbols would become \"Symbol()\"\n keys = keys.map(function (val) {\n return typeof val === 'symbol' ? val : String(val);\n });\n }\n\n if (!keys.length) {\n throw new AssertionError(flagMsg + 'keys required', undefined, ssfi);\n }\n\n var len = keys.length\n , any = flag(this, 'any')\n , all = flag(this, 'all')\n , expected = keys\n , isEql = isDeep ? flag(this, 'eql') : (val1, val2) => val1 === val2;\n\n if (!any && !all) {\n all = true;\n }\n\n // Has any\n if (any) {\n ok = expected.some(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n }\n\n // Has all\n if (all) {\n ok = expected.every(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n\n if (!flag(this, 'contains')) {\n ok = ok && keys.length == actual.length;\n }\n }\n\n // Key string\n if (len > 1) {\n keys = keys.map(function(key) {\n return _.inspect(key);\n });\n var last = keys.pop();\n if (all) {\n str = keys.join(', ') + ', and ' + last;\n }\n if (any) {\n str = keys.join(', ') + ', or ' + last;\n }\n } else {\n str = _.inspect(keys[0]);\n }\n\n // Form\n str = (len > 1 ? 'keys ' : 'key ') + str;\n\n // Have / include\n str = (flag(this, 'contains') ? 'contain ' : 'have ') + str;\n\n // Assertion\n this.assert(\n ok\n , 'expected #{this} to ' + deepStr + str\n , 'expected #{this} to not ' + deepStr + str\n , expected.slice(0).sort(_.compareByInspect)\n , actual.sort(_.compareByInspect)\n , true\n );\n }\n\n Assertion.addMethod('keys', assertKeys);\n Assertion.addMethod('key', assertKeys);\n\n /**\n * ### .throw([errorLike], [errMsgMatcher], [msg])\n *\n * When no arguments are provided, `.throw` invokes the target function and\n * asserts that an error is thrown.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw();\n *\n * When one argument is provided, and it's an error constructor, `.throw`\n * invokes the target function and asserts that an error is thrown that's an\n * instance of that error constructor.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw(TypeError);\n *\n * When one argument is provided, and it's an error instance, `.throw` invokes\n * the target function and asserts that an error is thrown that's strictly\n * (`===`) equal to that error instance.\n *\n * var err = new TypeError('Illegal salmon!');\n * var badFn = function () { throw err; };\n *\n * expect(badFn).to.throw(err);\n *\n * When one argument is provided, and it's a string, `.throw` invokes the\n * target function and asserts that an error is thrown with a message that\n * contains that string.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw('salmon');\n *\n * When one argument is provided, and it's a regular expression, `.throw`\n * invokes the target function and asserts that an error is thrown with a\n * message that matches that regular expression.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw(/salmon/);\n *\n * When two arguments are provided, and the first is an error instance or\n * constructor, and the second is a string or regular expression, `.throw`\n * invokes the function and asserts that an error is thrown that fulfills both\n * conditions as described above.\n *\n * var err = new TypeError('Illegal salmon!');\n * var badFn = function () { throw err; };\n *\n * expect(badFn).to.throw(TypeError, 'salmon');\n * expect(badFn).to.throw(TypeError, /salmon/);\n * expect(badFn).to.throw(err, 'salmon');\n * expect(badFn).to.throw(err, /salmon/);\n *\n * Add `.not` earlier in the chain to negate `.throw`.\n *\n * var goodFn = function () {};\n *\n * expect(goodFn).to.not.throw();\n *\n * However, it's dangerous to negate `.throw` when providing any arguments.\n * The problem is that it creates uncertain expectations by asserting that the\n * target either doesn't throw an error, or that it throws an error but of a\n * different type than the given type, or that it throws an error of the given\n * type but with a message that doesn't include the given string. It's often\n * best to identify the exact output that's expected, and then write an\n * assertion that only accepts that exact output.\n *\n * When the target isn't expected to throw an error, it's often best to assert\n * exactly that.\n *\n * var goodFn = function () {};\n *\n * expect(goodFn).to.not.throw(); // Recommended\n * expect(goodFn).to.not.throw(ReferenceError, 'x'); // Not recommended\n *\n * When the target is expected to throw an error, it's often best to assert\n * that the error is of its expected type, and has a message that includes an\n * expected string, rather than asserting that it doesn't have one of many\n * unexpected types, and doesn't have a message that includes some string.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw(TypeError, 'salmon'); // Recommended\n * expect(badFn).to.not.throw(ReferenceError, 'x'); // Not recommended\n *\n * `.throw` changes the target of any assertions that follow in the chain to\n * be the error object that's thrown.\n *\n * var err = new TypeError('Illegal salmon!');\n * err.code = 42;\n * var badFn = function () { throw err; };\n *\n * expect(badFn).to.throw(TypeError).with.property('code', 42);\n *\n * `.throw` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`. When not providing two arguments, always use\n * the second form.\n *\n * var goodFn = function () {};\n *\n * expect(goodFn).to.throw(TypeError, 'x', 'nooo why fail??');\n * expect(goodFn, 'nooo why fail??').to.throw();\n *\n * Due to limitations in ES5, `.throw` may not always work as expected when\n * using a transpiler such as Babel or TypeScript. In particular, it may\n * produce unexpected results when subclassing the built-in `Error` object and\n * then passing the subclassed constructor to `.throw`. See your transpiler's\n * docs for details:\n *\n * - ([Babel](https://babeljs.io/docs/usage/caveats/#classes))\n * - ([TypeScript](https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work))\n *\n * Beware of some common mistakes when using the `throw` assertion. One common\n * mistake is to accidentally invoke the function yourself instead of letting\n * the `throw` assertion invoke the function for you. For example, when\n * testing if a function named `fn` throws, provide `fn` instead of `fn()` as\n * the target for the assertion.\n *\n * expect(fn).to.throw(); // Good! Tests `fn` as desired\n * expect(fn()).to.throw(); // Bad! Tests result of `fn()`, not `fn`\n *\n * If you need to assert that your function `fn` throws when passed certain\n * arguments, then wrap a call to `fn` inside of another function.\n *\n * expect(function () { fn(42); }).to.throw(); // Function expression\n * expect(() => fn(42)).to.throw(); // ES6 arrow function\n *\n * Another common mistake is to provide an object method (or any stand-alone\n * function that relies on `this`) as the target of the assertion. Doing so is\n * problematic because the `this` context will be lost when the function is\n * invoked by `.throw`; there's no way for it to know what `this` is supposed\n * to be. There are two ways around this problem. One solution is to wrap the\n * method or function call inside of another function. Another solution is to\n * use `bind`.\n *\n * expect(function () { cat.meow(); }).to.throw(); // Function expression\n * expect(() => cat.meow()).to.throw(); // ES6 arrow function\n * expect(cat.meow.bind(cat)).to.throw(); // Bind\n *\n * Finally, it's worth mentioning that it's a best practice in JavaScript to\n * only throw `Error` and derivatives of `Error` such as `ReferenceError`,\n * `TypeError`, and user-defined objects that extend `Error`. No other type of\n * value will generate a stack trace when initialized. With that said, the\n * `throw` assertion does technically support any type of value being thrown,\n * not just `Error` and its derivatives.\n *\n * The aliases `.throws` and `.Throw` can be used interchangeably with\n * `.throw`.\n *\n * @name throw\n * @alias throws\n * @alias Throw\n * @param {Error|ErrorConstructor} errorLike\n * @param {String|RegExp} errMsgMatcher error message\n * @param {String} msg _optional_\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @returns error for chaining (null if no error)\n * @namespace BDD\n * @api public\n */\n\n function assertThrows (errorLike, errMsgMatcher, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , ssfi = flag(this, 'ssfi')\n , flagMsg = flag(this, 'message')\n , negate = flag(this, 'negate') || false;\n new Assertion(obj, flagMsg, ssfi, true).is.a('function');\n\n if (errorLike instanceof RegExp || typeof errorLike === 'string') {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n\n var caughtErr;\n try {\n obj();\n } catch (err) {\n caughtErr = err;\n }\n\n // If we have the negate flag enabled and at least one valid argument it means we do expect an error\n // but we want it to match a given set of criteria\n var everyArgIsUndefined = errorLike === undefined && errMsgMatcher === undefined;\n\n // If we've got the negate flag enabled and both args, we should only fail if both aren't compatible\n // See Issue #551 and PR #683@GitHub\n var everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n var errorLikeFail = false;\n var errMsgMatcherFail = false;\n\n // Checking if error was thrown\n if (everyArgIsUndefined || !everyArgIsUndefined && !negate) {\n // We need this to display results correctly according to their types\n var errorLikeString = 'an error';\n if (errorLike instanceof Error) {\n errorLikeString = '#{exp}';\n } else if (errorLike) {\n errorLikeString = _.checkError.getConstructorName(errorLike);\n }\n\n this.assert(\n caughtErr\n , 'expected #{this} to throw ' + errorLikeString\n , 'expected #{this} to not throw an error but #{act} was thrown'\n , errorLike && errorLike.toString()\n , (caughtErr instanceof Error ?\n caughtErr.toString() : (typeof caughtErr === 'string' ? caughtErr : caughtErr &&\n _.checkError.getConstructorName(caughtErr)))\n );\n }\n\n if (errorLike && caughtErr) {\n // We should compare instances only if `errorLike` is an instance of `Error`\n if (errorLike instanceof Error) {\n var isCompatibleInstance = _.checkError.compatibleInstance(caughtErr, errorLike);\n\n if (isCompatibleInstance === negate) {\n // These checks were created to ensure we won't fail too soon when we've got both args and a negate\n // See Issue #551 and PR #683@GitHub\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp}' + (caughtErr && !negate ? ' but #{act} was thrown' : '')\n , errorLike.toString()\n , caughtErr.toString()\n );\n }\n }\n }\n\n var isCompatibleConstructor = _.checkError.compatibleConstructor(caughtErr, errorLike);\n if (isCompatibleConstructor === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp}' + (caughtErr ? ' but #{act} was thrown' : '')\n , (errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike))\n , (caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr))\n );\n }\n }\n }\n\n if (caughtErr && errMsgMatcher !== undefined && errMsgMatcher !== null) {\n // Here we check compatible messages\n var placeholder = 'including';\n if (errMsgMatcher instanceof RegExp) {\n placeholder = 'matching'\n }\n\n var isCompatibleMessage = _.checkError.compatibleMessage(caughtErr, errMsgMatcher);\n if (isCompatibleMessage === negate) {\n if (everyArgIsDefined && negate) {\n errMsgMatcherFail = true;\n } else {\n this.assert(\n negate\n , 'expected #{this} to throw error ' + placeholder + ' #{exp} but got #{act}'\n , 'expected #{this} to throw error not ' + placeholder + ' #{exp}'\n , errMsgMatcher\n , _.checkError.getMessage(caughtErr)\n );\n }\n }\n }\n\n // If both assertions failed and both should've matched we throw an error\n if (errorLikeFail && errMsgMatcherFail) {\n this.assert(\n negate\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp}' + (caughtErr ? ' but #{act} was thrown' : '')\n , (errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike))\n , (caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr))\n );\n }\n\n flag(this, 'object', caughtErr);\n };\n\n Assertion.addMethod('throw', assertThrows);\n Assertion.addMethod('throws', assertThrows);\n Assertion.addMethod('Throw', assertThrows);\n\n /**\n * ### .respondTo(method[, msg])\n *\n * When the target is a non-function object, `.respondTo` asserts that the\n * target has a method with the given name `method`. The method can be own or\n * inherited, and it can be enumerable or non-enumerable.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n *\n * expect(new Cat()).to.respondTo('meow');\n *\n * When the target is a function, `.respondTo` asserts that the target's\n * `prototype` property has a method with the given name `method`. Again, the\n * method can be own or inherited, and it can be enumerable or non-enumerable.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n *\n * expect(Cat).to.respondTo('meow');\n *\n * Add `.itself` earlier in the chain to force `.respondTo` to treat the\n * target as a non-function object, even if it's a function. Thus, it asserts\n * that the target has a method with the given name `method`, rather than\n * asserting that the target's `prototype` property has a method with the\n * given name `method`.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n * Cat.hiss = function () {};\n *\n * expect(Cat).itself.to.respondTo('hiss').but.not.respondTo('meow');\n *\n * When not adding `.itself`, it's important to check the target's type before\n * using `.respondTo`. See the `.a` doc for info on checking a target's type.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n *\n * expect(new Cat()).to.be.an('object').that.respondsTo('meow');\n *\n * Add `.not` earlier in the chain to negate `.respondTo`.\n *\n * function Dog () {}\n * Dog.prototype.bark = function () {};\n *\n * expect(new Dog()).to.not.respondTo('meow');\n *\n * `.respondTo` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect({}).to.respondTo('meow', 'nooo why fail??');\n * expect({}, 'nooo why fail??').to.respondTo('meow');\n *\n * The alias `.respondsTo` can be used interchangeably with `.respondTo`.\n *\n * @name respondTo\n * @alias respondsTo\n * @param {String} method\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function respondTo (method, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , itself = flag(this, 'itself')\n , context = ('function' === typeof obj && !itself)\n ? obj.prototype[method]\n : obj[method];\n\n this.assert(\n 'function' === typeof context\n , 'expected #{this} to respond to ' + _.inspect(method)\n , 'expected #{this} to not respond to ' + _.inspect(method)\n );\n }\n\n Assertion.addMethod('respondTo', respondTo);\n Assertion.addMethod('respondsTo', respondTo);\n\n /**\n * ### .itself\n *\n * Forces all `.respondTo` assertions that follow in the chain to behave as if\n * the target is a non-function object, even if it's a function. Thus, it\n * causes `.respondTo` to assert that the target has a method with the given\n * name, rather than asserting that the target's `prototype` property has a\n * method with the given name.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n * Cat.hiss = function () {};\n *\n * expect(Cat).itself.to.respondTo('hiss').but.not.respondTo('meow');\n *\n * @name itself\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('itself', function () {\n flag(this, 'itself', true);\n });\n\n /**\n * ### .satisfy(matcher[, msg])\n *\n * Invokes the given `matcher` function with the target being passed as the\n * first argument, and asserts that the value returned is truthy.\n *\n * expect(1).to.satisfy(function(num) {\n * return num > 0;\n * });\n *\n * Add `.not` earlier in the chain to negate `.satisfy`.\n *\n * expect(1).to.not.satisfy(function(num) {\n * return num > 2;\n * });\n *\n * `.satisfy` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(1).to.satisfy(function(num) {\n * return num > 2;\n * }, 'nooo why fail??');\n *\n * expect(1, 'nooo why fail??').to.satisfy(function(num) {\n * return num > 2;\n * });\n *\n * The alias `.satisfies` can be used interchangeably with `.satisfy`.\n *\n * @name satisfy\n * @alias satisfies\n * @param {Function} matcher\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function satisfy (matcher, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n var result = matcher(obj);\n this.assert(\n result\n , 'expected #{this} to satisfy ' + _.objDisplay(matcher)\n , 'expected #{this} to not satisfy' + _.objDisplay(matcher)\n , flag(this, 'negate') ? false : true\n , result\n );\n }\n\n Assertion.addMethod('satisfy', satisfy);\n Assertion.addMethod('satisfies', satisfy);\n\n /**\n * ### .closeTo(expected, delta[, msg])\n *\n * Asserts that the target is a number that's within a given +/- `delta` range\n * of the given number `expected`. However, it's often best to assert that the\n * target is equal to its expected value.\n *\n * // Recommended\n * expect(1.5).to.equal(1.5);\n *\n * // Not recommended\n * expect(1.5).to.be.closeTo(1, 0.5);\n * expect(1.5).to.be.closeTo(2, 0.5);\n * expect(1.5).to.be.closeTo(1, 1);\n *\n * Add `.not` earlier in the chain to negate `.closeTo`.\n *\n * expect(1.5).to.equal(1.5); // Recommended\n * expect(1.5).to.not.be.closeTo(3, 1); // Not recommended\n *\n * `.closeTo` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(1.5).to.be.closeTo(3, 1, 'nooo why fail??');\n * expect(1.5, 'nooo why fail??').to.be.closeTo(3, 1);\n *\n * The alias `.approximately` can be used interchangeably with `.closeTo`.\n *\n * @name closeTo\n * @alias approximately\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function closeTo(expected, delta, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n\n new Assertion(obj, flagMsg, ssfi, true).is.a('number');\n if (typeof expected !== 'number' || typeof delta !== 'number') {\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n var deltaMessage = delta === undefined ? \", and a delta is required\" : \"\";\n throw new AssertionError(\n flagMsg + 'the arguments to closeTo or approximately must be numbers' + deltaMessage,\n undefined,\n ssfi\n );\n }\n\n this.assert(\n Math.abs(obj - expected) <= delta\n , 'expected #{this} to be close to ' + expected + ' +/- ' + delta\n , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta\n );\n }\n\n Assertion.addMethod('closeTo', closeTo);\n Assertion.addMethod('approximately', closeTo);\n\n // Note: Duplicates are ignored if testing for inclusion instead of sameness.\n function isSubsetOf(subset, superset, cmp, contains, ordered) {\n if (!contains) {\n if (subset.length !== superset.length) return false;\n superset = superset.slice();\n }\n\n return subset.every(function(elem, idx) {\n if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx];\n\n if (!cmp) {\n var matchIdx = superset.indexOf(elem);\n if (matchIdx === -1) return false;\n\n // Remove match from superset so not counted twice if duplicate in subset.\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n }\n\n return superset.some(function(elem2, matchIdx) {\n if (!cmp(elem, elem2)) return false;\n\n // Remove match from superset so not counted twice if duplicate in subset.\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n });\n });\n }\n\n /**\n * ### .members(set[, msg])\n *\n * Asserts that the target array has the same members as the given array\n * `set`.\n *\n * expect([1, 2, 3]).to.have.members([2, 1, 3]);\n * expect([1, 2, 2]).to.have.members([2, 1, 2]);\n *\n * By default, members are compared using strict (`===`) equality. Add `.deep`\n * earlier in the chain to use deep equality instead. See the `deep-eql`\n * project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target array deeply (but not strictly) has member `{a: 1}`\n * expect([{a: 1}]).to.have.deep.members([{a: 1}]);\n * expect([{a: 1}]).to.not.have.members([{a: 1}]);\n *\n * By default, order doesn't matter. Add `.ordered` earlier in the chain to\n * require that members appear in the same order.\n *\n * expect([1, 2, 3]).to.have.ordered.members([1, 2, 3]);\n * expect([1, 2, 3]).to.have.members([2, 1, 3])\n * .but.not.ordered.members([2, 1, 3]);\n *\n * By default, both arrays must be the same size. Add `.include` earlier in\n * the chain to require that the target's members be a superset of the\n * expected members. Note that duplicates are ignored in the subset when\n * `.include` is added.\n *\n * // Target array is a superset of [1, 2] but not identical\n * expect([1, 2, 3]).to.include.members([1, 2]);\n * expect([1, 2, 3]).to.not.have.members([1, 2]);\n *\n * // Duplicates in the subset are ignored\n * expect([1, 2, 3]).to.include.members([1, 2, 2, 2]);\n *\n * `.deep`, `.ordered`, and `.include` can all be combined. However, if\n * `.include` and `.ordered` are combined, the ordering begins at the start of\n * both arrays.\n *\n * expect([{a: 1}, {b: 2}, {c: 3}])\n * .to.include.deep.ordered.members([{a: 1}, {b: 2}])\n * .but.not.include.deep.ordered.members([{b: 2}, {c: 3}]);\n *\n * Add `.not` earlier in the chain to negate `.members`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the target array doesn't have all of the same members as\n * the given array `set` but may or may not have some of them. It's often best\n * to identify the exact output that's expected, and then write an assertion\n * that only accepts that exact output.\n *\n * expect([1, 2]).to.not.include(3).and.not.include(4); // Recommended\n * expect([1, 2]).to.not.have.members([3, 4]); // Not recommended\n *\n * `.members` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect([1, 2]).to.have.members([1, 2, 3], 'nooo why fail??');\n * expect([1, 2], 'nooo why fail??').to.have.members([1, 2, 3]);\n *\n * @name members\n * @param {Array} set\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('members', function (subset, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n\n new Assertion(obj, flagMsg, ssfi, true).to.be.an('array');\n new Assertion(subset, flagMsg, ssfi, true).to.be.an('array');\n\n var contains = flag(this, 'contains');\n var ordered = flag(this, 'ordered');\n\n var subject, failMsg, failNegateMsg;\n\n if (contains) {\n subject = ordered ? 'an ordered superset' : 'a superset';\n failMsg = 'expected #{this} to be ' + subject + ' of #{exp}';\n failNegateMsg = 'expected #{this} to not be ' + subject + ' of #{exp}';\n } else {\n subject = ordered ? 'ordered members' : 'members';\n failMsg = 'expected #{this} to have the same ' + subject + ' as #{exp}';\n failNegateMsg = 'expected #{this} to not have the same ' + subject + ' as #{exp}';\n }\n\n var cmp = flag(this, 'deep') ? flag(this, 'eql') : undefined;\n\n this.assert(\n isSubsetOf(subset, obj, cmp, contains, ordered)\n , failMsg\n , failNegateMsg\n , subset\n , obj\n , true\n );\n });\n\n /**\n * ### .oneOf(list[, msg])\n *\n * Asserts that the target is a member of the given array `list`. However,\n * it's often best to assert that the target is equal to its expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.oneOf([1, 2, 3]); // Not recommended\n *\n * Comparisons are performed using strict (`===`) equality.\n *\n * Add `.not` earlier in the chain to negate `.oneOf`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.oneOf([2, 3, 4]); // Not recommended\n *\n * It can also be chained with `.contain` or `.include`, which will work with\n * both arrays and strings:\n *\n * expect('Today is sunny').to.contain.oneOf(['sunny', 'cloudy'])\n * expect('Today is rainy').to.not.contain.oneOf(['sunny', 'cloudy'])\n * expect([1,2,3]).to.contain.oneOf([3,4,5])\n * expect([1,2,3]).to.not.contain.oneOf([4,5,6])\n *\n * `.oneOf` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.be.oneOf([2, 3, 4], 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.oneOf([2, 3, 4]);\n *\n * @name oneOf\n * @param {Array<*>} list\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function oneOf (list, msg) {\n if (msg) flag(this, 'message', msg);\n var expected = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi')\n , contains = flag(this, 'contains')\n , isDeep = flag(this, 'deep')\n , eql = flag(this, 'eql');\n new Assertion(list, flagMsg, ssfi, true).to.be.an('array');\n\n if (contains) {\n this.assert(\n list.some(function(possibility) { return expected.indexOf(possibility) > -1 })\n , 'expected #{this} to contain one of #{exp}'\n , 'expected #{this} to not contain one of #{exp}'\n , list\n , expected\n );\n } else {\n if (isDeep) {\n this.assert(\n list.some(function(possibility) { return eql(expected, possibility) })\n , 'expected #{this} to deeply equal one of #{exp}'\n , 'expected #{this} to deeply equal one of #{exp}'\n , list\n , expected\n );\n } else {\n this.assert(\n list.indexOf(expected) > -1\n , 'expected #{this} to be one of #{exp}'\n , 'expected #{this} to not be one of #{exp}'\n , list\n , expected\n );\n }\n }\n }\n\n Assertion.addMethod('oneOf', oneOf);\n\n /**\n * ### .change(subject[, prop[, msg]])\n *\n * When one argument is provided, `.change` asserts that the given function\n * `subject` returns a different value when it's invoked before the target\n * function compared to when it's invoked afterward. However, it's often best\n * to assert that `subject` is equal to its expected value.\n *\n * var dots = ''\n * , addDot = function () { dots += '.'; }\n * , getDots = function () { return dots; };\n *\n * // Recommended\n * expect(getDots()).to.equal('');\n * addDot();\n * expect(getDots()).to.equal('.');\n *\n * // Not recommended\n * expect(addDot).to.change(getDots);\n *\n * When two arguments are provided, `.change` asserts that the value of the\n * given object `subject`'s `prop` property is different before invoking the\n * target function compared to afterward.\n *\n * var myObj = {dots: ''}\n * , addDot = function () { myObj.dots += '.'; };\n *\n * // Recommended\n * expect(myObj).to.have.property('dots', '');\n * addDot();\n * expect(myObj).to.have.property('dots', '.');\n *\n * // Not recommended\n * expect(addDot).to.change(myObj, 'dots');\n *\n * Strict (`===`) equality is used to compare before and after values.\n *\n * Add `.not` earlier in the chain to negate `.change`.\n *\n * var dots = ''\n * , noop = function () {}\n * , getDots = function () { return dots; };\n *\n * expect(noop).to.not.change(getDots);\n *\n * var myObj = {dots: ''}\n * , noop = function () {};\n *\n * expect(noop).to.not.change(myObj, 'dots');\n *\n * `.change` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing two arguments, always\n * use the second form.\n *\n * var myObj = {dots: ''}\n * , addDot = function () { myObj.dots += '.'; };\n *\n * expect(addDot).to.not.change(myObj, 'dots', 'nooo why fail??');\n *\n * var dots = ''\n * , addDot = function () { dots += '.'; }\n * , getDots = function () { return dots; };\n *\n * expect(addDot, 'nooo why fail??').to.not.change(getDots);\n *\n * `.change` also causes all `.by` assertions that follow in the chain to\n * assert how much a numeric subject was increased or decreased by. However,\n * it's dangerous to use `.change.by`. The problem is that it creates\n * uncertain expectations by asserting that the subject either increases by\n * the given delta, or that it decreases by the given delta. It's often best\n * to identify the exact output that's expected, and then write an assertion\n * that only accepts that exact output.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; }\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * The alias `.changes` can be used interchangeably with `.change`.\n *\n * @name change\n * @alias changes\n * @param {String} subject\n * @param {String} prop name _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertChanges (subject, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(fn, flagMsg, ssfi, true).is.a('function');\n\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a('function');\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n\n fn();\n\n var final = prop === undefined || prop === null ? subject() : subject[prop];\n var msgObj = prop === undefined || prop === null ? initial : '.' + prop;\n\n // This gets flagged because of the .by(delta) assertion\n flag(this, 'deltaMsgObj', msgObj);\n flag(this, 'initialDeltaValue', initial);\n flag(this, 'finalDeltaValue', final);\n flag(this, 'deltaBehavior', 'change');\n flag(this, 'realDelta', final !== initial);\n\n this.assert(\n initial !== final\n , 'expected ' + msgObj + ' to change'\n , 'expected ' + msgObj + ' to not change'\n );\n }\n\n Assertion.addMethod('change', assertChanges);\n Assertion.addMethod('changes', assertChanges);\n\n /**\n * ### .increase(subject[, prop[, msg]])\n *\n * When one argument is provided, `.increase` asserts that the given function\n * `subject` returns a greater number when it's invoked after invoking the\n * target function compared to when it's invoked beforehand. `.increase` also\n * causes all `.by` assertions that follow in the chain to assert how much\n * greater of a number is returned. It's often best to assert that the return\n * value increased by the expected amount, rather than asserting it increased\n * by any amount.\n *\n * var val = 1\n * , addTwo = function () { val += 2; }\n * , getVal = function () { return val; };\n *\n * expect(addTwo).to.increase(getVal).by(2); // Recommended\n * expect(addTwo).to.increase(getVal); // Not recommended\n *\n * When two arguments are provided, `.increase` asserts that the value of the\n * given object `subject`'s `prop` property is greater after invoking the\n * target function compared to beforehand.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.increase(myObj, 'val'); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.increase`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the subject either decreases, or that it stays the same.\n * It's often best to identify the exact output that's expected, and then\n * write an assertion that only accepts that exact output.\n *\n * When the subject is expected to decrease, it's often best to assert that it\n * decreased by the expected amount.\n *\n * var myObj = {val: 1}\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.not.increase(myObj, 'val'); // Not recommended\n *\n * When the subject is expected to stay the same, it's often best to assert\n * exactly that.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.not.change(myObj, 'val'); // Recommended\n * expect(noop).to.not.increase(myObj, 'val'); // Not recommended\n *\n * `.increase` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing two arguments, always\n * use the second form.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.increase(myObj, 'val', 'nooo why fail??');\n *\n * var val = 1\n * , noop = function () {}\n * , getVal = function () { return val; };\n *\n * expect(noop, 'nooo why fail??').to.increase(getVal);\n *\n * The alias `.increases` can be used interchangeably with `.increase`.\n *\n * @name increase\n * @alias increases\n * @param {String|Function} subject\n * @param {String} prop name _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertIncreases (subject, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(fn, flagMsg, ssfi, true).is.a('function');\n\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a('function');\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n\n // Make sure that the target is a number\n new Assertion(initial, flagMsg, ssfi, true).is.a('number');\n\n fn();\n\n var final = prop === undefined || prop === null ? subject() : subject[prop];\n var msgObj = prop === undefined || prop === null ? initial : '.' + prop;\n\n flag(this, 'deltaMsgObj', msgObj);\n flag(this, 'initialDeltaValue', initial);\n flag(this, 'finalDeltaValue', final);\n flag(this, 'deltaBehavior', 'increase');\n flag(this, 'realDelta', final - initial);\n\n this.assert(\n final - initial > 0\n , 'expected ' + msgObj + ' to increase'\n , 'expected ' + msgObj + ' to not increase'\n );\n }\n\n Assertion.addMethod('increase', assertIncreases);\n Assertion.addMethod('increases', assertIncreases);\n\n /**\n * ### .decrease(subject[, prop[, msg]])\n *\n * When one argument is provided, `.decrease` asserts that the given function\n * `subject` returns a lesser number when it's invoked after invoking the\n * target function compared to when it's invoked beforehand. `.decrease` also\n * causes all `.by` assertions that follow in the chain to assert how much\n * lesser of a number is returned. It's often best to assert that the return\n * value decreased by the expected amount, rather than asserting it decreased\n * by any amount.\n *\n * var val = 1\n * , subtractTwo = function () { val -= 2; }\n * , getVal = function () { return val; };\n *\n * expect(subtractTwo).to.decrease(getVal).by(2); // Recommended\n * expect(subtractTwo).to.decrease(getVal); // Not recommended\n *\n * When two arguments are provided, `.decrease` asserts that the value of the\n * given object `subject`'s `prop` property is lesser after invoking the\n * target function compared to beforehand.\n *\n * var myObj = {val: 1}\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.decrease(myObj, 'val'); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.decrease`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the subject either increases, or that it stays the same.\n * It's often best to identify the exact output that's expected, and then\n * write an assertion that only accepts that exact output.\n *\n * When the subject is expected to increase, it's often best to assert that it\n * increased by the expected amount.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.not.decrease(myObj, 'val'); // Not recommended\n *\n * When the subject is expected to stay the same, it's often best to assert\n * exactly that.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.not.change(myObj, 'val'); // Recommended\n * expect(noop).to.not.decrease(myObj, 'val'); // Not recommended\n *\n * `.decrease` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing two arguments, always\n * use the second form.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.decrease(myObj, 'val', 'nooo why fail??');\n *\n * var val = 1\n * , noop = function () {}\n * , getVal = function () { return val; };\n *\n * expect(noop, 'nooo why fail??').to.decrease(getVal);\n *\n * The alias `.decreases` can be used interchangeably with `.decrease`.\n *\n * @name decrease\n * @alias decreases\n * @param {String|Function} subject\n * @param {String} prop name _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertDecreases (subject, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(fn, flagMsg, ssfi, true).is.a('function');\n\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a('function');\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n\n // Make sure that the target is a number\n new Assertion(initial, flagMsg, ssfi, true).is.a('number');\n\n fn();\n\n var final = prop === undefined || prop === null ? subject() : subject[prop];\n var msgObj = prop === undefined || prop === null ? initial : '.' + prop;\n\n flag(this, 'deltaMsgObj', msgObj);\n flag(this, 'initialDeltaValue', initial);\n flag(this, 'finalDeltaValue', final);\n flag(this, 'deltaBehavior', 'decrease');\n flag(this, 'realDelta', initial - final);\n\n this.assert(\n final - initial < 0\n , 'expected ' + msgObj + ' to decrease'\n , 'expected ' + msgObj + ' to not decrease'\n );\n }\n\n Assertion.addMethod('decrease', assertDecreases);\n Assertion.addMethod('decreases', assertDecreases);\n\n /**\n * ### .by(delta[, msg])\n *\n * When following an `.increase` assertion in the chain, `.by` asserts that\n * the subject of the `.increase` assertion increased by the given `delta`.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2);\n *\n * When following a `.decrease` assertion in the chain, `.by` asserts that the\n * subject of the `.decrease` assertion decreased by the given `delta`.\n *\n * var myObj = {val: 1}\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2);\n *\n * When following a `.change` assertion in the chain, `.by` asserts that the\n * subject of the `.change` assertion either increased or decreased by the\n * given `delta`. However, it's dangerous to use `.change.by`. The problem is\n * that it creates uncertain expectations. It's often best to identify the\n * exact output that's expected, and then write an assertion that only accepts\n * that exact output.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; }\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.by`. However, it's often best\n * to assert that the subject changed by its expected delta, rather than\n * asserting that it didn't change by one of countless unexpected deltas.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * // Recommended\n * expect(addTwo).to.increase(myObj, 'val').by(2);\n *\n * // Not recommended\n * expect(addTwo).to.increase(myObj, 'val').but.not.by(3);\n *\n * `.by` accepts an optional `msg` argument which is a custom error message to\n * show when the assertion fails. The message can also be given as the second\n * argument to `expect`.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(3, 'nooo why fail??');\n * expect(addTwo, 'nooo why fail??').to.increase(myObj, 'val').by(3);\n *\n * @name by\n * @param {Number} delta\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertDelta(delta, msg) {\n if (msg) flag(this, 'message', msg);\n\n var msgObj = flag(this, 'deltaMsgObj');\n var initial = flag(this, 'initialDeltaValue');\n var final = flag(this, 'finalDeltaValue');\n var behavior = flag(this, 'deltaBehavior');\n var realDelta = flag(this, 'realDelta');\n\n var expression;\n if (behavior === 'change') {\n expression = Math.abs(final - initial) === Math.abs(delta);\n } else {\n expression = realDelta === Math.abs(delta);\n }\n\n this.assert(\n expression\n , 'expected ' + msgObj + ' to ' + behavior + ' by ' + delta\n , 'expected ' + msgObj + ' to not ' + behavior + ' by ' + delta\n );\n }\n\n Assertion.addMethod('by', assertDelta);\n\n /**\n * ### .extensible\n *\n * Asserts that the target is extensible, which means that new properties can\n * be added to it. Primitives are never extensible.\n *\n * expect({a: 1}).to.be.extensible;\n *\n * Add `.not` earlier in the chain to negate `.extensible`.\n *\n * var nonExtensibleObject = Object.preventExtensions({})\n * , sealedObject = Object.seal({})\n * , frozenObject = Object.freeze({});\n *\n * expect(nonExtensibleObject).to.not.be.extensible;\n * expect(sealedObject).to.not.be.extensible;\n * expect(frozenObject).to.not.be.extensible;\n * expect(1).to.not.be.extensible;\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(1, 'nooo why fail??').to.be.extensible;\n *\n * @name extensible\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('extensible', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is a primitive, then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible\n // The following provides ES6 behavior for ES5 environments.\n\n var isExtensible = obj === Object(obj) && Object.isExtensible(obj);\n\n this.assert(\n isExtensible\n , 'expected #{this} to be extensible'\n , 'expected #{this} to not be extensible'\n );\n });\n\n /**\n * ### .sealed\n *\n * Asserts that the target is sealed, which means that new properties can't be\n * added to it, and its existing properties can't be reconfigured or deleted.\n * However, it's possible that its existing properties can still be reassigned\n * to different values. Primitives are always sealed.\n *\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.freeze({});\n *\n * expect(sealedObject).to.be.sealed;\n * expect(frozenObject).to.be.sealed;\n * expect(1).to.be.sealed;\n *\n * Add `.not` earlier in the chain to negate `.sealed`.\n *\n * expect({a: 1}).to.not.be.sealed;\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({a: 1}, 'nooo why fail??').to.be.sealed;\n *\n * @name sealed\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('sealed', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is a primitive, then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed\n // The following provides ES6 behavior for ES5 environments.\n\n var isSealed = obj === Object(obj) ? Object.isSealed(obj) : true;\n\n this.assert(\n isSealed\n , 'expected #{this} to be sealed'\n , 'expected #{this} to not be sealed'\n );\n });\n\n /**\n * ### .frozen\n *\n * Asserts that the target is frozen, which means that new properties can't be\n * added to it, and its existing properties can't be reassigned to different\n * values, reconfigured, or deleted. Primitives are always frozen.\n *\n * var frozenObject = Object.freeze({});\n *\n * expect(frozenObject).to.be.frozen;\n * expect(1).to.be.frozen;\n *\n * Add `.not` earlier in the chain to negate `.frozen`.\n *\n * expect({a: 1}).to.not.be.frozen;\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({a: 1}, 'nooo why fail??').to.be.frozen;\n *\n * @name frozen\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('frozen', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is a primitive, then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen\n // The following provides ES6 behavior for ES5 environments.\n\n var isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true;\n\n this.assert(\n isFrozen\n , 'expected #{this} to be frozen'\n , 'expected #{this} to not be frozen'\n );\n });\n\n /**\n * ### .finite\n *\n * Asserts that the target is a number, and isn't `NaN` or positive/negative\n * `Infinity`.\n *\n * expect(1).to.be.finite;\n *\n * Add `.not` earlier in the chain to negate `.finite`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the subject either isn't a number, or that it's `NaN`, or\n * that it's positive `Infinity`, or that it's negative `Infinity`. It's often\n * best to identify the exact output that's expected, and then write an\n * assertion that only accepts that exact output.\n *\n * When the target isn't expected to be a number, it's often best to assert\n * that it's the expected type, rather than asserting that it isn't one of\n * many unexpected types.\n *\n * expect('foo').to.be.a('string'); // Recommended\n * expect('foo').to.not.be.finite; // Not recommended\n *\n * When the target is expected to be `NaN`, it's often best to assert exactly\n * that.\n *\n * expect(NaN).to.be.NaN; // Recommended\n * expect(NaN).to.not.be.finite; // Not recommended\n *\n * When the target is expected to be positive infinity, it's often best to\n * assert exactly that.\n *\n * expect(Infinity).to.equal(Infinity); // Recommended\n * expect(Infinity).to.not.be.finite; // Not recommended\n *\n * When the target is expected to be negative infinity, it's often best to\n * assert exactly that.\n *\n * expect(-Infinity).to.equal(-Infinity); // Recommended\n * expect(-Infinity).to.not.be.finite; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect('foo', 'nooo why fail??').to.be.finite;\n *\n * @name finite\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('finite', function(msg) {\n var obj = flag(this, 'object');\n\n this.assert(\n typeof obj === 'number' && isFinite(obj)\n , 'expected #{this} to be a finite number'\n , 'expected #{this} to not be a finite number'\n );\n });\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n chai.expect = function (val, message) {\n return new chai.Assertion(val, message);\n };\n\n /**\n * ### .fail([message])\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure.\n *\n * expect.fail();\n * expect.fail(\"custom error message\");\n * expect.fail(1, 2);\n * expect.fail(1, 2, \"custom error message\");\n * expect.fail(1, 2, \"custom error message\", \">\");\n * expect.fail(1, 2, undefined, \">\");\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace BDD\n * @api public\n */\n\n chai.expect.fail = function (actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = undefined;\n }\n\n message = message || 'expect.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, chai.expect.fail);\n };\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n var Assertion = chai.Assertion;\n\n function loadShould () {\n // explicitly define this method as function as to have it's name to include as `ssfi`\n function shouldGetter() {\n if (this instanceof String\n || this instanceof Number\n || this instanceof Boolean\n || typeof Symbol === 'function' && this instanceof Symbol\n || typeof BigInt === 'function' && this instanceof BigInt) {\n return new Assertion(this.valueOf(), null, shouldGetter);\n }\n return new Assertion(this, null, shouldGetter);\n }\n function shouldSetter(value) {\n // See https://github.com/chaijs/chai/issues/86: this makes\n // `whatever.should = someValue` actually set `someValue`, which is\n // especially useful for `global.should = require('chai').should()`.\n //\n // Note that we have to use [[DefineProperty]] instead of [[Put]]\n // since otherwise we would trigger this very setter!\n Object.defineProperty(this, 'should', {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n // modify Object.prototype to have `should`\n Object.defineProperty(Object.prototype, 'should', {\n set: shouldSetter\n , get: shouldGetter\n , configurable: true\n });\n\n var should = {};\n\n /**\n * ### .fail([message])\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure.\n *\n * should.fail();\n * should.fail(\"custom error message\");\n * should.fail(1, 2);\n * should.fail(1, 2, \"custom error message\");\n * should.fail(1, 2, \"custom error message\", \">\");\n * should.fail(1, 2, undefined, \">\");\n *\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace BDD\n * @api public\n */\n\n should.fail = function (actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = undefined;\n }\n\n message = message || 'should.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, should.fail);\n };\n\n /**\n * ### .equal(actual, expected, [message])\n *\n * Asserts non-strict equality (`==`) of `actual` and `expected`.\n *\n * should.equal(3, '3', '== coerces values to strings');\n *\n * @name equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Should\n * @api public\n */\n\n should.equal = function (val1, val2, msg) {\n new Assertion(val1, msg).to.equal(val2);\n };\n\n /**\n * ### .throw(function, [constructor/string/regexp], [string/regexp], [message])\n *\n * Asserts that `function` will throw an error that is an instance of\n * `constructor`, or alternately that it will throw an error with message\n * matching `regexp`.\n *\n * should.throw(fn, 'function throws a reference error');\n * should.throw(fn, /function throws a reference error/);\n * should.throw(fn, ReferenceError);\n * should.throw(fn, ReferenceError, 'function throws a reference error');\n * should.throw(fn, ReferenceError, /function throws a reference error/);\n *\n * @name throw\n * @alias Throw\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Should\n * @api public\n */\n\n should.Throw = function (fn, errt, errs, msg) {\n new Assertion(fn, msg).to.Throw(errt, errs);\n };\n\n /**\n * ### .exist\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var foo = 'hi';\n *\n * should.exist(foo, 'foo exists');\n *\n * @name exist\n * @namespace Should\n * @api public\n */\n\n should.exist = function (val, msg) {\n new Assertion(val, msg).to.exist;\n }\n\n // negation\n should.not = {}\n\n /**\n * ### .not.equal(actual, expected, [message])\n *\n * Asserts non-strict inequality (`!=`) of `actual` and `expected`.\n *\n * should.not.equal(3, 4, 'these numbers are not equal');\n *\n * @name not.equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Should\n * @api public\n */\n\n should.not.equal = function (val1, val2, msg) {\n new Assertion(val1, msg).to.not.equal(val2);\n };\n\n /**\n * ### .throw(function, [constructor/regexp], [message])\n *\n * Asserts that `function` will _not_ throw an error that is an instance of\n * `constructor`, or alternately that it will not throw an error with message\n * matching `regexp`.\n *\n * should.not.throw(fn, Error, 'function does not throw');\n *\n * @name not.throw\n * @alias not.Throw\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Should\n * @api public\n */\n\n should.not.Throw = function (fn, errt, errs, msg) {\n new Assertion(fn, msg).to.not.Throw(errt, errs);\n };\n\n /**\n * ### .not.exist\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var bar = null;\n *\n * should.not.exist(bar, 'bar does not exist');\n *\n * @name not.exist\n * @namespace Should\n * @api public\n */\n\n should.not.exist = function (val, msg) {\n new Assertion(val, msg).to.not.exist;\n }\n\n should['throw'] = should['Throw'];\n should.not['throw'] = should.not['Throw'];\n\n return should;\n };\n\n chai.should = loadShould;\n chai.Should = loadShould;\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n /*!\n * Chai dependencies.\n */\n\n var Assertion = chai.Assertion\n , flag = util.flag;\n\n /*!\n * Module export.\n */\n\n /**\n * ### assert(expression, message)\n *\n * Write your own test expressions.\n *\n * assert('foo' !== 'bar', 'foo is not bar');\n * assert(Array.isArray([]), 'empty arrays are arrays');\n *\n * @param {Mixed} expression to test for truthiness\n * @param {String} message to display on error\n * @name assert\n * @namespace Assert\n * @api public\n */\n\n var assert = chai.assert = function (express, errmsg) {\n var test = new Assertion(null, null, chai.assert, true);\n test.assert(\n express\n , errmsg\n , '[ negation message unavailable ]'\n );\n };\n\n /**\n * ### .fail([message])\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure. Node.js `assert` module-compatible.\n *\n * assert.fail();\n * assert.fail(\"custom error message\");\n * assert.fail(1, 2);\n * assert.fail(1, 2, \"custom error message\");\n * assert.fail(1, 2, \"custom error message\", \">\");\n * assert.fail(1, 2, undefined, \">\");\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace Assert\n * @api public\n */\n\n assert.fail = function (actual, expected, message, operator) {\n if (arguments.length < 2) {\n // Comply with Node's fail([message]) interface\n\n message = actual;\n actual = undefined;\n }\n\n message = message || 'assert.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, assert.fail);\n };\n\n /**\n * ### .isOk(object, [message])\n *\n * Asserts that `object` is truthy.\n *\n * assert.isOk('everything', 'everything is ok');\n * assert.isOk(false, 'this will fail');\n *\n * @name isOk\n * @alias ok\n * @param {Mixed} object to test\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isOk = function (val, msg) {\n new Assertion(val, msg, assert.isOk, true).is.ok;\n };\n\n /**\n * ### .isNotOk(object, [message])\n *\n * Asserts that `object` is falsy.\n *\n * assert.isNotOk('everything', 'this will fail');\n * assert.isNotOk(false, 'this will pass');\n *\n * @name isNotOk\n * @alias notOk\n * @param {Mixed} object to test\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotOk = function (val, msg) {\n new Assertion(val, msg, assert.isNotOk, true).is.not.ok;\n };\n\n /**\n * ### .equal(actual, expected, [message])\n *\n * Asserts non-strict equality (`==`) of `actual` and `expected`.\n *\n * assert.equal(3, '3', '== coerces values to strings');\n *\n * @name equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.equal = function (act, exp, msg) {\n var test = new Assertion(act, msg, assert.equal, true);\n\n test.assert(\n exp == flag(test, 'object')\n , 'expected #{this} to equal #{exp}'\n , 'expected #{this} to not equal #{act}'\n , exp\n , act\n , true\n );\n };\n\n /**\n * ### .notEqual(actual, expected, [message])\n *\n * Asserts non-strict inequality (`!=`) of `actual` and `expected`.\n *\n * assert.notEqual(3, 4, 'these numbers are not equal');\n *\n * @name notEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notEqual = function (act, exp, msg) {\n var test = new Assertion(act, msg, assert.notEqual, true);\n\n test.assert(\n exp != flag(test, 'object')\n , 'expected #{this} to not equal #{exp}'\n , 'expected #{this} to equal #{act}'\n , exp\n , act\n , true\n );\n };\n\n /**\n * ### .strictEqual(actual, expected, [message])\n *\n * Asserts strict equality (`===`) of `actual` and `expected`.\n *\n * assert.strictEqual(true, true, 'these booleans are strictly equal');\n *\n * @name strictEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.strictEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.strictEqual, true).to.equal(exp);\n };\n\n /**\n * ### .notStrictEqual(actual, expected, [message])\n *\n * Asserts strict inequality (`!==`) of `actual` and `expected`.\n *\n * assert.notStrictEqual(3, '3', 'no coercion for strict equality');\n *\n * @name notStrictEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notStrictEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.notStrictEqual, true).to.not.equal(exp);\n };\n\n /**\n * ### .deepEqual(actual, expected, [message])\n *\n * Asserts that `actual` is deeply equal to `expected`.\n *\n * assert.deepEqual({ tea: 'green' }, { tea: 'green' });\n *\n * @name deepEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @alias deepStrictEqual\n * @namespace Assert\n * @api public\n */\n\n assert.deepEqual = assert.deepStrictEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.deepEqual, true).to.eql(exp);\n };\n\n /**\n * ### .notDeepEqual(actual, expected, [message])\n *\n * Assert that `actual` is not deeply equal to `expected`.\n *\n * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' });\n *\n * @name notDeepEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.notDeepEqual, true).to.not.eql(exp);\n };\n\n /**\n * ### .isAbove(valueToCheck, valueToBeAbove, [message])\n *\n * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove`.\n *\n * assert.isAbove(5, 2, '5 is strictly greater than 2');\n *\n * @name isAbove\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAbove\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAbove = function (val, abv, msg) {\n new Assertion(val, msg, assert.isAbove, true).to.be.above(abv);\n };\n\n /**\n * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message])\n *\n * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast`.\n *\n * assert.isAtLeast(5, 2, '5 is greater or equal to 2');\n * assert.isAtLeast(3, 3, '3 is greater or equal to 3');\n *\n * @name isAtLeast\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAtLeast\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAtLeast = function (val, atlst, msg) {\n new Assertion(val, msg, assert.isAtLeast, true).to.be.least(atlst);\n };\n\n /**\n * ### .isBelow(valueToCheck, valueToBeBelow, [message])\n *\n * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow`.\n *\n * assert.isBelow(3, 6, '3 is strictly less than 6');\n *\n * @name isBelow\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeBelow\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isBelow = function (val, blw, msg) {\n new Assertion(val, msg, assert.isBelow, true).to.be.below(blw);\n };\n\n /**\n * ### .isAtMost(valueToCheck, valueToBeAtMost, [message])\n *\n * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost`.\n *\n * assert.isAtMost(3, 6, '3 is less than or equal to 6');\n * assert.isAtMost(4, 4, '4 is less than or equal to 4');\n *\n * @name isAtMost\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAtMost\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAtMost = function (val, atmst, msg) {\n new Assertion(val, msg, assert.isAtMost, true).to.be.most(atmst);\n };\n\n /**\n * ### .isTrue(value, [message])\n *\n * Asserts that `value` is true.\n *\n * var teaServed = true;\n * assert.isTrue(teaServed, 'the tea has been served');\n *\n * @name isTrue\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isTrue = function (val, msg) {\n new Assertion(val, msg, assert.isTrue, true).is['true'];\n };\n\n /**\n * ### .isNotTrue(value, [message])\n *\n * Asserts that `value` is not true.\n *\n * var tea = 'tasty chai';\n * assert.isNotTrue(tea, 'great, time for tea!');\n *\n * @name isNotTrue\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotTrue = function (val, msg) {\n new Assertion(val, msg, assert.isNotTrue, true).to.not.equal(true);\n };\n\n /**\n * ### .isFalse(value, [message])\n *\n * Asserts that `value` is false.\n *\n * var teaServed = false;\n * assert.isFalse(teaServed, 'no tea yet? hmm...');\n *\n * @name isFalse\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFalse = function (val, msg) {\n new Assertion(val, msg, assert.isFalse, true).is['false'];\n };\n\n /**\n * ### .isNotFalse(value, [message])\n *\n * Asserts that `value` is not false.\n *\n * var tea = 'tasty chai';\n * assert.isNotFalse(tea, 'great, time for tea!');\n *\n * @name isNotFalse\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFalse = function (val, msg) {\n new Assertion(val, msg, assert.isNotFalse, true).to.not.equal(false);\n };\n\n /**\n * ### .isNull(value, [message])\n *\n * Asserts that `value` is null.\n *\n * assert.isNull(err, 'there was no error');\n *\n * @name isNull\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNull = function (val, msg) {\n new Assertion(val, msg, assert.isNull, true).to.equal(null);\n };\n\n /**\n * ### .isNotNull(value, [message])\n *\n * Asserts that `value` is not null.\n *\n * var tea = 'tasty chai';\n * assert.isNotNull(tea, 'great, time for tea!');\n *\n * @name isNotNull\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotNull = function (val, msg) {\n new Assertion(val, msg, assert.isNotNull, true).to.not.equal(null);\n };\n\n /**\n * ### .isNaN\n *\n * Asserts that value is NaN.\n *\n * assert.isNaN(NaN, 'NaN is NaN');\n *\n * @name isNaN\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNaN = function (val, msg) {\n new Assertion(val, msg, assert.isNaN, true).to.be.NaN;\n };\n\n /**\n * ### .isNotNaN\n *\n * Asserts that value is not NaN.\n *\n * assert.isNotNaN(4, '4 is not NaN');\n *\n * @name isNotNaN\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n assert.isNotNaN = function (val, msg) {\n new Assertion(val, msg, assert.isNotNaN, true).not.to.be.NaN;\n };\n\n /**\n * ### .exists\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var foo = 'hi';\n *\n * assert.exists(foo, 'foo is neither `null` nor `undefined`');\n *\n * @name exists\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.exists = function (val, msg) {\n new Assertion(val, msg, assert.exists, true).to.exist;\n };\n\n /**\n * ### .notExists\n *\n * Asserts that the target is either `null` or `undefined`.\n *\n * var bar = null\n * , baz;\n *\n * assert.notExists(bar);\n * assert.notExists(baz, 'baz is either null or undefined');\n *\n * @name notExists\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notExists = function (val, msg) {\n new Assertion(val, msg, assert.notExists, true).to.not.exist;\n };\n\n /**\n * ### .isUndefined(value, [message])\n *\n * Asserts that `value` is `undefined`.\n *\n * var tea;\n * assert.isUndefined(tea, 'no tea defined');\n *\n * @name isUndefined\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isUndefined = function (val, msg) {\n new Assertion(val, msg, assert.isUndefined, true).to.equal(undefined);\n };\n\n /**\n * ### .isDefined(value, [message])\n *\n * Asserts that `value` is not `undefined`.\n *\n * var tea = 'cup of chai';\n * assert.isDefined(tea, 'tea has been defined');\n *\n * @name isDefined\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isDefined = function (val, msg) {\n new Assertion(val, msg, assert.isDefined, true).to.not.equal(undefined);\n };\n\n /**\n * ### .isFunction(value, [message])\n *\n * Asserts that `value` is a function.\n *\n * function serveTea() { return 'cup of tea'; };\n * assert.isFunction(serveTea, 'great, we can have tea now');\n *\n * @name isFunction\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFunction = function (val, msg) {\n new Assertion(val, msg, assert.isFunction, true).to.be.a('function');\n };\n\n /**\n * ### .isNotFunction(value, [message])\n *\n * Asserts that `value` is _not_ a function.\n *\n * var serveTea = [ 'heat', 'pour', 'sip' ];\n * assert.isNotFunction(serveTea, 'great, we have listed the steps');\n *\n * @name isNotFunction\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFunction = function (val, msg) {\n new Assertion(val, msg, assert.isNotFunction, true).to.not.be.a('function');\n };\n\n /**\n * ### .isObject(value, [message])\n *\n * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`).\n * _The assertion does not match subclassed objects._\n *\n * var selection = { name: 'Chai', serve: 'with spices' };\n * assert.isObject(selection, 'tea selection is an object');\n *\n * @name isObject\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isObject = function (val, msg) {\n new Assertion(val, msg, assert.isObject, true).to.be.a('object');\n };\n\n /**\n * ### .isNotObject(value, [message])\n *\n * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`).\n *\n * var selection = 'chai'\n * assert.isNotObject(selection, 'tea selection is not an object');\n * assert.isNotObject(null, 'null is not an object');\n *\n * @name isNotObject\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotObject = function (val, msg) {\n new Assertion(val, msg, assert.isNotObject, true).to.not.be.a('object');\n };\n\n /**\n * ### .isArray(value, [message])\n *\n * Asserts that `value` is an array.\n *\n * var menu = [ 'green', 'chai', 'oolong' ];\n * assert.isArray(menu, 'what kind of tea do we want?');\n *\n * @name isArray\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isArray = function (val, msg) {\n new Assertion(val, msg, assert.isArray, true).to.be.an('array');\n };\n\n /**\n * ### .isNotArray(value, [message])\n *\n * Asserts that `value` is _not_ an array.\n *\n * var menu = 'green|chai|oolong';\n * assert.isNotArray(menu, 'what kind of tea do we want?');\n *\n * @name isNotArray\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotArray = function (val, msg) {\n new Assertion(val, msg, assert.isNotArray, true).to.not.be.an('array');\n };\n\n /**\n * ### .isString(value, [message])\n *\n * Asserts that `value` is a string.\n *\n * var teaOrder = 'chai';\n * assert.isString(teaOrder, 'order placed');\n *\n * @name isString\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isString = function (val, msg) {\n new Assertion(val, msg, assert.isString, true).to.be.a('string');\n };\n\n /**\n * ### .isNotString(value, [message])\n *\n * Asserts that `value` is _not_ a string.\n *\n * var teaOrder = 4;\n * assert.isNotString(teaOrder, 'order placed');\n *\n * @name isNotString\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotString = function (val, msg) {\n new Assertion(val, msg, assert.isNotString, true).to.not.be.a('string');\n };\n\n /**\n * ### .isNumber(value, [message])\n *\n * Asserts that `value` is a number.\n *\n * var cups = 2;\n * assert.isNumber(cups, 'how many cups');\n *\n * @name isNumber\n * @param {Number} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNumber = function (val, msg) {\n new Assertion(val, msg, assert.isNumber, true).to.be.a('number');\n };\n\n /**\n * ### .isNotNumber(value, [message])\n *\n * Asserts that `value` is _not_ a number.\n *\n * var cups = '2 cups please';\n * assert.isNotNumber(cups, 'how many cups');\n *\n * @name isNotNumber\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotNumber = function (val, msg) {\n new Assertion(val, msg, assert.isNotNumber, true).to.not.be.a('number');\n };\n\n /**\n * ### .isFinite(value, [message])\n *\n * Asserts that `value` is a finite number. Unlike `.isNumber`, this will fail for `NaN` and `Infinity`.\n *\n * var cups = 2;\n * assert.isFinite(cups, 'how many cups');\n *\n * assert.isFinite(NaN); // throws\n *\n * @name isFinite\n * @param {Number} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFinite = function (val, msg) {\n new Assertion(val, msg, assert.isFinite, true).to.be.finite;\n };\n\n /**\n * ### .isBoolean(value, [message])\n *\n * Asserts that `value` is a boolean.\n *\n * var teaReady = true\n * , teaServed = false;\n *\n * assert.isBoolean(teaReady, 'is the tea ready');\n * assert.isBoolean(teaServed, 'has tea been served');\n *\n * @name isBoolean\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isBoolean = function (val, msg) {\n new Assertion(val, msg, assert.isBoolean, true).to.be.a('boolean');\n };\n\n /**\n * ### .isNotBoolean(value, [message])\n *\n * Asserts that `value` is _not_ a boolean.\n *\n * var teaReady = 'yep'\n * , teaServed = 'nope';\n *\n * assert.isNotBoolean(teaReady, 'is the tea ready');\n * assert.isNotBoolean(teaServed, 'has tea been served');\n *\n * @name isNotBoolean\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotBoolean = function (val, msg) {\n new Assertion(val, msg, assert.isNotBoolean, true).to.not.be.a('boolean');\n };\n\n /**\n * ### .typeOf(value, name, [message])\n *\n * Asserts that `value`'s type is `name`, as determined by\n * `Object.prototype.toString`.\n *\n * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object');\n * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array');\n * assert.typeOf('tea', 'string', 'we have a string');\n * assert.typeOf(/tea/, 'regexp', 'we have a regular expression');\n * assert.typeOf(null, 'null', 'we have a null');\n * assert.typeOf(undefined, 'undefined', 'we have an undefined');\n *\n * @name typeOf\n * @param {Mixed} value\n * @param {String} name\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.typeOf = function (val, type, msg) {\n new Assertion(val, msg, assert.typeOf, true).to.be.a(type);\n };\n\n /**\n * ### .notTypeOf(value, name, [message])\n *\n * Asserts that `value`'s type is _not_ `name`, as determined by\n * `Object.prototype.toString`.\n *\n * assert.notTypeOf('tea', 'number', 'strings are not numbers');\n *\n * @name notTypeOf\n * @param {Mixed} value\n * @param {String} typeof name\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notTypeOf = function (val, type, msg) {\n new Assertion(val, msg, assert.notTypeOf, true).to.not.be.a(type);\n };\n\n /**\n * ### .instanceOf(object, constructor, [message])\n *\n * Asserts that `value` is an instance of `constructor`.\n *\n * var Tea = function (name) { this.name = name; }\n * , chai = new Tea('chai');\n *\n * assert.instanceOf(chai, Tea, 'chai is an instance of tea');\n *\n * @name instanceOf\n * @param {Object} object\n * @param {Constructor} constructor\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.instanceOf = function (val, type, msg) {\n new Assertion(val, msg, assert.instanceOf, true).to.be.instanceOf(type);\n };\n\n /**\n * ### .notInstanceOf(object, constructor, [message])\n *\n * Asserts `value` is not an instance of `constructor`.\n *\n * var Tea = function (name) { this.name = name; }\n * , chai = new String('chai');\n *\n * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea');\n *\n * @name notInstanceOf\n * @param {Object} object\n * @param {Constructor} constructor\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notInstanceOf = function (val, type, msg) {\n new Assertion(val, msg, assert.notInstanceOf, true)\n .to.not.be.instanceOf(type);\n };\n\n /**\n * ### .include(haystack, needle, [message])\n *\n * Asserts that `haystack` includes `needle`. Can be used to assert the\n * inclusion of a value in an array, a substring in a string, or a subset of\n * properties in an object.\n *\n * assert.include([1,2,3], 2, 'array contains value');\n * assert.include('foobar', 'foo', 'string contains substring');\n * assert.include({ foo: 'bar', hello: 'universe' }, { foo: 'bar' }, 'object contains property');\n *\n * Strict equality (===) is used. When asserting the inclusion of a value in\n * an array, the array is searched for an element that's strictly equal to the\n * given value. When asserting a subset of properties in an object, the object\n * is searched for the given property keys, checking that each one is present\n * and strictly equal to the given property value. For instance:\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.include([obj1, obj2], obj1);\n * assert.include({foo: obj1, bar: obj2}, {foo: obj1});\n * assert.include({foo: obj1, bar: obj2}, {foo: obj1, bar: obj2});\n *\n * @name include\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.include = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.include, true).include(inc);\n };\n\n /**\n * ### .notInclude(haystack, needle, [message])\n *\n * Asserts that `haystack` does not include `needle`. Can be used to assert\n * the absence of a value in an array, a substring in a string, or a subset of\n * properties in an object.\n *\n * assert.notInclude([1,2,3], 4, \"array doesn't contain value\");\n * assert.notInclude('foobar', 'baz', \"string doesn't contain substring\");\n * assert.notInclude({ foo: 'bar', hello: 'universe' }, { foo: 'baz' }, 'object doesn't contain property');\n *\n * Strict equality (===) is used. When asserting the absence of a value in an\n * array, the array is searched to confirm the absence of an element that's\n * strictly equal to the given value. When asserting a subset of properties in\n * an object, the object is searched to confirm that at least one of the given\n * property keys is either not present or not strictly equal to the given\n * property value. For instance:\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.notInclude([obj1, obj2], {a: 1});\n * assert.notInclude({foo: obj1, bar: obj2}, {foo: {a: 1}});\n * assert.notInclude({foo: obj1, bar: obj2}, {foo: obj1, bar: {b: 2}});\n *\n * @name notInclude\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.notInclude, true).not.include(inc);\n };\n\n /**\n * ### .deepInclude(haystack, needle, [message])\n *\n * Asserts that `haystack` includes `needle`. Can be used to assert the\n * inclusion of a value in an array or a subset of properties in an object.\n * Deep equality is used.\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.deepInclude([obj1, obj2], {a: 1});\n * assert.deepInclude({foo: obj1, bar: obj2}, {foo: {a: 1}});\n * assert.deepInclude({foo: obj1, bar: obj2}, {foo: {a: 1}, bar: {b: 2}});\n *\n * @name deepInclude\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.deepInclude, true).deep.include(inc);\n };\n\n /**\n * ### .notDeepInclude(haystack, needle, [message])\n *\n * Asserts that `haystack` does not include `needle`. Can be used to assert\n * the absence of a value in an array or a subset of properties in an object.\n * Deep equality is used.\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.notDeepInclude([obj1, obj2], {a: 9});\n * assert.notDeepInclude({foo: obj1, bar: obj2}, {foo: {a: 9}});\n * assert.notDeepInclude({foo: obj1, bar: obj2}, {foo: {a: 1}, bar: {b: 9}});\n *\n * @name notDeepInclude\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepInclude, true).not.deep.include(inc);\n };\n\n /**\n * ### .nestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.nestedInclude({'.a': {'b': 'x'}}, {'\\\\.a.[b]': 'x'});\n * assert.nestedInclude({'a': {'[b]': 'x'}}, {'a.\\\\[b\\\\]': 'x'});\n *\n * @name nestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.nestedInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.nestedInclude, true).nested.include(inc);\n };\n\n /**\n * ### .notNestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' does not include 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.notNestedInclude({'.a': {'b': 'x'}}, {'\\\\.a.b': 'y'});\n * assert.notNestedInclude({'a': {'[b]': 'x'}}, {'a.\\\\[b\\\\]': 'y'});\n *\n * @name notNestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notNestedInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.notNestedInclude, true)\n .not.nested.include(inc);\n };\n\n /**\n * ### .deepNestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object while checking for deep equality.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.deepNestedInclude({a: {b: [{x: 1}]}}, {'a.b[0]': {x: 1}});\n * assert.deepNestedInclude({'.a': {'[b]': {x: 1}}}, {'\\\\.a.\\\\[b\\\\]': {x: 1}});\n *\n * @name deepNestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepNestedInclude, true)\n .deep.nested.include(inc);\n };\n\n /**\n * ### .notDeepNestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' does not include 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object while checking for deep equality.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.notDeepNestedInclude({a: {b: [{x: 1}]}}, {'a.b[0]': {y: 1}})\n * assert.notDeepNestedInclude({'.a': {'[b]': {x: 1}}}, {'\\\\.a.\\\\[b\\\\]': {y: 2}});\n *\n * @name notDeepNestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepNestedInclude, true)\n .not.deep.nested.include(inc);\n };\n\n /**\n * ### .ownInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object while ignoring inherited properties.\n *\n * assert.ownInclude({ a: 1 }, { a: 1 });\n *\n * @name ownInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.ownInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.ownInclude, true).own.include(inc);\n };\n\n /**\n * ### .notOwnInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object while ignoring inherited properties.\n *\n * Object.prototype.b = 2;\n *\n * assert.notOwnInclude({ a: 1 }, { b: 2 });\n *\n * @name notOwnInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notOwnInclude, true).not.own.include(inc);\n };\n\n /**\n * ### .deepOwnInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object while ignoring inherited properties and checking for deep equality.\n *\n * assert.deepOwnInclude({a: {b: 2}}, {a: {b: 2}});\n *\n * @name deepOwnInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepOwnInclude, true)\n .deep.own.include(inc);\n };\n\n /**\n * ### .notDeepOwnInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object while ignoring inherited properties and checking for deep equality.\n *\n * assert.notDeepOwnInclude({a: {b: 2}}, {a: {c: 3}});\n *\n * @name notDeepOwnInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepOwnInclude, true)\n .not.deep.own.include(inc);\n };\n\n /**\n * ### .match(value, regexp, [message])\n *\n * Asserts that `value` matches the regular expression `regexp`.\n *\n * assert.match('foobar', /^foo/, 'regexp matches');\n *\n * @name match\n * @param {Mixed} value\n * @param {RegExp} regexp\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.match = function (exp, re, msg) {\n new Assertion(exp, msg, assert.match, true).to.match(re);\n };\n\n /**\n * ### .notMatch(value, regexp, [message])\n *\n * Asserts that `value` does not match the regular expression `regexp`.\n *\n * assert.notMatch('foobar', /^foo/, 'regexp does not match');\n *\n * @name notMatch\n * @param {Mixed} value\n * @param {RegExp} regexp\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notMatch = function (exp, re, msg) {\n new Assertion(exp, msg, assert.notMatch, true).to.not.match(re);\n };\n\n /**\n * ### .property(object, property, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property`.\n *\n * assert.property({ tea: { green: 'matcha' }}, 'tea');\n * assert.property({ tea: { green: 'matcha' }}, 'toString');\n *\n * @name property\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.property = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.property, true).to.have.property(prop);\n };\n\n /**\n * ### .notProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a direct or inherited property named\n * by `property`.\n *\n * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee');\n *\n * @name notProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.notProperty, true)\n .to.not.have.property(prop);\n };\n\n /**\n * ### .propertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property` with a value given by `value`. Uses a strict equality check\n * (===).\n *\n * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good');\n *\n * @name propertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.propertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.propertyVal, true)\n .to.have.property(prop, val);\n };\n\n /**\n * ### .notPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct or inherited property named\n * by `property` with value given by `value`. Uses a strict equality check\n * (===).\n *\n * assert.notPropertyVal({ tea: 'is good' }, 'tea', 'is bad');\n * assert.notPropertyVal({ tea: 'is good' }, 'coffee', 'is good');\n *\n * @name notPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notPropertyVal, true)\n .to.not.have.property(prop, val);\n };\n\n /**\n * ### .deepPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property` with a value given by `value`. Uses a deep equality check.\n *\n * assert.deepPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'matcha' });\n *\n * @name deepPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepPropertyVal, true)\n .to.have.deep.property(prop, val);\n };\n\n /**\n * ### .notDeepPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct or inherited property named\n * by `property` with value given by `value`. Uses a deep equality check.\n *\n * assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'tea', { black: 'matcha' });\n * assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'oolong' });\n * assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'coffee', { green: 'matcha' });\n *\n * @name notDeepPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notDeepPropertyVal, true)\n .to.not.have.deep.property(prop, val);\n };\n\n /**\n * ### .ownProperty(object, property, [message])\n *\n * Asserts that `object` has a direct property named by `property`. Inherited\n * properties aren't checked.\n *\n * assert.ownProperty({ tea: { green: 'matcha' }}, 'tea');\n *\n * @name ownProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @api public\n */\n\n assert.ownProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.ownProperty, true)\n .to.have.own.property(prop);\n };\n\n /**\n * ### .notOwnProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a direct property named by\n * `property`. Inherited properties aren't checked.\n *\n * assert.notOwnProperty({ tea: { green: 'matcha' }}, 'coffee');\n * assert.notOwnProperty({}, 'toString');\n *\n * @name notOwnProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @api public\n */\n\n assert.notOwnProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.notOwnProperty, true)\n .to.not.have.own.property(prop);\n };\n\n /**\n * ### .ownPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct property named by `property` and a value\n * equal to the provided `value`. Uses a strict equality check (===).\n * Inherited properties aren't checked.\n *\n * assert.ownPropertyVal({ coffee: 'is good'}, 'coffee', 'is good');\n *\n * @name ownPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.ownPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.ownPropertyVal, true)\n .to.have.own.property(prop, value);\n };\n\n /**\n * ### .notOwnPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct property named by `property`\n * with a value equal to the provided `value`. Uses a strict equality check\n * (===). Inherited properties aren't checked.\n *\n * assert.notOwnPropertyVal({ tea: 'is better'}, 'tea', 'is worse');\n * assert.notOwnPropertyVal({}, 'toString', Object.prototype.toString);\n *\n * @name notOwnPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.notOwnPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.notOwnPropertyVal, true)\n .to.not.have.own.property(prop, value);\n };\n\n /**\n * ### .deepOwnPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct property named by `property` and a value\n * equal to the provided `value`. Uses a deep equality check. Inherited\n * properties aren't checked.\n *\n * assert.deepOwnPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'matcha' });\n *\n * @name deepOwnPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.deepOwnPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.deepOwnPropertyVal, true)\n .to.have.deep.own.property(prop, value);\n };\n\n /**\n * ### .notDeepOwnPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct property named by `property`\n * with a value equal to the provided `value`. Uses a deep equality check.\n * Inherited properties aren't checked.\n *\n * assert.notDeepOwnPropertyVal({ tea: { green: 'matcha' } }, 'tea', { black: 'matcha' });\n * assert.notDeepOwnPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'oolong' });\n * assert.notDeepOwnPropertyVal({ tea: { green: 'matcha' } }, 'coffee', { green: 'matcha' });\n * assert.notDeepOwnPropertyVal({}, 'toString', Object.prototype.toString);\n *\n * @name notDeepOwnPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.notDeepOwnPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.notDeepOwnPropertyVal, true)\n .to.not.have.deep.own.property(prop, value);\n };\n\n /**\n * ### .nestedProperty(object, property, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property`, which can be a string using dot- and bracket-notation for\n * nested reference.\n *\n * assert.nestedProperty({ tea: { green: 'matcha' }}, 'tea.green');\n *\n * @name nestedProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.nestedProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.nestedProperty, true)\n .to.have.nested.property(prop);\n };\n\n /**\n * ### .notNestedProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property`, which\n * can be a string using dot- and bracket-notation for nested reference. The\n * property cannot exist on the object nor anywhere in its prototype chain.\n *\n * assert.notNestedProperty({ tea: { green: 'matcha' }}, 'tea.oolong');\n *\n * @name notNestedProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notNestedProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.notNestedProperty, true)\n .to.not.have.nested.property(prop);\n };\n\n /**\n * ### .nestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property` with value given\n * by `value`. `property` can use dot- and bracket-notation for nested\n * reference. Uses a strict equality check (===).\n *\n * assert.nestedPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha');\n *\n * @name nestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.nestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.nestedPropertyVal, true)\n .to.have.nested.property(prop, val);\n };\n\n /**\n * ### .notNestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property` with\n * value given by `value`. `property` can use dot- and bracket-notation for\n * nested reference. Uses a strict equality check (===).\n *\n * assert.notNestedPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha');\n * assert.notNestedPropertyVal({ tea: { green: 'matcha' }}, 'coffee.green', 'matcha');\n *\n * @name notNestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notNestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notNestedPropertyVal, true)\n .to.not.have.nested.property(prop, val);\n };\n\n /**\n * ### .deepNestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property` with a value given\n * by `value`. `property` can use dot- and bracket-notation for nested\n * reference. Uses a deep equality check.\n *\n * assert.deepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.green', { matcha: 'yum' });\n *\n * @name deepNestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepNestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepNestedPropertyVal, true)\n .to.have.deep.nested.property(prop, val);\n };\n\n /**\n * ### .notDeepNestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property` with\n * value given by `value`. `property` can use dot- and bracket-notation for\n * nested reference. Uses a deep equality check.\n *\n * assert.notDeepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.green', { oolong: 'yum' });\n * assert.notDeepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.green', { matcha: 'yuck' });\n * assert.notDeepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.black', { matcha: 'yum' });\n *\n * @name notDeepNestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepNestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notDeepNestedPropertyVal, true)\n .to.not.have.deep.nested.property(prop, val);\n }\n\n /**\n * ### .lengthOf(object, length, [message])\n *\n * Asserts that `object` has a `length` or `size` with the expected value.\n *\n * assert.lengthOf([1,2,3], 3, 'array has length of 3');\n * assert.lengthOf('foobar', 6, 'string has length of 6');\n * assert.lengthOf(new Set([1,2,3]), 3, 'set has size of 3');\n * assert.lengthOf(new Map([['a',1],['b',2],['c',3]]), 3, 'map has size of 3');\n *\n * @name lengthOf\n * @param {Mixed} object\n * @param {Number} length\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.lengthOf = function (exp, len, msg) {\n new Assertion(exp, msg, assert.lengthOf, true).to.have.lengthOf(len);\n };\n\n /**\n * ### .hasAnyKeys(object, [keys], [message])\n *\n * Asserts that `object` has at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAnyKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'iDontExist', 'baz']);\n * assert.hasAnyKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, iDontExist: 99, baz: 1337});\n * assert.hasAnyKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}, 'key']);\n * assert.hasAnyKeys(new Set([{foo: 'bar'}, 'anotherKey']), [{foo: 'bar'}, 'anotherKey']);\n *\n * @name hasAnyKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAnyKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyKeys, true).to.have.any.keys(keys);\n }\n\n /**\n * ### .hasAllKeys(object, [keys], [message])\n *\n * Asserts that `object` has all and only all of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAllKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'bar', 'baz']);\n * assert.hasAllKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, bar: 99, baz: 1337]);\n * assert.hasAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}, 'key']);\n * assert.hasAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{foo: 'bar'}, 'anotherKey']);\n *\n * @name hasAllKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAllKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllKeys, true).to.have.all.keys(keys);\n }\n\n /**\n * ### .containsAllKeys(object, [keys], [message])\n *\n * Asserts that `object` has all of the `keys` provided but may have more keys not listed.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'baz']);\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'bar', 'baz']);\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, baz: 1337});\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, bar: 99, baz: 1337});\n * assert.containsAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}]);\n * assert.containsAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}, 'key']);\n * assert.containsAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{foo: 'bar'}]);\n * assert.containsAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{foo: 'bar'}, 'anotherKey']);\n *\n * @name containsAllKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.containsAllKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllKeys, true)\n .to.contain.all.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAnyKeys(object, [keys], [message])\n *\n * Asserts that `object` has none of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAnyKeys({foo: 1, bar: 2, baz: 3}, ['one', 'two', 'example']);\n * assert.doesNotHaveAnyKeys({foo: 1, bar: 2, baz: 3}, {one: 1, two: 2, example: 'foo'});\n * assert.doesNotHaveAnyKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{one: 'two'}, 'example']);\n * assert.doesNotHaveAnyKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{one: 'two'}, 'example']);\n *\n * @name doesNotHaveAnyKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAnyKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyKeys, true)\n .to.not.have.any.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAllKeys(object, [keys], [message])\n *\n * Asserts that `object` does not have at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAllKeys({foo: 1, bar: 2, baz: 3}, ['one', 'two', 'example']);\n * assert.doesNotHaveAllKeys({foo: 1, bar: 2, baz: 3}, {one: 1, two: 2, example: 'foo'});\n * assert.doesNotHaveAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{one: 'two'}, 'example']);\n * assert.doesNotHaveAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{one: 'two'}, 'example']);\n *\n * @name doesNotHaveAllKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAllKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllKeys, true)\n .to.not.have.all.keys(keys);\n }\n\n /**\n * ### .hasAnyDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` has at least one of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {one: 'one'});\n * assert.hasAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), [{one: 'one'}, {two: 'two'}]);\n * assert.hasAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{one: 'one'}, {two: 'two'}]);\n * assert.hasAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {one: 'one'});\n * assert.hasAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {three: 'three'}]);\n * assert.hasAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {two: 'two'}]);\n *\n * @name hasAnyDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAnyDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyDeepKeys, true)\n .to.have.any.deep.keys(keys);\n }\n\n /**\n * ### .hasAllDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` has all and only all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAllDeepKeys(new Map([[{one: 'one'}, 'valueOne']]), {one: 'one'});\n * assert.hasAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{one: 'one'}, {two: 'two'}]);\n * assert.hasAllDeepKeys(new Set([{one: 'one'}]), {one: 'one'});\n * assert.hasAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {two: 'two'}]);\n *\n * @name hasAllDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAllDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllDeepKeys, true)\n .to.have.all.deep.keys(keys);\n }\n\n /**\n * ### .containsAllDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.containsAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {one: 'one'});\n * assert.containsAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{one: 'one'}, {two: 'two'}]);\n * assert.containsAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {one: 'one'});\n * assert.containsAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {two: 'two'}]);\n *\n * @name containsAllDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.containsAllDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllDeepKeys, true)\n .to.contain.all.deep.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAnyDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` has none of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {thisDoesNot: 'exist'});\n * assert.doesNotHaveAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{twenty: 'twenty'}, {fifty: 'fifty'}]);\n * assert.doesNotHaveAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {twenty: 'twenty'});\n * assert.doesNotHaveAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{twenty: 'twenty'}, {fifty: 'fifty'}]);\n *\n * @name doesNotHaveAnyDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAnyDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyDeepKeys, true)\n .to.not.have.any.deep.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAllDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` does not have at least one of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {thisDoesNot: 'exist'});\n * assert.doesNotHaveAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{twenty: 'twenty'}, {one: 'one'}]);\n * assert.doesNotHaveAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {twenty: 'twenty'});\n * assert.doesNotHaveAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {fifty: 'fifty'}]);\n *\n * @name doesNotHaveAllDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAllDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllDeepKeys, true)\n .to.not.have.all.deep.keys(keys);\n }\n\n /**\n * ### .throws(fn, [errorLike/string/regexp], [string/regexp], [message])\n *\n * If `errorLike` is an `Error` constructor, asserts that `fn` will throw an error that is an\n * instance of `errorLike`.\n * If `errorLike` is an `Error` instance, asserts that the error thrown is the same\n * instance as `errorLike`.\n * If `errMsgMatcher` is provided, it also asserts that the error thrown will have a\n * message matching `errMsgMatcher`.\n *\n * assert.throws(fn, 'Error thrown must have this msg');\n * assert.throws(fn, /Error thrown must have a msg that matches this/);\n * assert.throws(fn, ReferenceError);\n * assert.throws(fn, errorInstance);\n * assert.throws(fn, ReferenceError, 'Error thrown must be a ReferenceError and have this msg');\n * assert.throws(fn, errorInstance, 'Error thrown must be the same errorInstance and have this msg');\n * assert.throws(fn, ReferenceError, /Error thrown must be a ReferenceError and match this/);\n * assert.throws(fn, errorInstance, /Error thrown must be the same errorInstance and match this/);\n *\n * @name throws\n * @alias throw\n * @alias Throw\n * @param {Function} fn\n * @param {ErrorConstructor|Error} errorLike\n * @param {RegExp|String} errMsgMatcher\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Assert\n * @api public\n */\n\n assert.throws = function (fn, errorLike, errMsgMatcher, msg) {\n if ('string' === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n\n var assertErr = new Assertion(fn, msg, assert.throws, true)\n .to.throw(errorLike, errMsgMatcher);\n return flag(assertErr, 'object');\n };\n\n /**\n * ### .doesNotThrow(fn, [errorLike/string/regexp], [string/regexp], [message])\n *\n * If `errorLike` is an `Error` constructor, asserts that `fn` will _not_ throw an error that is an\n * instance of `errorLike`.\n * If `errorLike` is an `Error` instance, asserts that the error thrown is _not_ the same\n * instance as `errorLike`.\n * If `errMsgMatcher` is provided, it also asserts that the error thrown will _not_ have a\n * message matching `errMsgMatcher`.\n *\n * assert.doesNotThrow(fn, 'Any Error thrown must not have this message');\n * assert.doesNotThrow(fn, /Any Error thrown must not match this/);\n * assert.doesNotThrow(fn, Error);\n * assert.doesNotThrow(fn, errorInstance);\n * assert.doesNotThrow(fn, Error, 'Error must not have this message');\n * assert.doesNotThrow(fn, errorInstance, 'Error must not have this message');\n * assert.doesNotThrow(fn, Error, /Error must not match this/);\n * assert.doesNotThrow(fn, errorInstance, /Error must not match this/);\n *\n * @name doesNotThrow\n * @param {Function} fn\n * @param {ErrorConstructor} errorLike\n * @param {RegExp|String} errMsgMatcher\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotThrow = function (fn, errorLike, errMsgMatcher, msg) {\n if ('string' === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n\n new Assertion(fn, msg, assert.doesNotThrow, true)\n .to.not.throw(errorLike, errMsgMatcher);\n };\n\n /**\n * ### .operator(val1, operator, val2, [message])\n *\n * Compares two values using `operator`.\n *\n * assert.operator(1, '<', 2, 'everything is ok');\n * assert.operator(1, '>', 2, 'this will fail');\n *\n * @name operator\n * @param {Mixed} val1\n * @param {String} operator\n * @param {Mixed} val2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.operator = function (val, operator, val2, msg) {\n var ok;\n switch(operator) {\n case '==':\n ok = val == val2;\n break;\n case '===':\n ok = val === val2;\n break;\n case '>':\n ok = val > val2;\n break;\n case '>=':\n ok = val >= val2;\n break;\n case '<':\n ok = val < val2;\n break;\n case '<=':\n ok = val <= val2;\n break;\n case '!=':\n ok = val != val2;\n break;\n case '!==':\n ok = val !== val2;\n break;\n default:\n msg = msg ? msg + ': ' : msg;\n throw new chai.AssertionError(\n msg + 'Invalid operator \"' + operator + '\"',\n undefined,\n assert.operator\n );\n }\n var test = new Assertion(ok, msg, assert.operator, true);\n test.assert(\n true === flag(test, 'object')\n , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2)\n , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) );\n };\n\n /**\n * ### .closeTo(actual, expected, delta, [message])\n *\n * Asserts that the target is equal `expected`, to within a +/- `delta` range.\n *\n * assert.closeTo(1.5, 1, 0.5, 'numbers are close');\n *\n * @name closeTo\n * @param {Number} actual\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.closeTo = function (act, exp, delta, msg) {\n new Assertion(act, msg, assert.closeTo, true).to.be.closeTo(exp, delta);\n };\n\n /**\n * ### .approximately(actual, expected, delta, [message])\n *\n * Asserts that the target is equal `expected`, to within a +/- `delta` range.\n *\n * assert.approximately(1.5, 1, 0.5, 'numbers are close');\n *\n * @name approximately\n * @param {Number} actual\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.approximately = function (act, exp, delta, msg) {\n new Assertion(act, msg, assert.approximately, true)\n .to.be.approximately(exp, delta);\n };\n\n /**\n * ### .sameMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in any order. Uses a\n * strict equality check (===).\n *\n * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members');\n *\n * @name sameMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameMembers, true)\n .to.have.same.members(set2);\n }\n\n /**\n * ### .notSameMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in any order.\n * Uses a strict equality check (===).\n *\n * assert.notSameMembers([ 1, 2, 3 ], [ 5, 1, 3 ], 'not same members');\n *\n * @name notSameMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameMembers, true)\n .to.not.have.same.members(set2);\n }\n\n /**\n * ### .sameDeepMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in any order. Uses a\n * deep equality check.\n *\n * assert.sameDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [{ b: 2 }, { a: 1 }, { c: 3 }], 'same deep members');\n *\n * @name sameDeepMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameDeepMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameDeepMembers, true)\n .to.have.same.deep.members(set2);\n }\n\n /**\n * ### .notSameDeepMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in any order.\n * Uses a deep equality check.\n *\n * assert.notSameDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [{ b: 2 }, { a: 1 }, { f: 5 }], 'not same deep members');\n *\n * @name notSameDeepMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameDeepMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameDeepMembers, true)\n .to.not.have.same.deep.members(set2);\n }\n\n /**\n * ### .sameOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in the same order.\n * Uses a strict equality check (===).\n *\n * assert.sameOrderedMembers([ 1, 2, 3 ], [ 1, 2, 3 ], 'same ordered members');\n *\n * @name sameOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameOrderedMembers, true)\n .to.have.same.ordered.members(set2);\n }\n\n /**\n * ### .notSameOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in the same\n * order. Uses a strict equality check (===).\n *\n * assert.notSameOrderedMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'not same ordered members');\n *\n * @name notSameOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameOrderedMembers, true)\n .to.not.have.same.ordered.members(set2);\n }\n\n /**\n * ### .sameDeepOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in the same order.\n * Uses a deep equality check.\n *\n * assert.sameDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { b: 2 }, { c: 3 } ], 'same deep ordered members');\n *\n * @name sameDeepOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameDeepOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameDeepOrderedMembers, true)\n .to.have.same.deep.ordered.members(set2);\n }\n\n /**\n * ### .notSameDeepOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in the same\n * order. Uses a deep equality check.\n *\n * assert.notSameDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { b: 2 }, { z: 5 } ], 'not same deep ordered members');\n * assert.notSameDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { a: 1 }, { c: 3 } ], 'not same deep ordered members');\n *\n * @name notSameDeepOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameDeepOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameDeepOrderedMembers, true)\n .to.not.have.same.deep.ordered.members(set2);\n }\n\n /**\n * ### .includeMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in any order. Uses a\n * strict equality check (===). Duplicates are ignored.\n *\n * assert.includeMembers([ 1, 2, 3 ], [ 2, 1, 2 ], 'include members');\n *\n * @name includeMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeMembers, true)\n .to.include.members(subset);\n }\n\n /**\n * ### .notIncludeMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in any order. Uses a\n * strict equality check (===). Duplicates are ignored.\n *\n * assert.notIncludeMembers([ 1, 2, 3 ], [ 5, 1 ], 'not include members');\n *\n * @name notIncludeMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeMembers, true)\n .to.not.include.members(subset);\n }\n\n /**\n * ### .includeDeepMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in any order. Uses a deep\n * equality check. Duplicates are ignored.\n *\n * assert.includeDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { a: 1 }, { b: 2 } ], 'include deep members');\n *\n * @name includeDeepMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeDeepMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeDeepMembers, true)\n .to.include.deep.members(subset);\n }\n\n /**\n * ### .notIncludeDeepMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in any order. Uses a\n * deep equality check. Duplicates are ignored.\n *\n * assert.notIncludeDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { f: 5 } ], 'not include deep members');\n *\n * @name notIncludeDeepMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeDeepMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeDeepMembers, true)\n .to.not.include.deep.members(subset);\n }\n\n /**\n * ### .includeOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a strict equality\n * check (===).\n *\n * assert.includeOrderedMembers([ 1, 2, 3 ], [ 1, 2 ], 'include ordered members');\n *\n * @name includeOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeOrderedMembers, true)\n .to.include.ordered.members(subset);\n }\n\n /**\n * ### .notIncludeOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a strict equality\n * check (===).\n *\n * assert.notIncludeOrderedMembers([ 1, 2, 3 ], [ 2, 1 ], 'not include ordered members');\n * assert.notIncludeOrderedMembers([ 1, 2, 3 ], [ 2, 3 ], 'not include ordered members');\n *\n * @name notIncludeOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeOrderedMembers, true)\n .to.not.include.ordered.members(subset);\n }\n\n /**\n * ### .includeDeepOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a deep equality\n * check.\n *\n * assert.includeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { b: 2 } ], 'include deep ordered members');\n *\n * @name includeDeepOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeDeepOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeDeepOrderedMembers, true)\n .to.include.deep.ordered.members(subset);\n }\n\n /**\n * ### .notIncludeDeepOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a deep equality\n * check.\n *\n * assert.notIncludeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { f: 5 } ], 'not include deep ordered members');\n * assert.notIncludeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { a: 1 } ], 'not include deep ordered members');\n * assert.notIncludeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { c: 3 } ], 'not include deep ordered members');\n *\n * @name notIncludeDeepOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeDeepOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeDeepOrderedMembers, true)\n .to.not.include.deep.ordered.members(subset);\n }\n\n /**\n * ### .oneOf(inList, list, [message])\n *\n * Asserts that non-object, non-array value `inList` appears in the flat array `list`.\n *\n * assert.oneOf(1, [ 2, 1 ], 'Not found in list');\n *\n * @name oneOf\n * @param {*} inList\n * @param {Array<*>} list\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.oneOf = function (inList, list, msg) {\n new Assertion(inList, msg, assert.oneOf, true).to.be.oneOf(list);\n }\n\n /**\n * ### .changes(function, object, property, [message])\n *\n * Asserts that a function changes the value of a property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 22 };\n * assert.changes(fn, obj, 'val');\n *\n * @name changes\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.changes = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.changes, true).to.change(obj, prop);\n }\n\n /**\n * ### .changesBy(function, object, property, delta, [message])\n *\n * Asserts that a function changes the value of a property by an amount (delta).\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val += 2 };\n * assert.changesBy(fn, obj, 'val', 2);\n *\n * @name changesBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.changesBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.changesBy, true)\n .to.change(obj, prop).by(delta);\n }\n\n /**\n * ### .doesNotChange(function, object, property, [message])\n *\n * Asserts that a function does not change the value of a property.\n *\n * var obj = { val: 10 };\n * var fn = function() { console.log('foo'); };\n * assert.doesNotChange(fn, obj, 'val');\n *\n * @name doesNotChange\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotChange = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotChange, true)\n .to.not.change(obj, prop);\n }\n\n /**\n * ### .changesButNotBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not change the value of a property or of a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val += 10 };\n * assert.changesButNotBy(fn, obj, 'val', 5);\n *\n * @name changesButNotBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.changesButNotBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.changesButNotBy, true)\n .to.change(obj, prop).but.not.by(delta);\n }\n\n /**\n * ### .increases(function, object, property, [message])\n *\n * Asserts that a function increases a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 13 };\n * assert.increases(fn, obj, 'val');\n *\n * @name increases\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.increases = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.increases, true)\n .to.increase(obj, prop);\n }\n\n /**\n * ### .increasesBy(function, object, property, delta, [message])\n *\n * Asserts that a function increases a numeric object property or a function's return value by an amount (delta).\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val += 10 };\n * assert.increasesBy(fn, obj, 'val', 10);\n *\n * @name increasesBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.increasesBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.increasesBy, true)\n .to.increase(obj, prop).by(delta);\n }\n\n /**\n * ### .doesNotIncrease(function, object, property, [message])\n *\n * Asserts that a function does not increase a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 8 };\n * assert.doesNotIncrease(fn, obj, 'val');\n *\n * @name doesNotIncrease\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotIncrease = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotIncrease, true)\n .to.not.increase(obj, prop);\n }\n\n /**\n * ### .increasesButNotBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not increase a numeric object property or function's return value by an amount (delta).\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 15 };\n * assert.increasesButNotBy(fn, obj, 'val', 10);\n *\n * @name increasesButNotBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.increasesButNotBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.increasesButNotBy, true)\n .to.increase(obj, prop).but.not.by(delta);\n }\n\n /**\n * ### .decreases(function, object, property, [message])\n *\n * Asserts that a function decreases a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * assert.decreases(fn, obj, 'val');\n *\n * @name decreases\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.decreases = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.decreases, true)\n .to.decrease(obj, prop);\n }\n\n /**\n * ### .decreasesBy(function, object, property, delta, [message])\n *\n * Asserts that a function decreases a numeric object property or a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val -= 5 };\n * assert.decreasesBy(fn, obj, 'val', 5);\n *\n * @name decreasesBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.decreasesBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.decreasesBy, true)\n .to.decrease(obj, prop).by(delta);\n }\n\n /**\n * ### .doesNotDecrease(function, object, property, [message])\n *\n * Asserts that a function does not decreases a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 15 };\n * assert.doesNotDecrease(fn, obj, 'val');\n *\n * @name doesNotDecrease\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotDecrease = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotDecrease, true)\n .to.not.decrease(obj, prop);\n }\n\n /**\n * ### .doesNotDecreaseBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not decreases a numeric object property or a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * assert.doesNotDecreaseBy(fn, obj, 'val', 1);\n *\n * @name doesNotDecreaseBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotDecreaseBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotDecreaseBy, true)\n .to.not.decrease(obj, prop).by(delta);\n }\n\n /**\n * ### .decreasesButNotBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not decreases a numeric object property or a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * assert.decreasesButNotBy(fn, obj, 'val', 1);\n *\n * @name decreasesButNotBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.decreasesButNotBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.decreasesButNotBy, true)\n .to.decrease(obj, prop).but.not.by(delta);\n }\n\n /*!\n * ### .ifError(object)\n *\n * Asserts if value is not a false value, and throws if it is a true value.\n * This is added to allow for chai to be a drop-in replacement for Node's\n * assert class.\n *\n * var err = new Error('I am a custom error');\n * assert.ifError(err); // Rethrows err!\n *\n * @name ifError\n * @param {Object} object\n * @namespace Assert\n * @api public\n */\n\n assert.ifError = function (val) {\n if (val) {\n throw(val);\n }\n };\n\n /**\n * ### .isExtensible(object)\n *\n * Asserts that `object` is extensible (can have new properties added to it).\n *\n * assert.isExtensible({});\n *\n * @name isExtensible\n * @alias extensible\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isExtensible = function (obj, msg) {\n new Assertion(obj, msg, assert.isExtensible, true).to.be.extensible;\n };\n\n /**\n * ### .isNotExtensible(object)\n *\n * Asserts that `object` is _not_ extensible.\n *\n * var nonExtensibleObject = Object.preventExtensions({});\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.freeze({});\n *\n * assert.isNotExtensible(nonExtensibleObject);\n * assert.isNotExtensible(sealedObject);\n * assert.isNotExtensible(frozenObject);\n *\n * @name isNotExtensible\n * @alias notExtensible\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotExtensible = function (obj, msg) {\n new Assertion(obj, msg, assert.isNotExtensible, true).to.not.be.extensible;\n };\n\n /**\n * ### .isSealed(object)\n *\n * Asserts that `object` is sealed (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.seal({});\n *\n * assert.isSealed(sealedObject);\n * assert.isSealed(frozenObject);\n *\n * @name isSealed\n * @alias sealed\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isSealed = function (obj, msg) {\n new Assertion(obj, msg, assert.isSealed, true).to.be.sealed;\n };\n\n /**\n * ### .isNotSealed(object)\n *\n * Asserts that `object` is _not_ sealed.\n *\n * assert.isNotSealed({});\n *\n * @name isNotSealed\n * @alias notSealed\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotSealed = function (obj, msg) {\n new Assertion(obj, msg, assert.isNotSealed, true).to.not.be.sealed;\n };\n\n /**\n * ### .isFrozen(object)\n *\n * Asserts that `object` is frozen (cannot have new properties added to it\n * and its existing properties cannot be modified).\n *\n * var frozenObject = Object.freeze({});\n * assert.frozen(frozenObject);\n *\n * @name isFrozen\n * @alias frozen\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isFrozen = function (obj, msg) {\n new Assertion(obj, msg, assert.isFrozen, true).to.be.frozen;\n };\n\n /**\n * ### .isNotFrozen(object)\n *\n * Asserts that `object` is _not_ frozen.\n *\n * assert.isNotFrozen({});\n *\n * @name isNotFrozen\n * @alias notFrozen\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFrozen = function (obj, msg) {\n new Assertion(obj, msg, assert.isNotFrozen, true).to.not.be.frozen;\n };\n\n /**\n * ### .isEmpty(target)\n *\n * Asserts that the target does not contain any values.\n * For arrays and strings, it checks the `length` property.\n * For `Map` and `Set` instances, it checks the `size` property.\n * For non-function objects, it gets the count of own\n * enumerable string keys.\n *\n * assert.isEmpty([]);\n * assert.isEmpty('');\n * assert.isEmpty(new Map);\n * assert.isEmpty({});\n *\n * @name isEmpty\n * @alias empty\n * @param {Object|Array|String|Map|Set} target\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isEmpty, true).to.be.empty;\n };\n\n /**\n * ### .isNotEmpty(target)\n *\n * Asserts that the target contains values.\n * For arrays and strings, it checks the `length` property.\n * For `Map` and `Set` instances, it checks the `size` property.\n * For non-function objects, it gets the count of own\n * enumerable string keys.\n *\n * assert.isNotEmpty([1, 2]);\n * assert.isNotEmpty('34');\n * assert.isNotEmpty(new Set([5, 6]));\n * assert.isNotEmpty({ key: 7 });\n *\n * @name isNotEmpty\n * @alias notEmpty\n * @param {Object|Array|String|Map|Set} target\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isNotEmpty, true).to.not.be.empty;\n };\n\n /*!\n * Aliases.\n */\n\n (function alias(name, as){\n assert[as] = assert[name];\n return alias;\n })\n ('isOk', 'ok')\n ('isNotOk', 'notOk')\n ('throws', 'throw')\n ('throws', 'Throw')\n ('isExtensible', 'extensible')\n ('isNotExtensible', 'notExtensible')\n ('isSealed', 'sealed')\n ('isNotSealed', 'notSealed')\n ('isFrozen', 'frozen')\n ('isNotFrozen', 'notFrozen')\n ('isEmpty', 'empty')\n ('isNotEmpty', 'notEmpty');\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nvar used = [];\n\n/*!\n * Chai version\n */\n\nexports.version = '4.3.8';\n\n/*!\n * Assertion Error\n */\n\nexports.AssertionError = require('assertion-error');\n\n/*!\n * Utils for plugins (not exported)\n */\n\nvar util = require('./chai/utils');\n\n/**\n * # .use(function)\n *\n * Provides a way to extend the internals of Chai.\n *\n * @param {Function}\n * @returns {this} for chaining\n * @api public\n */\n\nexports.use = function (fn) {\n if (!~used.indexOf(fn)) {\n fn(exports, util);\n used.push(fn);\n }\n\n return exports;\n};\n\n/*!\n * Utility Functions\n */\n\nexports.util = util;\n\n/*!\n * Configuration\n */\n\nvar config = require('./chai/config');\nexports.config = config;\n\n/*!\n * Primary `Assertion` prototype\n */\n\nvar assertion = require('./chai/assertion');\nexports.use(assertion);\n\n/*!\n * Core Assertions\n */\n\nvar core = require('./chai/core/assertions');\nexports.use(core);\n\n/*!\n * Expect interface\n */\n\nvar expect = require('./chai/interface/expect');\nexports.use(expect);\n\n/*!\n * Should interface\n */\n\nvar should = require('./chai/interface/should');\nexports.use(should);\n\n/*!\n * Assert interface\n */\n\nvar assert = require('./chai/interface/assert');\nexports.use(assert);\n", "module.exports = require('./lib/chai');\n", "import chai from './index.js';\n\nexport const expect = chai.expect;\nexport const version = chai.version;\nexport const Assertion = chai.Assertion;\nexport const AssertionError = chai.AssertionError;\nexport const util = chai.util;\nexport const config = chai.config;\nexport const use = chai.use;\nexport const should = chai.should;\nexport const assert = chai.assert;\nexport const core = chai.core;\n\nexport default chai;\n"], + "mappings": "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", + "names": ["AssertionError", "AssertionError", "config", "config", "config", "chai", "config", "chai", "chai", "chai", "chai", "chai", "config", "util", "AssertionError", "Assertion", "chai", "Assertion", "AssertionError", "matchIdx", "chai", "util", "chai", "util", "Assertion", "should", "chai", "util", "Assertion", "assert", "util", "config", "core", "expect", "should", "assert", "require_chai", "chai"] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js b/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js new file mode 100644 index 0000000..2b0997d --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js @@ -0,0 +1,485 @@ +import { + __commonJS +} from "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/diff-sequences/build/index.js +var require_build = __commonJS({ + "../../node_modules/diff-sequences/build/index.js"(exports) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = diffSequence; + var pkg = "diff-sequences"; + var NOT_YET_SET = 0; + var countCommonItemsF = (aIndex, aEnd, bIndex, bEnd, isCommon) => { + let nCommon = 0; + while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) { + aIndex += 1; + bIndex += 1; + nCommon += 1; + } + return nCommon; + }; + var countCommonItemsR = (aStart, aIndex, bStart, bIndex, isCommon) => { + let nCommon = 0; + while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) { + aIndex -= 1; + bIndex -= 1; + nCommon += 1; + } + return nCommon; + }; + var extendPathsF = (d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF) => { + let iF = 0; + let kF = -d; + let aFirst = aIndexesF[iF]; + let aIndexPrev1 = aFirst; + aIndexesF[iF] += countCommonItemsF( + aFirst + 1, + aEnd, + bF + aFirst - kF + 1, + bEnd, + isCommon + ); + const nF = d < iMaxF ? d : iMaxF; + for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) { + if (iF !== d && aIndexPrev1 < aIndexesF[iF]) { + aFirst = aIndexesF[iF]; + } else { + aFirst = aIndexPrev1 + 1; + if (aEnd <= aFirst) { + return iF - 1; + } + } + aIndexPrev1 = aIndexesF[iF]; + aIndexesF[iF] = aFirst + countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon); + } + return iMaxF; + }; + var extendPathsR = (d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR) => { + let iR = 0; + let kR = d; + let aFirst = aIndexesR[iR]; + let aIndexPrev1 = aFirst; + aIndexesR[iR] -= countCommonItemsR( + aStart, + aFirst - 1, + bStart, + bR + aFirst - kR - 1, + isCommon + ); + const nR = d < iMaxR ? d : iMaxR; + for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) { + if (iR !== d && aIndexesR[iR] < aIndexPrev1) { + aFirst = aIndexesR[iR]; + } else { + aFirst = aIndexPrev1 - 1; + if (aFirst < aStart) { + return iR - 1; + } + } + aIndexPrev1 = aIndexesR[iR]; + aIndexesR[iR] = aFirst - countCommonItemsR( + aStart, + aFirst - 1, + bStart, + bR + aFirst - kR - 1, + isCommon + ); + } + return iMaxR; + }; + var extendOverlappablePathsF = (d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division) => { + const bF = bStart - aStart; + const aLength = aEnd - aStart; + const bLength = bEnd - bStart; + const baDeltaLength = bLength - aLength; + const kMinOverlapF = -baDeltaLength - (d - 1); + const kMaxOverlapF = -baDeltaLength + (d - 1); + let aIndexPrev1 = NOT_YET_SET; + const nF = d < iMaxF ? d : iMaxF; + for (let iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) { + const insert = iF === 0 || iF !== d && aIndexPrev1 < aIndexesF[iF]; + const aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1; + const aFirst = insert ? aLastPrev : aLastPrev + 1; + const bFirst = bF + aFirst - kF; + const nCommonF = countCommonItemsF( + aFirst + 1, + aEnd, + bFirst + 1, + bEnd, + isCommon + ); + const aLast = aFirst + nCommonF; + aIndexPrev1 = aIndexesF[iF]; + aIndexesF[iF] = aLast; + if (kMinOverlapF <= kF && kF <= kMaxOverlapF) { + const iR = (d - 1 - (kF + baDeltaLength)) / 2; + if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) { + const bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1); + const nCommonR = countCommonItemsR( + aStart, + aLastPrev, + bStart, + bLastPrev, + isCommon + ); + const aIndexPrevFirst = aLastPrev - nCommonR; + const bIndexPrevFirst = bLastPrev - nCommonR; + const aEndPreceding = aIndexPrevFirst + 1; + const bEndPreceding = bIndexPrevFirst + 1; + division.nChangePreceding = d - 1; + if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) { + division.aEndPreceding = aStart; + division.bEndPreceding = bStart; + } else { + division.aEndPreceding = aEndPreceding; + division.bEndPreceding = bEndPreceding; + } + division.nCommonPreceding = nCommonR; + if (nCommonR !== 0) { + division.aCommonPreceding = aEndPreceding; + division.bCommonPreceding = bEndPreceding; + } + division.nCommonFollowing = nCommonF; + if (nCommonF !== 0) { + division.aCommonFollowing = aFirst + 1; + division.bCommonFollowing = bFirst + 1; + } + const aStartFollowing = aLast + 1; + const bStartFollowing = bFirst + nCommonF + 1; + division.nChangeFollowing = d - 1; + if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) { + division.aStartFollowing = aEnd; + division.bStartFollowing = bEnd; + } else { + division.aStartFollowing = aStartFollowing; + division.bStartFollowing = bStartFollowing; + } + return true; + } + } + } + return false; + }; + var extendOverlappablePathsR = (d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division) => { + const bR = bEnd - aEnd; + const aLength = aEnd - aStart; + const bLength = bEnd - bStart; + const baDeltaLength = bLength - aLength; + const kMinOverlapR = baDeltaLength - d; + const kMaxOverlapR = baDeltaLength + d; + let aIndexPrev1 = NOT_YET_SET; + const nR = d < iMaxR ? d : iMaxR; + for (let iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) { + const insert = iR === 0 || iR !== d && aIndexesR[iR] < aIndexPrev1; + const aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1; + const aFirst = insert ? aLastPrev : aLastPrev - 1; + const bFirst = bR + aFirst - kR; + const nCommonR = countCommonItemsR( + aStart, + aFirst - 1, + bStart, + bFirst - 1, + isCommon + ); + const aLast = aFirst - nCommonR; + aIndexPrev1 = aIndexesR[iR]; + aIndexesR[iR] = aLast; + if (kMinOverlapR <= kR && kR <= kMaxOverlapR) { + const iF = (d + (kR - baDeltaLength)) / 2; + if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) { + const bLast = bFirst - nCommonR; + division.nChangePreceding = d; + if (d === aLast + bLast - aStart - bStart) { + division.aEndPreceding = aStart; + division.bEndPreceding = bStart; + } else { + division.aEndPreceding = aLast; + division.bEndPreceding = bLast; + } + division.nCommonPreceding = nCommonR; + if (nCommonR !== 0) { + division.aCommonPreceding = aLast; + division.bCommonPreceding = bLast; + } + division.nChangeFollowing = d - 1; + if (d === 1) { + division.nCommonFollowing = 0; + division.aStartFollowing = aEnd; + division.bStartFollowing = bEnd; + } else { + const bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1); + const nCommonF = countCommonItemsF( + aLastPrev, + aEnd, + bLastPrev, + bEnd, + isCommon + ); + division.nCommonFollowing = nCommonF; + if (nCommonF !== 0) { + division.aCommonFollowing = aLastPrev; + division.bCommonFollowing = bLastPrev; + } + const aStartFollowing = aLastPrev + nCommonF; + const bStartFollowing = bLastPrev + nCommonF; + if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) { + division.aStartFollowing = aEnd; + division.bStartFollowing = bEnd; + } else { + division.aStartFollowing = aStartFollowing; + division.bStartFollowing = bStartFollowing; + } + } + return true; + } + } + } + return false; + }; + var divide = (nChange, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, aIndexesR, division) => { + const bF = bStart - aStart; + const bR = bEnd - aEnd; + const aLength = aEnd - aStart; + const bLength = bEnd - bStart; + const baDeltaLength = bLength - aLength; + let iMaxF = aLength; + let iMaxR = aLength; + aIndexesF[0] = aStart - 1; + aIndexesR[0] = aEnd; + if (baDeltaLength % 2 === 0) { + const dMin = (nChange || baDeltaLength) / 2; + const dMax = (aLength + bLength) / 2; + for (let d = 1; d <= dMax; d += 1) { + iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); + if (d < dMin) { + iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR); + } else if ( + // If a reverse path overlaps a forward path in the same diagonal, + // return a division of the index intervals at the middle change. + extendOverlappablePathsR( + d, + aStart, + aEnd, + bStart, + bEnd, + isCommon, + aIndexesF, + iMaxF, + aIndexesR, + iMaxR, + division + ) + ) { + return; + } + } + } else { + const dMin = ((nChange || baDeltaLength) + 1) / 2; + const dMax = (aLength + bLength + 1) / 2; + let d = 1; + iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); + for (d += 1; d <= dMax; d += 1) { + iMaxR = extendPathsR( + d - 1, + aStart, + bStart, + bR, + isCommon, + aIndexesR, + iMaxR + ); + if (d < dMin) { + iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); + } else if ( + // If a forward path overlaps a reverse path in the same diagonal, + // return a division of the index intervals at the middle change. + extendOverlappablePathsF( + d, + aStart, + aEnd, + bStart, + bEnd, + isCommon, + aIndexesF, + iMaxF, + aIndexesR, + iMaxR, + division + ) + ) { + return; + } + } + } + throw new Error( + `${pkg}: no overlap aStart=${aStart} aEnd=${aEnd} bStart=${bStart} bEnd=${bEnd}` + ); + }; + var findSubsequences = (nChange, aStart, aEnd, bStart, bEnd, transposed, callbacks, aIndexesF, aIndexesR, division) => { + if (bEnd - bStart < aEnd - aStart) { + transposed = !transposed; + if (transposed && callbacks.length === 1) { + const { foundSubsequence: foundSubsequence2, isCommon: isCommon2 } = callbacks[0]; + callbacks[1] = { + foundSubsequence: (nCommon, bCommon, aCommon) => { + foundSubsequence2(nCommon, aCommon, bCommon); + }, + isCommon: (bIndex, aIndex) => isCommon2(aIndex, bIndex) + }; + } + const tStart = aStart; + const tEnd = aEnd; + aStart = bStart; + aEnd = bEnd; + bStart = tStart; + bEnd = tEnd; + } + const { foundSubsequence, isCommon } = callbacks[transposed ? 1 : 0]; + divide( + nChange, + aStart, + aEnd, + bStart, + bEnd, + isCommon, + aIndexesF, + aIndexesR, + division + ); + const { + nChangePreceding, + aEndPreceding, + bEndPreceding, + nCommonPreceding, + aCommonPreceding, + bCommonPreceding, + nCommonFollowing, + aCommonFollowing, + bCommonFollowing, + nChangeFollowing, + aStartFollowing, + bStartFollowing + } = division; + if (aStart < aEndPreceding && bStart < bEndPreceding) { + findSubsequences( + nChangePreceding, + aStart, + aEndPreceding, + bStart, + bEndPreceding, + transposed, + callbacks, + aIndexesF, + aIndexesR, + division + ); + } + if (nCommonPreceding !== 0) { + foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding); + } + if (nCommonFollowing !== 0) { + foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing); + } + if (aStartFollowing < aEnd && bStartFollowing < bEnd) { + findSubsequences( + nChangeFollowing, + aStartFollowing, + aEnd, + bStartFollowing, + bEnd, + transposed, + callbacks, + aIndexesF, + aIndexesR, + division + ); + } + }; + var validateLength = (name, arg) => { + if (typeof arg !== "number") { + throw new TypeError(`${pkg}: ${name} typeof ${typeof arg} is not a number`); + } + if (!Number.isSafeInteger(arg)) { + throw new RangeError(`${pkg}: ${name} value ${arg} is not a safe integer`); + } + if (arg < 0) { + throw new RangeError(`${pkg}: ${name} value ${arg} is a negative integer`); + } + }; + var validateCallback = (name, arg) => { + const type = typeof arg; + if (type !== "function") { + throw new TypeError(`${pkg}: ${name} typeof ${type} is not a function`); + } + }; + function diffSequence(aLength, bLength, isCommon, foundSubsequence) { + validateLength("aLength", aLength); + validateLength("bLength", bLength); + validateCallback("isCommon", isCommon); + validateCallback("foundSubsequence", foundSubsequence); + const nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon); + if (nCommonF !== 0) { + foundSubsequence(nCommonF, 0, 0); + } + if (aLength !== nCommonF || bLength !== nCommonF) { + const aStart = nCommonF; + const bStart = nCommonF; + const nCommonR = countCommonItemsR( + aStart, + aLength - 1, + bStart, + bLength - 1, + isCommon + ); + const aEnd = aLength - nCommonR; + const bEnd = bLength - nCommonR; + const nCommonFR = nCommonF + nCommonR; + if (aLength !== nCommonFR && bLength !== nCommonFR) { + const nChange = 0; + const transposed = false; + const callbacks = [ + { + foundSubsequence, + isCommon + } + ]; + const aIndexesF = [NOT_YET_SET]; + const aIndexesR = [NOT_YET_SET]; + const division = { + aCommonFollowing: NOT_YET_SET, + aCommonPreceding: NOT_YET_SET, + aEndPreceding: NOT_YET_SET, + aStartFollowing: NOT_YET_SET, + bCommonFollowing: NOT_YET_SET, + bCommonPreceding: NOT_YET_SET, + bEndPreceding: NOT_YET_SET, + bStartFollowing: NOT_YET_SET, + nChangeFollowing: NOT_YET_SET, + nChangePreceding: NOT_YET_SET, + nCommonFollowing: NOT_YET_SET, + nCommonPreceding: NOT_YET_SET + }; + findSubsequences( + nChange, + aStart, + aEnd, + bStart, + bEnd, + transposed, + callbacks, + aIndexesF, + aIndexesR, + division + ); + } + if (nCommonR !== 0) { + foundSubsequence(nCommonR, aEnd, bEnd); + } + } + } + } +}); +export default require_build(); +//# sourceMappingURL=vitest___diff-sequences.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map b/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map new file mode 100644 index 0000000..8245223 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/diff-sequences/build/index.js"], + "sourcesContent": ["'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = diffSequence;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// This diff-sequences package implements the linear space variation in\n// An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers\n\n// Relationship in notation between Myers paper and this package:\n// A is a\n// N is aLength, aEnd - aStart, and so on\n// x is aIndex, aFirst, aLast, and so on\n// B is b\n// M is bLength, bEnd - bStart, and so on\n// y is bIndex, bFirst, bLast, and so on\n// Δ = N - M is negative of baDeltaLength = bLength - aLength\n// D is d\n// k is kF\n// k + Δ is kF = kR - baDeltaLength\n// V is aIndexesF or aIndexesR (see comment below about Indexes type)\n// index intervals [1, N] and [1, M] are [0, aLength) and [0, bLength)\n// starting point in forward direction (0, 0) is (-1, -1)\n// starting point in reverse direction (N + 1, M + 1) is (aLength, bLength)\n\n// The “edit graph” for sequences a and b corresponds to items:\n// in a on the horizontal axis\n// in b on the vertical axis\n//\n// Given a-coordinate of a point in a diagonal, you can compute b-coordinate.\n//\n// Forward diagonals kF:\n// zero diagonal intersects top left corner\n// positive diagonals intersect top edge\n// negative diagonals insersect left edge\n//\n// Reverse diagonals kR:\n// zero diagonal intersects bottom right corner\n// positive diagonals intersect right edge\n// negative diagonals intersect bottom edge\n\n// The graph contains a directed acyclic graph of edges:\n// horizontal: delete an item from a\n// vertical: insert an item from b\n// diagonal: common item in a and b\n//\n// The algorithm solves dual problems in the graph analogy:\n// Find longest common subsequence: path with maximum number of diagonal edges\n// Find shortest edit script: path with minimum number of non-diagonal edges\n\n// Input callback function compares items at indexes in the sequences.\n\n// Output callback function receives the number of adjacent items\n// and starting indexes of each common subsequence.\n// Either original functions or wrapped to swap indexes if graph is transposed.\n// Indexes in sequence a of last point of forward or reverse paths in graph.\n// Myers algorithm indexes by diagonal k which for negative is bad deopt in V8.\n// This package indexes by iF and iR which are greater than or equal to zero.\n// and also updates the index arrays in place to cut memory in half.\n// kF = 2 * iF - d\n// kR = d - 2 * iR\n// Division of index intervals in sequences a and b at the middle change.\n// Invariant: intervals do not have common items at the start or end.\nconst pkg = 'diff-sequences'; // for error messages\nconst NOT_YET_SET = 0; // small int instead of undefined to avoid deopt in V8\n\n// Return the number of common items that follow in forward direction.\n// The length of what Myers paper calls a “snake” in a forward path.\nconst countCommonItemsF = (aIndex, aEnd, bIndex, bEnd, isCommon) => {\n let nCommon = 0;\n while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) {\n aIndex += 1;\n bIndex += 1;\n nCommon += 1;\n }\n return nCommon;\n};\n\n// Return the number of common items that precede in reverse direction.\n// The length of what Myers paper calls a “snake” in a reverse path.\nconst countCommonItemsR = (aStart, aIndex, bStart, bIndex, isCommon) => {\n let nCommon = 0;\n while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) {\n aIndex -= 1;\n bIndex -= 1;\n nCommon += 1;\n }\n return nCommon;\n};\n\n// A simple function to extend forward paths from (d - 1) to d changes\n// when forward and reverse paths cannot yet overlap.\nconst extendPathsF = (\n d,\n aEnd,\n bEnd,\n bF,\n isCommon,\n aIndexesF,\n iMaxF // return the value because optimization might decrease it\n) => {\n // Unroll the first iteration.\n let iF = 0;\n let kF = -d; // kF = 2 * iF - d\n let aFirst = aIndexesF[iF]; // in first iteration always insert\n let aIndexPrev1 = aFirst; // prev value of [iF - 1] in next iteration\n aIndexesF[iF] += countCommonItemsF(\n aFirst + 1,\n aEnd,\n bF + aFirst - kF + 1,\n bEnd,\n isCommon\n );\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nF = d < iMaxF ? d : iMaxF;\n\n // The diagonals kF are odd when d is odd and even when d is even.\n for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) {\n // To get first point of path segment, move one change in forward direction\n // from last point of previous path segment in an adjacent diagonal.\n // In last possible iteration when iF === d and kF === d always delete.\n if (iF !== d && aIndexPrev1 < aIndexesF[iF]) {\n aFirst = aIndexesF[iF]; // vertical to insert from b\n } else {\n aFirst = aIndexPrev1 + 1; // horizontal to delete from a\n\n if (aEnd <= aFirst) {\n // Optimization: delete moved past right of graph.\n return iF - 1;\n }\n }\n\n // To get last point of path segment, move along diagonal of common items.\n aIndexPrev1 = aIndexesF[iF];\n aIndexesF[iF] =\n aFirst +\n countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon);\n }\n return iMaxF;\n};\n\n// A simple function to extend reverse paths from (d - 1) to d changes\n// when reverse and forward paths cannot yet overlap.\nconst extendPathsR = (\n d,\n aStart,\n bStart,\n bR,\n isCommon,\n aIndexesR,\n iMaxR // return the value because optimization might decrease it\n) => {\n // Unroll the first iteration.\n let iR = 0;\n let kR = d; // kR = d - 2 * iR\n let aFirst = aIndexesR[iR]; // in first iteration always insert\n let aIndexPrev1 = aFirst; // prev value of [iR - 1] in next iteration\n aIndexesR[iR] -= countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bR + aFirst - kR - 1,\n isCommon\n );\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nR = d < iMaxR ? d : iMaxR;\n\n // The diagonals kR are odd when d is odd and even when d is even.\n for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) {\n // To get first point of path segment, move one change in reverse direction\n // from last point of previous path segment in an adjacent diagonal.\n // In last possible iteration when iR === d and kR === -d always delete.\n if (iR !== d && aIndexesR[iR] < aIndexPrev1) {\n aFirst = aIndexesR[iR]; // vertical to insert from b\n } else {\n aFirst = aIndexPrev1 - 1; // horizontal to delete from a\n\n if (aFirst < aStart) {\n // Optimization: delete moved past left of graph.\n return iR - 1;\n }\n }\n\n // To get last point of path segment, move along diagonal of common items.\n aIndexPrev1 = aIndexesR[iR];\n aIndexesR[iR] =\n aFirst -\n countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bR + aFirst - kR - 1,\n isCommon\n );\n }\n return iMaxR;\n};\n\n// A complete function to extend forward paths from (d - 1) to d changes.\n// Return true if a path overlaps reverse path of (d - 1) changes in its diagonal.\nconst extendOverlappablePathsF = (\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division // update prop values if return true\n) => {\n const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n const baDeltaLength = bLength - aLength; // kF = kR - baDeltaLength\n\n // Range of diagonals in which forward and reverse paths might overlap.\n const kMinOverlapF = -baDeltaLength - (d - 1); // -(d - 1) <= kR\n const kMaxOverlapF = -baDeltaLength + (d - 1); // kR <= (d - 1)\n\n let aIndexPrev1 = NOT_YET_SET; // prev value of [iF - 1] in next iteration\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nF = d < iMaxF ? d : iMaxF;\n\n // The diagonals kF = 2 * iF - d are odd when d is odd and even when d is even.\n for (let iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) {\n // To get first point of path segment, move one change in forward direction\n // from last point of previous path segment in an adjacent diagonal.\n // In first iteration when iF === 0 and kF === -d always insert.\n // In last possible iteration when iF === d and kF === d always delete.\n const insert = iF === 0 || (iF !== d && aIndexPrev1 < aIndexesF[iF]);\n const aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1;\n const aFirst = insert\n ? aLastPrev // vertical to insert from b\n : aLastPrev + 1; // horizontal to delete from a\n\n // To get last point of path segment, move along diagonal of common items.\n const bFirst = bF + aFirst - kF;\n const nCommonF = countCommonItemsF(\n aFirst + 1,\n aEnd,\n bFirst + 1,\n bEnd,\n isCommon\n );\n const aLast = aFirst + nCommonF;\n aIndexPrev1 = aIndexesF[iF];\n aIndexesF[iF] = aLast;\n if (kMinOverlapF <= kF && kF <= kMaxOverlapF) {\n // Solve for iR of reverse path with (d - 1) changes in diagonal kF:\n // kR = kF + baDeltaLength\n // kR = (d - 1) - 2 * iR\n const iR = (d - 1 - (kF + baDeltaLength)) / 2;\n\n // If this forward path overlaps the reverse path in this diagonal,\n // then this is the middle change of the index intervals.\n if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) {\n // Unlike the Myers algorithm which finds only the middle “snake”\n // this package can find two common subsequences per division.\n // Last point of previous path segment is on an adjacent diagonal.\n const bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1);\n\n // Because of invariant that intervals preceding the middle change\n // cannot have common items at the end,\n // move in reverse direction along a diagonal of common items.\n const nCommonR = countCommonItemsR(\n aStart,\n aLastPrev,\n bStart,\n bLastPrev,\n isCommon\n );\n const aIndexPrevFirst = aLastPrev - nCommonR;\n const bIndexPrevFirst = bLastPrev - nCommonR;\n const aEndPreceding = aIndexPrevFirst + 1;\n const bEndPreceding = bIndexPrevFirst + 1;\n division.nChangePreceding = d - 1;\n if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) {\n // Optimization: number of preceding changes in forward direction\n // is equal to number of items in preceding interval,\n // therefore it cannot contain any common items.\n division.aEndPreceding = aStart;\n division.bEndPreceding = bStart;\n } else {\n division.aEndPreceding = aEndPreceding;\n division.bEndPreceding = bEndPreceding;\n }\n division.nCommonPreceding = nCommonR;\n if (nCommonR !== 0) {\n division.aCommonPreceding = aEndPreceding;\n division.bCommonPreceding = bEndPreceding;\n }\n division.nCommonFollowing = nCommonF;\n if (nCommonF !== 0) {\n division.aCommonFollowing = aFirst + 1;\n division.bCommonFollowing = bFirst + 1;\n }\n const aStartFollowing = aLast + 1;\n const bStartFollowing = bFirst + nCommonF + 1;\n division.nChangeFollowing = d - 1;\n if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n // Optimization: number of changes in reverse direction\n // is equal to number of items in following interval,\n // therefore it cannot contain any common items.\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n division.aStartFollowing = aStartFollowing;\n division.bStartFollowing = bStartFollowing;\n }\n return true;\n }\n }\n }\n return false;\n};\n\n// A complete function to extend reverse paths from (d - 1) to d changes.\n// Return true if a path overlaps forward path of d changes in its diagonal.\nconst extendOverlappablePathsR = (\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division // update prop values if return true\n) => {\n const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n const baDeltaLength = bLength - aLength; // kR = kF + baDeltaLength\n\n // Range of diagonals in which forward and reverse paths might overlap.\n const kMinOverlapR = baDeltaLength - d; // -d <= kF\n const kMaxOverlapR = baDeltaLength + d; // kF <= d\n\n let aIndexPrev1 = NOT_YET_SET; // prev value of [iR - 1] in next iteration\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nR = d < iMaxR ? d : iMaxR;\n\n // The diagonals kR = d - 2 * iR are odd when d is odd and even when d is even.\n for (let iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) {\n // To get first point of path segment, move one change in reverse direction\n // from last point of previous path segment in an adjacent diagonal.\n // In first iteration when iR === 0 and kR === d always insert.\n // In last possible iteration when iR === d and kR === -d always delete.\n const insert = iR === 0 || (iR !== d && aIndexesR[iR] < aIndexPrev1);\n const aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1;\n const aFirst = insert\n ? aLastPrev // vertical to insert from b\n : aLastPrev - 1; // horizontal to delete from a\n\n // To get last point of path segment, move along diagonal of common items.\n const bFirst = bR + aFirst - kR;\n const nCommonR = countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bFirst - 1,\n isCommon\n );\n const aLast = aFirst - nCommonR;\n aIndexPrev1 = aIndexesR[iR];\n aIndexesR[iR] = aLast;\n if (kMinOverlapR <= kR && kR <= kMaxOverlapR) {\n // Solve for iF of forward path with d changes in diagonal kR:\n // kF = kR - baDeltaLength\n // kF = 2 * iF - d\n const iF = (d + (kR - baDeltaLength)) / 2;\n\n // If this reverse path overlaps the forward path in this diagonal,\n // then this is a middle change of the index intervals.\n if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) {\n const bLast = bFirst - nCommonR;\n division.nChangePreceding = d;\n if (d === aLast + bLast - aStart - bStart) {\n // Optimization: number of changes in reverse direction\n // is equal to number of items in preceding interval,\n // therefore it cannot contain any common items.\n division.aEndPreceding = aStart;\n division.bEndPreceding = bStart;\n } else {\n division.aEndPreceding = aLast;\n division.bEndPreceding = bLast;\n }\n division.nCommonPreceding = nCommonR;\n if (nCommonR !== 0) {\n // The last point of reverse path segment is start of common subsequence.\n division.aCommonPreceding = aLast;\n division.bCommonPreceding = bLast;\n }\n division.nChangeFollowing = d - 1;\n if (d === 1) {\n // There is no previous path segment.\n division.nCommonFollowing = 0;\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n // Unlike the Myers algorithm which finds only the middle “snake”\n // this package can find two common subsequences per division.\n // Last point of previous path segment is on an adjacent diagonal.\n const bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1);\n\n // Because of invariant that intervals following the middle change\n // cannot have common items at the start,\n // move in forward direction along a diagonal of common items.\n const nCommonF = countCommonItemsF(\n aLastPrev,\n aEnd,\n bLastPrev,\n bEnd,\n isCommon\n );\n division.nCommonFollowing = nCommonF;\n if (nCommonF !== 0) {\n // The last point of reverse path segment is start of common subsequence.\n division.aCommonFollowing = aLastPrev;\n division.bCommonFollowing = bLastPrev;\n }\n const aStartFollowing = aLastPrev + nCommonF; // aFirstPrev\n const bStartFollowing = bLastPrev + nCommonF; // bFirstPrev\n\n if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n // Optimization: number of changes in forward direction\n // is equal to number of items in following interval,\n // therefore it cannot contain any common items.\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n division.aStartFollowing = aStartFollowing;\n division.bStartFollowing = bStartFollowing;\n }\n }\n return true;\n }\n }\n }\n return false;\n};\n\n// Given index intervals and input function to compare items at indexes,\n// divide at the middle change.\n//\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because this function will throw the “no overlap” error.\nconst divide = (\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n aIndexesR,\n division // output\n) => {\n const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n\n // Because graph has square or portrait orientation,\n // length difference is minimum number of items to insert from b.\n // Corresponding forward and reverse diagonals in graph\n // depend on length difference of the sequences:\n // kF = kR - baDeltaLength\n // kR = kF + baDeltaLength\n const baDeltaLength = bLength - aLength;\n\n // Optimization: max diagonal in graph intersects corner of shorter side.\n let iMaxF = aLength;\n let iMaxR = aLength;\n\n // Initialize no changes yet in forward or reverse direction:\n aIndexesF[0] = aStart - 1; // at open start of interval, outside closed start\n aIndexesR[0] = aEnd; // at open end of interval\n\n if (baDeltaLength % 2 === 0) {\n // The number of changes in paths is 2 * d if length difference is even.\n const dMin = (nChange || baDeltaLength) / 2;\n const dMax = (aLength + bLength) / 2;\n for (let d = 1; d <= dMax; d += 1) {\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n if (d < dMin) {\n iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR);\n } else if (\n // If a reverse path overlaps a forward path in the same diagonal,\n // return a division of the index intervals at the middle change.\n extendOverlappablePathsR(\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division\n )\n ) {\n return;\n }\n }\n } else {\n // The number of changes in paths is 2 * d - 1 if length difference is odd.\n const dMin = ((nChange || baDeltaLength) + 1) / 2;\n const dMax = (aLength + bLength + 1) / 2;\n\n // Unroll first half iteration so loop extends the relevant pairs of paths.\n // Because of invariant that intervals have no common items at start or end,\n // and limitation not to call divide with empty intervals,\n // therefore it cannot be called if a forward path with one change\n // would overlap a reverse path with no changes, even if dMin === 1.\n let d = 1;\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n for (d += 1; d <= dMax; d += 1) {\n iMaxR = extendPathsR(\n d - 1,\n aStart,\n bStart,\n bR,\n isCommon,\n aIndexesR,\n iMaxR\n );\n if (d < dMin) {\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n } else if (\n // If a forward path overlaps a reverse path in the same diagonal,\n // return a division of the index intervals at the middle change.\n extendOverlappablePathsF(\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division\n )\n ) {\n return;\n }\n }\n }\n\n /* istanbul ignore next */\n throw new Error(\n `${pkg}: no overlap aStart=${aStart} aEnd=${aEnd} bStart=${bStart} bEnd=${bEnd}`\n );\n};\n\n// Given index intervals and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence. Divide and conquer with only linear space.\n//\n// The index intervals are half open [start, end) like array slice method.\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because divide function will throw the “no overlap” error.\nconst findSubsequences = (\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division // temporary memory, not input nor output\n) => {\n if (bEnd - bStart < aEnd - aStart) {\n // Transpose graph so it has portrait instead of landscape orientation.\n // Always compare shorter to longer sequence for consistency and optimization.\n transposed = !transposed;\n if (transposed && callbacks.length === 1) {\n // Lazily wrap callback functions to swap args if graph is transposed.\n const {foundSubsequence, isCommon} = callbacks[0];\n callbacks[1] = {\n foundSubsequence: (nCommon, bCommon, aCommon) => {\n foundSubsequence(nCommon, aCommon, bCommon);\n },\n isCommon: (bIndex, aIndex) => isCommon(aIndex, bIndex)\n };\n }\n const tStart = aStart;\n const tEnd = aEnd;\n aStart = bStart;\n aEnd = bEnd;\n bStart = tStart;\n bEnd = tEnd;\n }\n const {foundSubsequence, isCommon} = callbacks[transposed ? 1 : 0];\n\n // Divide the index intervals at the middle change.\n divide(\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n aIndexesR,\n division\n );\n const {\n nChangePreceding,\n aEndPreceding,\n bEndPreceding,\n nCommonPreceding,\n aCommonPreceding,\n bCommonPreceding,\n nCommonFollowing,\n aCommonFollowing,\n bCommonFollowing,\n nChangeFollowing,\n aStartFollowing,\n bStartFollowing\n } = division;\n\n // Unless either index interval is empty, they might contain common items.\n if (aStart < aEndPreceding && bStart < bEndPreceding) {\n // Recursely find and return common subsequences preceding the division.\n findSubsequences(\n nChangePreceding,\n aStart,\n aEndPreceding,\n bStart,\n bEndPreceding,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n\n // Return common subsequences that are adjacent to the middle change.\n if (nCommonPreceding !== 0) {\n foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding);\n }\n if (nCommonFollowing !== 0) {\n foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing);\n }\n\n // Unless either index interval is empty, they might contain common items.\n if (aStartFollowing < aEnd && bStartFollowing < bEnd) {\n // Recursely find and return common subsequences following the division.\n findSubsequences(\n nChangeFollowing,\n aStartFollowing,\n aEnd,\n bStartFollowing,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n};\nconst validateLength = (name, arg) => {\n if (typeof arg !== 'number') {\n throw new TypeError(`${pkg}: ${name} typeof ${typeof arg} is not a number`);\n }\n if (!Number.isSafeInteger(arg)) {\n throw new RangeError(`${pkg}: ${name} value ${arg} is not a safe integer`);\n }\n if (arg < 0) {\n throw new RangeError(`${pkg}: ${name} value ${arg} is a negative integer`);\n }\n};\nconst validateCallback = (name, arg) => {\n const type = typeof arg;\n if (type !== 'function') {\n throw new TypeError(`${pkg}: ${name} typeof ${type} is not a function`);\n }\n};\n\n// Compare items in two sequences to find a longest common subsequence.\n// Given lengths of sequences and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence.\nfunction diffSequence(aLength, bLength, isCommon, foundSubsequence) {\n validateLength('aLength', aLength);\n validateLength('bLength', bLength);\n validateCallback('isCommon', isCommon);\n validateCallback('foundSubsequence', foundSubsequence);\n\n // Count common items from the start in the forward direction.\n const nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon);\n if (nCommonF !== 0) {\n foundSubsequence(nCommonF, 0, 0);\n }\n\n // Unless both sequences consist of common items only,\n // find common items in the half-trimmed index intervals.\n if (aLength !== nCommonF || bLength !== nCommonF) {\n // Invariant: intervals do not have common items at the start.\n // The start of an index interval is closed like array slice method.\n const aStart = nCommonF;\n const bStart = nCommonF;\n\n // Count common items from the end in the reverse direction.\n const nCommonR = countCommonItemsR(\n aStart,\n aLength - 1,\n bStart,\n bLength - 1,\n isCommon\n );\n\n // Invariant: intervals do not have common items at the end.\n // The end of an index interval is open like array slice method.\n const aEnd = aLength - nCommonR;\n const bEnd = bLength - nCommonR;\n\n // Unless one sequence consists of common items only,\n // therefore the other trimmed index interval consists of changes only,\n // find common items in the trimmed index intervals.\n const nCommonFR = nCommonF + nCommonR;\n if (aLength !== nCommonFR && bLength !== nCommonFR) {\n const nChange = 0; // number of change items is not yet known\n const transposed = false; // call the original unwrapped functions\n const callbacks = [\n {\n foundSubsequence,\n isCommon\n }\n ];\n\n // Indexes in sequence a of last points in furthest reaching paths\n // from outside the start at top left in the forward direction:\n const aIndexesF = [NOT_YET_SET];\n // from the end at bottom right in the reverse direction:\n const aIndexesR = [NOT_YET_SET];\n\n // Initialize one object as output of all calls to divide function.\n const division = {\n aCommonFollowing: NOT_YET_SET,\n aCommonPreceding: NOT_YET_SET,\n aEndPreceding: NOT_YET_SET,\n aStartFollowing: NOT_YET_SET,\n bCommonFollowing: NOT_YET_SET,\n bCommonPreceding: NOT_YET_SET,\n bEndPreceding: NOT_YET_SET,\n bStartFollowing: NOT_YET_SET,\n nChangeFollowing: NOT_YET_SET,\n nChangePreceding: NOT_YET_SET,\n nCommonFollowing: NOT_YET_SET,\n nCommonPreceding: NOT_YET_SET\n };\n\n // Find and return common subsequences in the trimmed index intervals.\n findSubsequences(\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n if (nCommonR !== 0) {\n foundSubsequence(nCommonR, aEnd, bEnd);\n }\n }\n}\n"], + "mappings": ";;;;;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAkElB,QAAM,MAAM;AACZ,QAAM,cAAc;AAIpB,QAAM,oBAAoB,CAAC,QAAQ,MAAM,QAAQ,MAAM,aAAa;AAClE,UAAI,UAAU;AACd,aAAO,SAAS,QAAQ,SAAS,QAAQ,SAAS,QAAQ,MAAM,GAAG;AACjE,kBAAU;AACV,kBAAU;AACV,mBAAW;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAIA,QAAM,oBAAoB,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,aAAa;AACtE,UAAI,UAAU;AACd,aAAO,UAAU,UAAU,UAAU,UAAU,SAAS,QAAQ,MAAM,GAAG;AACvE,kBAAU;AACV,kBAAU;AACV,mBAAW;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAIA,QAAM,eAAe,CACnB,GACA,MACA,MACA,IACA,UACA,WACA,UACG;AAEH,UAAI,KAAK;AACT,UAAI,KAAK,CAAC;AACV,UAAI,SAAS,UAAU,EAAE;AACzB,UAAI,cAAc;AAClB,gBAAU,EAAE,KAAK;AAAA,QACf,SAAS;AAAA,QACT;AAAA,QACA,KAAK,SAAS,KAAK;AAAA,QACnB;AAAA,QACA;AAAA,MACF;AAGA,YAAM,KAAK,IAAI,QAAQ,IAAI;AAG3B,WAAK,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG;AAIjD,YAAI,OAAO,KAAK,cAAc,UAAU,EAAE,GAAG;AAC3C,mBAAS,UAAU,EAAE;AAAA,QACvB,OAAO;AACL,mBAAS,cAAc;AAEvB,cAAI,QAAQ,QAAQ;AAElB,mBAAO,KAAK;AAAA,UACd;AAAA,QACF;AAGA,sBAAc,UAAU,EAAE;AAC1B,kBAAU,EAAE,IACV,SACA,kBAAkB,SAAS,GAAG,MAAM,KAAK,SAAS,KAAK,GAAG,MAAM,QAAQ;AAAA,MAC5E;AACA,aAAO;AAAA,IACT;AAIA,QAAM,eAAe,CACnB,GACA,QACA,QACA,IACA,UACA,WACA,UACG;AAEH,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,SAAS,UAAU,EAAE;AACzB,UAAI,cAAc;AAClB,gBAAU,EAAE,KAAK;AAAA,QACf;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,KAAK,SAAS,KAAK;AAAA,QACnB;AAAA,MACF;AAGA,YAAM,KAAK,IAAI,QAAQ,IAAI;AAG3B,WAAK,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG;AAIjD,YAAI,OAAO,KAAK,UAAU,EAAE,IAAI,aAAa;AAC3C,mBAAS,UAAU,EAAE;AAAA,QACvB,OAAO;AACL,mBAAS,cAAc;AAEvB,cAAI,SAAS,QAAQ;AAEnB,mBAAO,KAAK;AAAA,UACd;AAAA,QACF;AAGA,sBAAc,UAAU,EAAE;AAC1B,kBAAU,EAAE,IACV,SACA;AAAA,UACE;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA,KAAK,SAAS,KAAK;AAAA,UACnB;AAAA,QACF;AAAA,MACJ;AACA,aAAO;AAAA,IACT;AAIA,QAAM,2BAA2B,CAC/B,GACA,QACA,MACA,QACA,MACA,UACA,WACA,OACA,WACA,OACA,aACG;AACH,YAAM,KAAK,SAAS;AACpB,YAAM,UAAU,OAAO;AACvB,YAAM,UAAU,OAAO;AACvB,YAAM,gBAAgB,UAAU;AAGhC,YAAM,eAAe,CAAC,iBAAiB,IAAI;AAC3C,YAAM,eAAe,CAAC,iBAAiB,IAAI;AAE3C,UAAI,cAAc;AAGlB,YAAM,KAAK,IAAI,QAAQ,IAAI;AAG3B,eAAS,KAAK,GAAG,KAAK,CAAC,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG;AAKpD,cAAM,SAAS,OAAO,KAAM,OAAO,KAAK,cAAc,UAAU,EAAE;AAClE,cAAM,YAAY,SAAS,UAAU,EAAE,IAAI;AAC3C,cAAM,SAAS,SACX,YACA,YAAY;AAGhB,cAAM,SAAS,KAAK,SAAS;AAC7B,cAAM,WAAW;AAAA,UACf,SAAS;AAAA,UACT;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACF;AACA,cAAM,QAAQ,SAAS;AACvB,sBAAc,UAAU,EAAE;AAC1B,kBAAU,EAAE,IAAI;AAChB,YAAI,gBAAgB,MAAM,MAAM,cAAc;AAI5C,gBAAM,MAAM,IAAI,KAAK,KAAK,kBAAkB;AAI5C,cAAI,MAAM,SAAS,UAAU,EAAE,IAAI,KAAK,OAAO;AAI7C,kBAAM,YAAY,KAAK,aAAa,SAAS,KAAK,IAAI,KAAK;AAK3D,kBAAM,WAAW;AAAA,cACf;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AACA,kBAAM,kBAAkB,YAAY;AACpC,kBAAM,kBAAkB,YAAY;AACpC,kBAAM,gBAAgB,kBAAkB;AACxC,kBAAM,gBAAgB,kBAAkB;AACxC,qBAAS,mBAAmB,IAAI;AAChC,gBAAI,IAAI,MAAM,gBAAgB,gBAAgB,SAAS,QAAQ;AAI7D,uBAAS,gBAAgB;AACzB,uBAAS,gBAAgB;AAAA,YAC3B,OAAO;AACL,uBAAS,gBAAgB;AACzB,uBAAS,gBAAgB;AAAA,YAC3B;AACA,qBAAS,mBAAmB;AAC5B,gBAAI,aAAa,GAAG;AAClB,uBAAS,mBAAmB;AAC5B,uBAAS,mBAAmB;AAAA,YAC9B;AACA,qBAAS,mBAAmB;AAC5B,gBAAI,aAAa,GAAG;AAClB,uBAAS,mBAAmB,SAAS;AACrC,uBAAS,mBAAmB,SAAS;AAAA,YACvC;AACA,kBAAM,kBAAkB,QAAQ;AAChC,kBAAM,kBAAkB,SAAS,WAAW;AAC5C,qBAAS,mBAAmB,IAAI;AAChC,gBAAI,IAAI,MAAM,OAAO,OAAO,kBAAkB,iBAAiB;AAI7D,uBAAS,kBAAkB;AAC3B,uBAAS,kBAAkB;AAAA,YAC7B,OAAO;AACL,uBAAS,kBAAkB;AAC3B,uBAAS,kBAAkB;AAAA,YAC7B;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAIA,QAAM,2BAA2B,CAC/B,GACA,QACA,MACA,QACA,MACA,UACA,WACA,OACA,WACA,OACA,aACG;AACH,YAAM,KAAK,OAAO;AAClB,YAAM,UAAU,OAAO;AACvB,YAAM,UAAU,OAAO;AACvB,YAAM,gBAAgB,UAAU;AAGhC,YAAM,eAAe,gBAAgB;AACrC,YAAM,eAAe,gBAAgB;AAErC,UAAI,cAAc;AAGlB,YAAM,KAAK,IAAI,QAAQ,IAAI;AAG3B,eAAS,KAAK,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG;AAKnD,cAAM,SAAS,OAAO,KAAM,OAAO,KAAK,UAAU,EAAE,IAAI;AACxD,cAAM,YAAY,SAAS,UAAU,EAAE,IAAI;AAC3C,cAAM,SAAS,SACX,YACA,YAAY;AAGhB,cAAM,SAAS,KAAK,SAAS;AAC7B,cAAM,WAAW;AAAA,UACf;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA,SAAS;AAAA,UACT;AAAA,QACF;AACA,cAAM,QAAQ,SAAS;AACvB,sBAAc,UAAU,EAAE;AAC1B,kBAAU,EAAE,IAAI;AAChB,YAAI,gBAAgB,MAAM,MAAM,cAAc;AAI5C,gBAAM,MAAM,KAAK,KAAK,kBAAkB;AAIxC,cAAI,MAAM,SAAS,QAAQ,KAAK,UAAU,EAAE,GAAG;AAC7C,kBAAM,QAAQ,SAAS;AACvB,qBAAS,mBAAmB;AAC5B,gBAAI,MAAM,QAAQ,QAAQ,SAAS,QAAQ;AAIzC,uBAAS,gBAAgB;AACzB,uBAAS,gBAAgB;AAAA,YAC3B,OAAO;AACL,uBAAS,gBAAgB;AACzB,uBAAS,gBAAgB;AAAA,YAC3B;AACA,qBAAS,mBAAmB;AAC5B,gBAAI,aAAa,GAAG;AAElB,uBAAS,mBAAmB;AAC5B,uBAAS,mBAAmB;AAAA,YAC9B;AACA,qBAAS,mBAAmB,IAAI;AAChC,gBAAI,MAAM,GAAG;AAEX,uBAAS,mBAAmB;AAC5B,uBAAS,kBAAkB;AAC3B,uBAAS,kBAAkB;AAAA,YAC7B,OAAO;AAIL,oBAAM,YAAY,KAAK,aAAa,SAAS,KAAK,IAAI,KAAK;AAK3D,oBAAM,WAAW;AAAA,gBACf;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AACA,uBAAS,mBAAmB;AAC5B,kBAAI,aAAa,GAAG;AAElB,yBAAS,mBAAmB;AAC5B,yBAAS,mBAAmB;AAAA,cAC9B;AACA,oBAAM,kBAAkB,YAAY;AACpC,oBAAM,kBAAkB,YAAY;AAEpC,kBAAI,IAAI,MAAM,OAAO,OAAO,kBAAkB,iBAAiB;AAI7D,yBAAS,kBAAkB;AAC3B,yBAAS,kBAAkB;AAAA,cAC7B,OAAO;AACL,yBAAS,kBAAkB;AAC3B,yBAAS,kBAAkB;AAAA,cAC7B;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAOA,QAAM,SAAS,CACb,SACA,QACA,MACA,QACA,MACA,UACA,WACA,WACA,aACG;AACH,YAAM,KAAK,SAAS;AACpB,YAAM,KAAK,OAAO;AAClB,YAAM,UAAU,OAAO;AACvB,YAAM,UAAU,OAAO;AAQvB,YAAM,gBAAgB,UAAU;AAGhC,UAAI,QAAQ;AACZ,UAAI,QAAQ;AAGZ,gBAAU,CAAC,IAAI,SAAS;AACxB,gBAAU,CAAC,IAAI;AAEf,UAAI,gBAAgB,MAAM,GAAG;AAE3B,cAAM,QAAQ,WAAW,iBAAiB;AAC1C,cAAM,QAAQ,UAAU,WAAW;AACnC,iBAAS,IAAI,GAAG,KAAK,MAAM,KAAK,GAAG;AACjC,kBAAQ,aAAa,GAAG,MAAM,MAAM,IAAI,UAAU,WAAW,KAAK;AAClE,cAAI,IAAI,MAAM;AACZ,oBAAQ,aAAa,GAAG,QAAQ,QAAQ,IAAI,UAAU,WAAW,KAAK;AAAA,UACxE;AAAA;AAAA;AAAA,YAGE;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA;AACA;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AAEL,cAAM,SAAS,WAAW,iBAAiB,KAAK;AAChD,cAAM,QAAQ,UAAU,UAAU,KAAK;AAOvC,YAAI,IAAI;AACR,gBAAQ,aAAa,GAAG,MAAM,MAAM,IAAI,UAAU,WAAW,KAAK;AAClE,aAAK,KAAK,GAAG,KAAK,MAAM,KAAK,GAAG;AAC9B,kBAAQ;AAAA,YACN,IAAI;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,cAAI,IAAI,MAAM;AACZ,oBAAQ,aAAa,GAAG,MAAM,MAAM,IAAI,UAAU,WAAW,KAAK;AAAA,UACpE;AAAA;AAAA;AAAA,YAGE;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA;AACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,YAAM,IAAI;AAAA,QACR,GAAG,GAAG,uBAAuB,MAAM,SAAS,IAAI,WAAW,MAAM,SAAS,IAAI;AAAA,MAChF;AAAA,IACF;AASA,QAAM,mBAAmB,CACvB,SACA,QACA,MACA,QACA,MACA,YACA,WACA,WACA,WACA,aACG;AACH,UAAI,OAAO,SAAS,OAAO,QAAQ;AAGjC,qBAAa,CAAC;AACd,YAAI,cAAc,UAAU,WAAW,GAAG;AAExC,gBAAM,EAAC,kBAAAA,mBAAkB,UAAAC,UAAQ,IAAI,UAAU,CAAC;AAChD,oBAAU,CAAC,IAAI;AAAA,YACb,kBAAkB,CAAC,SAAS,SAAS,YAAY;AAC/C,cAAAD,kBAAiB,SAAS,SAAS,OAAO;AAAA,YAC5C;AAAA,YACA,UAAU,CAAC,QAAQ,WAAWC,UAAS,QAAQ,MAAM;AAAA,UACvD;AAAA,QACF;AACA,cAAM,SAAS;AACf,cAAM,OAAO;AACb,iBAAS;AACT,eAAO;AACP,iBAAS;AACT,eAAO;AAAA,MACT;AACA,YAAM,EAAC,kBAAkB,SAAQ,IAAI,UAAU,aAAa,IAAI,CAAC;AAGjE;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AAGJ,UAAI,SAAS,iBAAiB,SAAS,eAAe;AAEpD;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAGA,UAAI,qBAAqB,GAAG;AAC1B,yBAAiB,kBAAkB,kBAAkB,gBAAgB;AAAA,MACvE;AACA,UAAI,qBAAqB,GAAG;AAC1B,yBAAiB,kBAAkB,kBAAkB,gBAAgB;AAAA,MACvE;AAGA,UAAI,kBAAkB,QAAQ,kBAAkB,MAAM;AAEpD;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAM,iBAAiB,CAAC,MAAM,QAAQ;AACpC,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,IAAI,UAAU,GAAG,GAAG,KAAK,IAAI,WAAW,OAAO,GAAG,kBAAkB;AAAA,MAC5E;AACA,UAAI,CAAC,OAAO,cAAc,GAAG,GAAG;AAC9B,cAAM,IAAI,WAAW,GAAG,GAAG,KAAK,IAAI,UAAU,GAAG,wBAAwB;AAAA,MAC3E;AACA,UAAI,MAAM,GAAG;AACX,cAAM,IAAI,WAAW,GAAG,GAAG,KAAK,IAAI,UAAU,GAAG,wBAAwB;AAAA,MAC3E;AAAA,IACF;AACA,QAAM,mBAAmB,CAAC,MAAM,QAAQ;AACtC,YAAM,OAAO,OAAO;AACpB,UAAI,SAAS,YAAY;AACvB,cAAM,IAAI,UAAU,GAAG,GAAG,KAAK,IAAI,WAAW,IAAI,oBAAoB;AAAA,MACxE;AAAA,IACF;AAMA,aAAS,aAAa,SAAS,SAAS,UAAU,kBAAkB;AAClE,qBAAe,WAAW,OAAO;AACjC,qBAAe,WAAW,OAAO;AACjC,uBAAiB,YAAY,QAAQ;AACrC,uBAAiB,oBAAoB,gBAAgB;AAGrD,YAAM,WAAW,kBAAkB,GAAG,SAAS,GAAG,SAAS,QAAQ;AACnE,UAAI,aAAa,GAAG;AAClB,yBAAiB,UAAU,GAAG,CAAC;AAAA,MACjC;AAIA,UAAI,YAAY,YAAY,YAAY,UAAU;AAGhD,cAAM,SAAS;AACf,cAAM,SAAS;AAGf,cAAM,WAAW;AAAA,UACf;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA,UAAU;AAAA,UACV;AAAA,QACF;AAIA,cAAM,OAAO,UAAU;AACvB,cAAM,OAAO,UAAU;AAKvB,cAAM,YAAY,WAAW;AAC7B,YAAI,YAAY,aAAa,YAAY,WAAW;AAClD,gBAAM,UAAU;AAChB,gBAAM,aAAa;AACnB,gBAAM,YAAY;AAAA,YAChB;AAAA,cACE;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAIA,gBAAM,YAAY,CAAC,WAAW;AAE9B,gBAAM,YAAY,CAAC,WAAW;AAG9B,gBAAM,WAAW;AAAA,YACf,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,eAAe;AAAA,YACf,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,eAAe;AAAA,YACf,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,UACpB;AAGA;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AACA,YAAI,aAAa,GAAG;AAClB,2BAAiB,UAAU,MAAM,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;", + "names": ["foundSubsequence", "isCommon"] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js new file mode 100644 index 0000000..a8113e6 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js @@ -0,0 +1,7 @@ +import { + require_build +} from "./chunk-UCU27OGC.js"; +import "./chunk-UJ726J2L.js"; +import "./chunk-5WRI5ZAA.js"; +export default require_build(); +//# sourceMappingURL=vitest___pretty-format.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js new file mode 100644 index 0000000..76e26c3 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js @@ -0,0 +1,15 @@ +import "./chunk-5WRI5ZAA.js"; + +// ../../node_modules/ansi-regex/index.js +function ansiRegex({ onlyFirst = false } = {}) { + const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)"; + const pattern = [ + `[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`, + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))" + ].join("|"); + return new RegExp(pattern, onlyFirst ? void 0 : "g"); +} +export { + ansiRegex as default +}; +//# sourceMappingURL=vitest___pretty-format___ansi-regex.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map new file mode 100644 index 0000000..8d24bd9 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ansi-regex/index.js"], + "sourcesContent": ["export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n"], + "mappings": ";;;AAAe,SAAR,UAA2B,EAAC,YAAY,MAAK,IAAI,CAAC,GAAG;AAE3D,QAAM,KAAK;AACX,QAAM,UAAU;AAAA,IACf,uHAAuH,EAAE;AAAA,IACzH;AAAA,EACD,EAAE,KAAK,GAAG;AAEV,SAAO,IAAI,OAAO,SAAS,YAAY,SAAY,GAAG;AACvD;", + "names": [] +} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js new file mode 100644 index 0000000..0bbe027 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js @@ -0,0 +1,6 @@ +import { + require_ansi_styles +} from "./chunk-UJ726J2L.js"; +import "./chunk-5WRI5ZAA.js"; +export default require_ansi_styles(); +//# sourceMappingURL=vitest___pretty-format___ansi-styles.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/packages/ridb/node_modules/.vite/vitest/results.json b/packages/ridb/node_modules/.vite/vitest/results.json new file mode 100644 index 0000000..f69e2a9 --- /dev/null +++ b/packages/ridb/node_modules/.vite/vitest/results.json @@ -0,0 +1 @@ +{"version":"1.6.0","results":[[":tests/node.test.ts",{"duration":0,"failed":true}]]} \ No newline at end of file diff --git a/packages/ridb/node_modules/@trust0/ridb-wasm b/packages/ridb/node_modules/@trust0/ridb-wasm new file mode 120000 index 0000000..5b5e692 --- /dev/null +++ b/packages/ridb/node_modules/@trust0/ridb-wasm @@ -0,0 +1 @@ +../../../../../ridb-wasm/pkg \ No newline at end of file diff --git a/packages/ridb/package.json b/packages/ridb/package.json new file mode 100644 index 0000000..a3416a8 --- /dev/null +++ b/packages/ridb/package.json @@ -0,0 +1,49 @@ +{ + "name": "@trust0/ridb", + "version": "0.10.1", + "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", + "main": "./build/cjs/index.js", + "publishConfig": { + "access": "public" + }, + "module": "./build/esm/index.js", + "exports": { + ".": { + "import": "./build/esm/index.mjs", + "require": "./build/cjs/index.cjs", + "default": "./build/esm/index.mjs", + "types": "./build/index.d.ts" + } + }, + "author": "elribonazo@gmail.com", + "types": "./build/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/trust0-project/RIDB.git" + }, + "license": "Apache-2.0", + "files": [ + "./build/**/*", + "./**/*.md" + ], + "engines": { + "node": ">=20" + }, + "scripts": { + "docs": "typedoc --cleanOutputDir false", + "runtest": "npm run build && npm run test:node", + "build": "rm -rf build && npm run types && node esbuild.config.mjs", + "test": "sh test.sh", + "test:node": "sh test.sh -e node", + "test:browser": "sh test.sh -e browser", + "types":"npm run types:default && npm run types:esm && npm run types:cjs", + "types:default":"npx dts-bundle-generator src/index.ts --no-check -o ./build/index.d.ts", + "types:esm":"npx dts-bundle-generator src/index.ts --no-check -o ./build/esm/index.d.ts", + "types:cjs":"npx dts-bundle-generator src/index.ts --no-check -o ./build/cjs/index.d.ts", + "prepublishOnly": "npm run build" + }, + "devDependencies": { + "@trust0/ridb-wasm": "file:../../../ridb-wasm/pkg" + } + } + \ No newline at end of file diff --git a/release.config.js b/packages/ridb/release.config.js similarity index 100% rename from release.config.js rename to packages/ridb/release.config.js diff --git a/src/index.ts b/packages/ridb/src/index.ts similarity index 100% rename from src/index.ts rename to packages/ridb/src/index.ts diff --git a/test.sh b/packages/ridb/test.sh similarity index 100% rename from test.sh rename to packages/ridb/test.sh diff --git a/tests/browser.test.ts b/packages/ridb/tests/browser.test.ts similarity index 100% rename from tests/browser.test.ts rename to packages/ridb/tests/browser.test.ts diff --git a/tests/node.test.ts b/packages/ridb/tests/node.test.ts similarity index 100% rename from tests/node.test.ts rename to packages/ridb/tests/node.test.ts diff --git a/tests/setup.ts b/packages/ridb/tests/setup.ts similarity index 100% rename from tests/setup.ts rename to packages/ridb/tests/setup.ts diff --git a/tests/shared.ts b/packages/ridb/tests/shared.ts similarity index 100% rename from tests/shared.ts rename to packages/ridb/tests/shared.ts diff --git a/tests/test/schemas.test.ts b/packages/ridb/tests/test/schemas.test.ts similarity index 100% rename from tests/test/schemas.test.ts rename to packages/ridb/tests/test/schemas.test.ts diff --git a/packages/ridb/tsconfig.json b/packages/ridb/tsconfig.json new file mode 100644 index 0000000..771d7e5 --- /dev/null +++ b/packages/ridb/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "build", + "rootDir": "src", + "paths": { + "ridb-rust": ["../pkg"] + } + }, + "include": ["src"], + "exclude": ["node_modules", "dist"] +} \ No newline at end of file diff --git a/vitest.config.ts b/packages/ridb/vitest.config.ts similarity index 100% rename from vitest.config.ts rename to packages/ridb/vitest.config.ts diff --git a/performance.sh b/performance.sh deleted file mode 100644 index 3b52ef4..0000000 --- a/performance.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env bash -set -e # Exit on any error -# Initialize variables -ENVIRONMENT="" - -# Parse command-line options -while getopts e: option -do - case "${option}" in - e) ENVIRONMENT=${OPTARG};; - esac -done - -# Check required options -if [ -z "$ENVIRONMENT" ]; then - echo "Testing ESM Version on both Node and Browser environments" - - echo "Testing ESM Version on Node" - VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $NODE_ENV tests/performance-node.test.ts || { echo "Vitest tests failed"; exit 1; } - - # Check if chromedriver is installed - if ! which chromedriver > /dev/null; then - echo "Error: chromedriver is not installed. Please install chromedriver to continue." - exit 1 - fi - echo "Testing ESM Version in Browser" - VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $BROWSER_ENV tests/performance-browser.test.ts || { echo "Vitest tests failed"; exit 1; } - exit 0 -fi - -# Define test environment options -NODE_ENV="--environment node --run" -BROWSER_ENV="--environment jsdom --browser --browser.name=chrome --run" - -# Check which environment to test based on the options provided -if [ "$ENVIRONMENT" = "node" ]; then - echo "Testing ESM Version on Node" - VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $NODE_ENV tests/performance-node.test.ts || { echo "Vitest tests failed"; exit 1; } -elif [ "$ENVIRONMENT" = "browser" ]; then - # Check if chromedriver is installed - if ! which chromedriver > /dev/null; then - echo "Error: chromedriver is not installed. Please install chromedriver to continue." - exit 1 - fi - echo "Testing ESM Version in Browser" - VITE_CJS_IGNORE_WARNING=true npx vitest --config "vitest.config.ts" $BROWSER_ENV tests/performance-browser.test.ts || { echo "Vitest tests failed"; exit 1; } -else - echo "Error: Unknown environment specified. Please use '-e node' or '-e browser'." - exit 1 -fi diff --git a/publish.sh b/publish.sh deleted file mode 100644 index d417f76..0000000 --- a/publish.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e - -release_version="$1" -release_channel="$2" - -if [ -z "$release_version" ]; then - echo "Error: Missing release_version parameter." - exit 1 -fi - -# Determine the publish tag based on the release channel -if [ "$release_channel" == "rc" ]; then - publish_tag="rc" -else - publish_tag="latest" -fi - -echo "Publishing version: $release_version with tag: $publish_tag" - -# Update the version in package.json without creating a git tag -npm version "$release_version" - -# Generate the build -npm run build - -# Check if the version is already published -if npm view "@elribonazo/ridb@$release_version" > /dev/null 2>&1; then - echo "Version $release_version is already published. Skipping publication." -else - npm publish --access public --tag "$publish_tag" -fi diff --git a/tsconfig.json b/tsconfig.base.json similarity index 82% rename from tsconfig.json rename to tsconfig.base.json index d3b6716..b9383d9 100644 --- a/tsconfig.json +++ b/tsconfig.base.json @@ -12,13 +12,9 @@ "allowJs": true, "skipLibCheck": false, "lib": ["ES2022", "DOM"], - "paths": { - "ridb-rust": ["../pkg"] - } - }, "include": [ "src/**/*" ], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "build"] } diff --git a/turbo.json b/turbo.json new file mode 100644 index 0000000..f6c32dd --- /dev/null +++ b/turbo.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://turbo.build/schema.json", + "tasks": { + "build": { + "dependsOn": ["^build"], + "outputs": ["build/**"] + }, + "test": { + "persistent": true, + "cache": false + }, + "docs": { + "persistent": true, + "cache": false + }, + "dev": { + "persistent": true, + "cache": false + } + } +} \ No newline at end of file diff --git a/typedoc.json b/typedoc.json index cca0d10..865581f 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,12 +1,13 @@ { "$schema": "https://typedoc-plugin-markdown.org/schema.json", - "entryPoints": ["./src/index.ts"], + "entryPoints": [ + "./packages/ridb/src/index.ts", + ], "readme": "none", "out": "docs", "plugin": [ "typedoc-plugin-markdown", "typedoc-plugin-rename-defaults" - ], "navigationLinks": { "Docs": "https://github.com/elribonazo/RIDB.git", From 72ce2b462b4a149f1b3909f2e39988d1f816fbd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 13:56:18 +0100 Subject: [PATCH 06/35] fix: remove local package --- package-lock.json | 17 +++---- packages/ridb/node_modules/@trust0/ridb-wasm | 1 - packages/ridb/package.json | 51 ++++++++++---------- 3 files changed, 32 insertions(+), 37 deletions(-) delete mode 120000 packages/ridb/node_modules/@trust0/ridb-wasm diff --git a/package-lock.json b/package-lock.json index 7830c2b..bae4e19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,11 +50,6 @@ "classic-level": "^2.0.0" } }, - "../ridb-wasm/pkg": { - "name": "@trust0/ridb-wasm", - "version": "1.0.10", - "dev": true - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -3096,6 +3091,12 @@ "resolved": "packages/ridb", "link": true }, + "node_modules/@trust0/ridb-wasm": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@trust0/ridb-wasm/-/ridb-wasm-1.0.10.tgz", + "integrity": "sha512-l9vIKEowl/YwHwFqaqdMUxtXDIC+W3/UmBLXpZA1uIDT67aEMewJDai8GZbaMlqChu+UI5bwu2y00Q5ItZfhxg==", + "dev": true + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -15134,16 +15135,12 @@ "version": "0.10.1", "license": "Apache-2.0", "devDependencies": { - "@trust0/ridb-wasm": "file:../../../ridb-wasm/pkg" + "@trust0/ridb-wasm": "^1.0.10" }, "engines": { "node": ">=20" } }, - "packages/ridb/node_modules/@trust0/ridb-wasm": { - "resolved": "../ridb-wasm/pkg", - "link": true - }, "ridb-wasm/pkg": { "extraneous": true } diff --git a/packages/ridb/node_modules/@trust0/ridb-wasm b/packages/ridb/node_modules/@trust0/ridb-wasm deleted file mode 120000 index 5b5e692..0000000 --- a/packages/ridb/node_modules/@trust0/ridb-wasm +++ /dev/null @@ -1 +0,0 @@ -../../../../../ridb-wasm/pkg \ No newline at end of file diff --git a/packages/ridb/package.json b/packages/ridb/package.json index a3416a8..215510f 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -4,46 +4,45 @@ "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { - "access": "public" + "access": "public" }, "module": "./build/esm/index.js", "exports": { - ".": { - "import": "./build/esm/index.mjs", - "require": "./build/cjs/index.cjs", - "default": "./build/esm/index.mjs", - "types": "./build/index.d.ts" - } + ".": { + "import": "./build/esm/index.mjs", + "require": "./build/cjs/index.cjs", + "default": "./build/esm/index.mjs", + "types": "./build/index.d.ts" + } }, "author": "elribonazo@gmail.com", "types": "./build/index.d.ts", "repository": { - "type": "git", - "url": "https://github.com/trust0-project/RIDB.git" + "type": "git", + "url": "https://github.com/trust0-project/RIDB.git" }, "license": "Apache-2.0", "files": [ - "./build/**/*", - "./**/*.md" + "./build/**/*", + "./**/*.md" ], "engines": { - "node": ">=20" + "node": ">=20" }, "scripts": { - "docs": "typedoc --cleanOutputDir false", - "runtest": "npm run build && npm run test:node", - "build": "rm -rf build && npm run types && node esbuild.config.mjs", - "test": "sh test.sh", - "test:node": "sh test.sh -e node", - "test:browser": "sh test.sh -e browser", - "types":"npm run types:default && npm run types:esm && npm run types:cjs", - "types:default":"npx dts-bundle-generator src/index.ts --no-check -o ./build/index.d.ts", - "types:esm":"npx dts-bundle-generator src/index.ts --no-check -o ./build/esm/index.d.ts", - "types:cjs":"npx dts-bundle-generator src/index.ts --no-check -o ./build/cjs/index.d.ts", - "prepublishOnly": "npm run build" + "docs": "typedoc --cleanOutputDir false", + "runtest": "npm run build && npm run test:node", + "build": "rm -rf build && npm run types && node esbuild.config.mjs", + "test": "sh test.sh", + "test:node": "sh test.sh -e node", + "test:browser": "sh test.sh -e browser", + "types": "npm run types:default && npm run types:esm && npm run types:cjs", + "types:default": "npx dts-bundle-generator src/index.ts --no-check -o ./build/index.d.ts", + "types:esm": "npx dts-bundle-generator src/index.ts --no-check -o ./build/esm/index.d.ts", + "types:cjs": "npx dts-bundle-generator src/index.ts --no-check -o ./build/cjs/index.d.ts", + "prepublishOnly": "npm run build" }, "devDependencies": { - "@trust0/ridb-wasm": "file:../../../ridb-wasm/pkg" + "@trust0/ridb-wasm": "^1.0.10" } - } - \ No newline at end of file +} From e942a7da5b76924e993a53166cac6f7797160eb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 14:19:12 +0100 Subject: [PATCH 07/35] fix: clean workspace and include latest wasm version --- .gitignore | 3 +- package-lock.json | 3902 +++------------- packages/ridb/.gitignore | 5 + packages/ridb/build/cjs/index.cjs | 2733 ------------ packages/ridb/build/cjs/index.d.ts | 472 +- packages/ridb/build/esm/index.d.ts | 472 +- packages/ridb/build/esm/index.mjs | 2684 ----------- packages/ridb/build/index.d.ts | 472 +- .../node_modules/.vite/deps/_metadata.json | 79 - .../ridb/node_modules/.vite/deps/buffer.js | 1793 -------- .../node_modules/.vite/deps/buffer.js.map | 7 - .../node_modules/.vite/deps/chunk-5WRI5ZAA.js | 31 - .../.vite/deps/chunk-5WRI5ZAA.js.map | 7 - .../node_modules/.vite/deps/chunk-UCU27OGC.js | 1333 ------ .../.vite/deps/chunk-UCU27OGC.js.map | 7 - .../node_modules/.vite/deps/chunk-UJ726J2L.js | 145 - .../.vite/deps/chunk-UJ726J2L.js.map | 7 - .../ridb/node_modules/.vite/deps/package.json | 3 - packages/ridb/node_modules/.vite/deps/uuid.js | 528 --- .../ridb/node_modules/.vite/deps/uuid.js.map | 7 - ...itest___@vitest_snapshot___magic-string.js | 1640 ------- ...t___@vitest_snapshot___magic-string.js.map | 7 - ...test___@vitest_snapshot___pretty-format.js | 7 - ...___@vitest_snapshot___pretty-format.js.map | 7 - .../vitest___@vitest_utils___pretty-format.js | 7 - ...est___@vitest_utils___pretty-format.js.map | 7 - .../node_modules/.vite/deps/vitest___chai.js | 3946 ----------------- .../.vite/deps/vitest___chai.js.map | 7 - .../.vite/deps/vitest___diff-sequences.js | 485 -- .../.vite/deps/vitest___diff-sequences.js.map | 7 - .../.vite/deps/vitest___pretty-format.js | 7 - .../.vite/deps/vitest___pretty-format.js.map | 7 - .../vitest___pretty-format___ansi-regex.js | 15 - ...vitest___pretty-format___ansi-regex.js.map | 7 - .../vitest___pretty-format___ansi-styles.js | 6 - ...itest___pretty-format___ansi-styles.js.map | 7 - .../node_modules/.vite/vitest/results.json | 1 - packages/ridb/package.json | 2 +- 38 files changed, 711 insertions(+), 20151 deletions(-) create mode 100644 packages/ridb/.gitignore delete mode 100644 packages/ridb/build/cjs/index.cjs delete mode 100644 packages/ridb/build/esm/index.mjs delete mode 100644 packages/ridb/node_modules/.vite/deps/_metadata.json delete mode 100644 packages/ridb/node_modules/.vite/deps/buffer.js delete mode 100644 packages/ridb/node_modules/.vite/deps/buffer.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js delete mode 100644 packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js delete mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js delete mode 100644 packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/package.json delete mode 100644 packages/ridb/node_modules/.vite/deps/uuid.js delete mode 100644 packages/ridb/node_modules/.vite/deps/uuid.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___chai.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___chai.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js delete mode 100644 packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map delete mode 100644 packages/ridb/node_modules/.vite/vitest/results.json diff --git a/.gitignore b/.gitignore index e430734..a6407f9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ umd/* .idea coverage build/* -.turbo \ No newline at end of file +.turbo +node_modules/**/* \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bae4e19..b138d4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -349,41 +349,6 @@ "semver": "^7.5.3" } }, - "node_modules/@changesets/apply-release-plan/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@changesets/assemble-release-plan": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.5.tgz", @@ -449,67 +414,6 @@ "changeset": "bin.js" } }, - "node_modules/@changesets/cli/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/cli/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@changesets/cli/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@changesets/cli/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@changesets/config": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.5.tgz", @@ -526,41 +430,6 @@ "micromatch": "^4.0.8" } }, - "node_modules/@changesets/config/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/config/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/config/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@changesets/errors": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", @@ -641,37 +510,6 @@ "js-yaml": "^3.13.1" } }, - "node_modules/@changesets/parse/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@changesets/parse/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@changesets/parse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/@changesets/pre": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.1.tgz", @@ -685,41 +523,6 @@ "fs-extra": "^7.0.1" } }, - "node_modules/@changesets/pre/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/pre/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/pre/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@changesets/read": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.2.tgz", @@ -736,64 +539,6 @@ "picocolors": "^1.1.0" } }, - "node_modules/@changesets/read/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/read/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/read/node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@changesets/read/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@changesets/read/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@changesets/should-skip-package": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.1.tgz", @@ -825,56 +570,21 @@ "prettier": "^2.7.1" } }, - "node_modules/@changesets/write/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, + "optional": true, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=0.1.90" } }, - "node_modules/@changesets/write/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/write/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "license": "MIT", "dependencies": { @@ -1536,20 +1246,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@manypkg/find-root/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@manypkg/find-root/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -1565,88 +1261,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/@manypkg/find-root/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@manypkg/find-root/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@manypkg/find-root/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@manypkg/find-root/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@manypkg/get-packages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", @@ -1684,57 +1298,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/@manypkg/get-packages/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@manypkg/get-packages/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@manypkg/get-packages/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/get-packages/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2344,6 +1907,44 @@ "semantic-release": ">=18.0.0" } }, + "node_modules/@semantic-release/changelog/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@semantic-release/changelog/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@semantic-release/changelog/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@semantic-release/commit-analyzer": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz", @@ -2508,6 +2109,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/github/node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/github/node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", @@ -2521,38 +2143,93 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", - "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", + "node_modules/@semantic-release/github/node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, "license": "MIT", "dependencies": { - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "execa": "^9.0.0", - "fs-extra": "^11.0.0", - "lodash-es": "^4.17.21", - "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", - "npm": "^10.5.0", - "rc": "^1.2.8", - "read-pkg": "^9.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^3.0.0" + "p-map": "^7.0.1" }, "engines": { - "node": ">=20.8.1" + "node": ">=18" }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "node_modules/@semantic-release/github/node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", + "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^9.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^10.5.0", + "rc": "^1.2.8", + "read-pkg": "^9.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "license": "MIT", "engines": { @@ -2645,6 +2322,21 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/@semantic-release/npm/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@semantic-release/npm/node_modules/get-stream": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", @@ -2698,6 +2390,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/npm/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", @@ -2767,6 +2472,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/npm/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@semantic-release/release-notes-generator": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.2.tgz", @@ -3092,9 +2807,9 @@ "link": true }, "node_modules/@trust0/ridb-wasm": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@trust0/ridb-wasm/-/ridb-wasm-1.0.10.tgz", - "integrity": "sha512-l9vIKEowl/YwHwFqaqdMUxtXDIC+W3/UmBLXpZA1uIDT67aEMewJDai8GZbaMlqChu+UI5bwu2y00Q5ItZfhxg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@trust0/ridb-wasm/-/ridb-wasm-1.0.11.tgz", + "integrity": "sha512-RxhjI14CF34BcmJmYhB2SznV9fWEzaIoEbQaQf8w8lb8Ol0ixFrYCwD9bEliTZMpP2CuhMMYVgmgJuRInjZetQ==", "dev": true }, "node_modules/@tsconfig/node10": { @@ -3888,11 +3603,14 @@ "license": "MIT" }, "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==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "Python-2.0" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, "node_modules/argv-formatter": { "version": "1.0.0", @@ -4793,6 +4511,26 @@ } } }, + "node_modules/cosmiconfig/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/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", @@ -5330,6 +5068,19 @@ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -5793,19 +5544,6 @@ "node": ">=4" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -5978,16 +5716,17 @@ } }, "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/find-up-simple": { @@ -6097,18 +5836,18 @@ } }, "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=14.14" + "node": ">=6 <7 || >=8" } }, "node_modules/fs.realpath": { @@ -6348,34 +6087,21 @@ } }, "node_modules/globby": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", - "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6576,13 +6302,13 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -6757,6 +6483,13 @@ "node": ">= 12" } }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7062,13 +6795,14 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -7163,14 +6897,11 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -7282,6 +7013,16 @@ "node": ">=4" } }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/local-pkg": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", @@ -7335,17 +7076,16 @@ } }, "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/lodash": { @@ -7529,6 +7269,13 @@ "markdown-it": "bin/markdown-it.mjs" } }, + "node_modules/markdown-it/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/marked": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", @@ -8065,2646 +7812,46 @@ "npm-pick-manifest": "^10.0.0", "npm-profile": "^11.0.1", "npm-registry-fetch": "^18.0.2", - "npm-user-validate": "^3.0.0", - "p-map": "^4.0.0", - "pacote": "^19.0.1", - "parse-conflict-json": "^4.0.0", - "proc-log": "^5.0.0", - "qrcode-terminal": "^0.12.0", - "read": "^4.0.0", - "semver": "^7.6.3", - "spdx-expression-parse": "^4.0.0", - "ssri": "^12.0.0", - "supports-color": "^9.4.0", - "tar": "^6.2.1", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^3.0.0", - "validate-npm-package-name": "^6.0.0", - "which": "^5.0.0", - "write-file-atomic": "^6.0.0" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/agent": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^4.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/map-workspaces": "^4.0.1", - "@npmcli/metavuln-calculator": "^8.0.0", - "@npmcli/name-from-folder": "^3.0.0", - "@npmcli/node-gyp": "^4.0.0", - "@npmcli/package-json": "^6.0.1", - "@npmcli/query": "^4.0.0", - "@npmcli/redact": "^3.0.0", - "@npmcli/run-script": "^9.0.1", - "bin-links": "^5.0.0", - "cacache": "^19.0.1", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^8.0.0", - "json-parse-even-better-errors": "^4.0.0", - "json-stringify-nice": "^1.1.4", - "lru-cache": "^10.2.2", - "minimatch": "^9.0.4", - "nopt": "^8.0.0", - "npm-install-checks": "^7.1.0", - "npm-package-arg": "^12.0.0", - "npm-pick-manifest": "^10.0.0", - "npm-registry-fetch": "^18.0.1", - "pacote": "^19.0.0", - "parse-conflict-json": "^4.0.0", - "proc-log": "^5.0.0", - "proggy": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^3.0.1", - "read-package-json-fast": "^4.0.0", - "semver": "^7.3.7", - "ssri": "^12.0.0", - "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^4.0.1", - "@npmcli/package-json": "^6.0.1", - "ci-info": "^4.0.0", - "ini": "^5.0.0", - "nopt": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^8.0.0", - "ini": "^5.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^10.0.0", - "proc-log": "^5.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^3.0.0", - "@npmcli/package-json": "^6.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "8.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^19.0.0", - "json-parse-even-better-errors": "^4.0.0", - "pacote": "^20.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { - "version": "20.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^6.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/package-json": "^6.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "@npmcli/run-script": "^9.0.0", - "cacache": "^19.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^12.0.0", - "npm-packlist": "^9.0.0", - "npm-pick-manifest": "^10.0.0", - "npm-registry-fetch": "^18.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^3.0.0", - "ssri": "^12.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "bin/index.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "6.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^6.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^8.0.0", - "json-parse-even-better-errors": "^4.0.0", - "normalize-package-data": "^7.0.0", - "proc-log": "^5.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "8.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "which": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/query": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^6.1.2" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/redact": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "9.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^4.0.0", - "@npmcli/package-json": "^6.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "node-gyp": "^11.0.0", - "proc-log": "^5.0.0", - "which": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", - "tuf-js": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/abbrev": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/agent-base": { - "version": "7.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^7.0.0", - "npm-normalize-package-bin": "^4.0.0", - "proc-log": "^5.0.0", - "read-cmd-shim": "^5.0.0", - "write-file-atomic": "^6.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/cacache": { - "version": "19.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^4.0.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^7.0.2", - "ssri": "^12.0.0", - "tar": "^7.4.3", - "unique-filename": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/chownr": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/p-map": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/tar": { - "version": "7.4.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/chalk": { - "version": "5.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ci-info": { - "version": "4.1.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^5.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/cross-spawn": { - "version": "7.0.6", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.7", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/diff": { - "version": "5.2.0", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/npm/node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.16", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/npm/node_modules/foreground-child": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/glob": { - "version": "10.4.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "8.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ini": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/package-json": "^6.0.0", - "npm-package-arg": "^12.0.0", - "promzard": "^2.0.0", - "read": "^4.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^6.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/ip-address": { - "version": "9.0.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/is-cidr": { - "version": "5.1.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^4.1.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jackspeak": { - "version": "3.4.3", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/npm/node_modules/jsbn": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.5.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^12.0.0", - "npm-registry-fetch": "^18.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^8.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "binary-extensions": "^2.3.0", - "diff": "^5.1.0", - "minimatch": "^9.0.4", - "npm-package-arg": "^12.0.0", - "pacote": "^19.0.0", - "tar": "^6.2.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^8.0.0", - "@npmcli/run-script": "^9.0.1", - "ci-info": "^4.0.0", - "npm-package-arg": "^12.0.0", - "pacote": "^19.0.0", - "proc-log": "^5.0.0", - "read": "^4.0.0", - "read-package-json-fast": "^4.0.0", - "semver": "^7.3.7", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^8.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "11.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^18.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^18.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^8.0.0", - "@npmcli/run-script": "^9.0.1", - "npm-package-arg": "^12.0.0", - "pacote": "^19.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "10.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ci-info": "^4.0.0", - "normalize-package-data": "^7.0.0", - "npm-package-arg": "^12.0.0", - "npm-registry-fetch": "^18.0.1", - "proc-log": "^5.0.0", - "semver": "^7.3.7", - "sigstore": "^3.0.0", - "ssri": "^12.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^18.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^18.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^6.0.1", - "@npmcli/run-script": "^9.0.1", - "json-parse-even-better-errors": "^4.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "14.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^3.0.0", - "cacache": "^19.0.1", - "http-cache-semantics": "^4.1.1", - "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^1.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "ssri": "^12.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/minimatch": { - "version": "9.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/minipass": { - "version": "7.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "11.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^14.0.3", - "nopt": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "tar": "^7.4.3", - "which": "^5.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/chownr": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/tar": { - "version": "7.4.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/nopt": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/nopt/node_modules/abbrev": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^8.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "7.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "12.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^6.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^7.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "10.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^7.1.0", - "npm-normalize-package-bin": "^4.0.0", - "npm-package-arg": "^12.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-profile": { - "version": "11.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^18.0.0", - "proc-log": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "18.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/redact": "^3.0.0", - "jsonparse": "^1.3.1", - "make-fetch-happen": "^14.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minizlib": "^3.0.1", - "npm-package-arg": "^12.0.0", - "proc-log": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/package-json-from-dist": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/npm/node_modules/pacote": { - "version": "19.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^6.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/package-json": "^6.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "@npmcli/run-script": "^9.0.0", - "cacache": "^19.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^12.0.0", - "npm-packlist": "^9.0.0", - "npm-pick-manifest": "^10.0.0", - "npm-registry-fetch": "^18.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^3.0.0", - "ssri": "^12.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "bin/index.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^4.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/path-scurry": { - "version": "1.11.1", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/proc-log": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/proggy": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/npm/node_modules/read": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "^2.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm/node_modules/rimraf": { - "version": "5.0.10", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/npm/node_modules/semver": { - "version": "7.6.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/sigstore": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^3.0.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^3.0.0", - "@sigstore/tuf": "^3.0.0", - "@sigstore/verify": "^2.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^3.0.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^14.0.1", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^3.0.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks": { - "version": "2.8.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.1", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.5.0", - "dev": true, - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.20", - "dev": true, - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/sprintf-js": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/npm/node_modules/ssri": { - "version": "12.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/supports-color": { - "version": "9.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/npm/node_modules/tar": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/tuf-js": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/models": "3.0.1", - "debug": "^4.3.6", - "make-fetch-happen": "^14.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/unique-filename": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/unique-slug": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/which": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" + "npm-user-validate": "^3.0.0", + "p-map": "^4.0.0", + "pacote": "^19.0.1", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^4.0.0", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "ssri": "^12.0.0", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^6.0.0", + "which": "^5.0.0", + "write-file-atomic": "^6.0.0" }, "bin": { - "node-which": "bin/which.js" + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" }, "engines": { "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/npm/node_modules/wrap-ansi": { - "version": "8.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "path-key": "^3.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -10792,19 +7939,16 @@ } }, "node_modules/p-filter": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", - "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, "license": "MIT", "dependencies": { - "p-map": "^7.0.1" + "p-map": "^2.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/p-is-promise": { @@ -10818,42 +7962,42 @@ } }, "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/p-map": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", - "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/p-reduce": { @@ -10867,13 +8011,13 @@ } }, "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/pac-proxy-agent": { @@ -11020,13 +8164,13 @@ } }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -11114,46 +8258,119 @@ "dev": true, "license": "MIT" }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "p-limit": "^1.1.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=4" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/pkg-conf/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, "engines": { "node": ">=4" } @@ -11498,47 +8715,6 @@ "node": ">=6" } }, - "node_modules/read-yaml-file/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/read-yaml-file/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/read-yaml-file/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/read-yaml-file/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -11876,19 +9052,6 @@ "semantic-release": ">=24.1.0" } }, - "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semantic-release/node_modules/aggregate-error": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", @@ -11962,6 +9125,19 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/semantic-release/node_modules/execa/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", @@ -11992,6 +9168,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semantic-release/node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semantic-release/node_modules/hosted-git-info": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.2.tgz", @@ -12065,6 +9262,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semantic-release/node_modules/npm-run-path/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-map": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semantic-release/node_modules/p-reduce": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", @@ -12091,6 +9330,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semantic-release/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semantic-release/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -12104,23 +9356,23 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "node_modules/semantic-release/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "license": "MIT", "engines": { @@ -12380,16 +9632,13 @@ } }, "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/smart-buffer": { @@ -12548,9 +9797,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, @@ -13364,6 +10613,29 @@ "node": ">=14.14" } }, + "node_modules/typedoc-theme-hierarchy/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typedoc-theme-hierarchy/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/typedoc/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -13532,13 +10804,13 @@ "license": "ISC" }, "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" } }, "node_modules/update-browserslist-db": { @@ -14762,6 +12034,19 @@ "node": ">=18" } }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -15135,14 +12420,11 @@ "version": "0.10.1", "license": "Apache-2.0", "devDependencies": { - "@trust0/ridb-wasm": "^1.0.10" + "@trust0/ridb-wasm": "^1.0.11" }, "engines": { "node": ">=20" } - }, - "ridb-wasm/pkg": { - "extraneous": true } } } diff --git a/packages/ridb/.gitignore b/packages/ridb/.gitignore new file mode 100644 index 0000000..5f2b92d --- /dev/null +++ b/packages/ridb/.gitignore @@ -0,0 +1,5 @@ +node_modules/* +.idea +coverage +./build/**/* +.turbo \ No newline at end of file diff --git a/packages/ridb/build/cjs/index.cjs b/packages/ridb/build/cjs/index.cjs deleted file mode 100644 index 0b46c23..0000000 --- a/packages/ridb/build/cjs/index.cjs +++ /dev/null @@ -1,2733 +0,0 @@ - -if (typeof Buffer === 'undefined') { - global.Buffer = require('buffer').Buffer; -} -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); -var __async = (__this, __arguments, generator) => { - return new Promise((resolve, reject) => { - var fulfilled = (value) => { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - }; - var rejected = (value) => { - try { - step(generator.throw(value)); - } catch (e) { - reject(e); - } - }; - var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); - step((generator = generator.apply(__this, __arguments)).next()); - }); -}; - -// ../../../ridb-wasm/pkg/ridb_wasm.js -var ridb_wasm_exports = {}; -__export(ridb_wasm_exports, { - BasePlugin: () => BasePlugin, - BaseStorage: () => BaseStorage, - Collection: () => Collection, - CoreStorage: () => CoreStorage, - Database: () => Database, - InMemory: () => InMemory, - IndexDB: () => IndexDB, - OpType: () => OpType, - Operation: () => Operation, - Property: () => Property, - Query: () => Query, - Schema: () => Schema, - WasmBindgenTestContext: () => WasmBindgenTestContext, - __wbgtest_console_debug: () => __wbgtest_console_debug, - __wbgtest_console_error: () => __wbgtest_console_error, - __wbgtest_console_info: () => __wbgtest_console_info, - __wbgtest_console_log: () => __wbgtest_console_log, - __wbgtest_console_warn: () => __wbgtest_console_warn, - default: () => ridb_wasm_default, - initSync: () => initSync, - is_debug_mode: () => is_debug_mode, - main_js: () => main_js -}); -function getObject(idx) { - return heap[idx]; -} -function dropObject(idx) { - if (idx < 132) return; - heap[idx] = heap_next; - heap_next = idx; -} -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - heap[idx] = obj; - return idx; -} -function getUint8Memory0() { - if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === void 0) { - const buf = cachedTextEncoder.encode(arg); - const ptr2 = malloc(buf.length, 1) >>> 0; - getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr2; - } - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - const mem = getUint8Memory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 127) break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; - } - WASM_VECTOR_LEN = offset; - return ptr; -} -function isLikeNone(x) { - return x === void 0 || x === null; -} -function getInt32Memory0() { - if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; -} -function getFloat64Memory0() { - if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) { - cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); - } - return cachedFloat64Memory0; -} -function getBigInt64Memory0() { - if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) { - cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); - } - return cachedBigInt64Memory0; -} -function debugString(val) { - const type = typeof val; - if (type == "number" || type == "boolean" || val == null) { - return `${val}`; - } - if (type == "string") { - return `"${val}"`; - } - if (type == "symbol") { - const description = val.description; - if (description == null) { - return "Symbol"; - } else { - return `Symbol(${description})`; - } - } - if (type == "function") { - const name = val.name; - if (typeof name == "string" && name.length > 0) { - return `Function(${name})`; - } else { - return "Function"; - } - } - if (Array.isArray(val)) { - const length = val.length; - let debug = "["; - if (length > 0) { - debug += debugString(val[0]); - } - for (let i = 1; i < length; i++) { - debug += ", " + debugString(val[i]); - } - debug += "]"; - return debug; - } - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches.length > 1) { - className = builtInMatches[1]; - } else { - return toString.call(val); - } - if (className == "Object") { - try { - return "Object(" + JSON.stringify(val) + ")"; - } catch (_) { - return "Object"; - } - } - if (val instanceof Error) { - return `${val.name}: ${val.message} -${val.stack}`; - } - return className; -} -function makeMutClosure(arg0, arg1, dtor, f) { - const state = { a: arg0, b: arg1, cnt: 1, dtor }; - const real = (...args) => { - state.cnt++; - const a = state.a; - state.a = 0; - try { - return f(a, state.b, ...args); - } finally { - if (--state.cnt === 0) { - wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); - CLOSURE_DTORS.unregister(state); - } else { - state.a = a; - } - } - }; - real.original = state; - CLOSURE_DTORS.register(real, state, state); - return real; -} -function __wbg_adapter_56(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h30fcf24f930ac73b(arg0, arg1, addHeapObject(arg2)); -} -function __wbg_adapter_59(arg0, arg1, arg2) { - const ret = wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0343af3ff210bc6c(arg0, arg1, addHeapObject(arg2)); - return takeObject(ret); -} -function makeClosure(arg0, arg1, dtor, f) { - const state = { a: arg0, b: arg1, cnt: 1, dtor }; - const real = (...args) => { - state.cnt++; - try { - return f(state.a, state.b, ...args); - } finally { - if (--state.cnt === 0) { - wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); - state.a = 0; - CLOSURE_DTORS.unregister(state); - } - } - }; - real.original = state; - CLOSURE_DTORS.register(real, state, state); - return real; -} -function __wbg_adapter_62(arg0, arg1, arg2, arg3, arg4) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm._dyn_core__ops__function__Fn__A_B_C___Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h083305484f53f562(retptr, arg0, arg1, addHeapObject(arg2), addHeapObject(arg3), addHeapObject(arg4)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } -} -function __wbg_adapter_67(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd0b7b7031e33a384(arg0, arg1, addHeapObject(arg2)); -} -function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } - return instance.ptr; -} -function getUint32Memory0() { - if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { - cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); - } - return cachedUint32Memory0; -} -function getArrayJsValueFromWasm0(ptr, len) { - ptr = ptr >>> 0; - const mem = getUint32Memory0(); - const slice = mem.subarray(ptr / 4, ptr / 4 + len); - const result = []; - for (let i = 0; i < slice.length; i++) { - result.push(takeObject(slice[i])); - } - return result; -} -function passArrayJsValueToWasm0(array, malloc) { - const ptr = malloc(array.length * 4, 4) >>> 0; - const mem = getUint32Memory0(); - for (let i = 0; i < array.length; i++) { - mem[ptr / 4 + i] = addHeapObject(array[i]); - } - WASM_VECTOR_LEN = array.length; - return ptr; -} -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)); - } -} -function main_js() { - wasm.main_js(); -} -function is_debug_mode() { - const ret = wasm.is_debug_mode(); - return ret !== 0; -} -function addBorrowedObject(obj) { - if (stack_pointer == 1) throw new Error("out of js stack"); - heap[--stack_pointer] = obj; - return stack_pointer; -} -function __wbgtest_console_log(args) { - try { - wasm.__wbgtest_console_log(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_debug(args) { - try { - wasm.__wbgtest_console_debug(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_info(args) { - try { - wasm.__wbgtest_console_info(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_warn(args) { - try { - wasm.__wbgtest_console_warn(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_error(args) { - try { - wasm.__wbgtest_console_error(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbg_adapter_253(arg0, arg1) { - wasm.wasm_bindgen__convert__closures__invoke0_mut__h831654003a8114c2(arg0, arg1); -} -function __wbg_adapter_296(arg0, arg1, arg2, arg3, arg4) { - wasm.wasm_bindgen__convert__closures__invoke3_mut__h79ad1c6e6a197be2(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); -} -function __wbg_adapter_347(arg0, arg1, arg2, arg3) { - wasm.wasm_bindgen__convert__closures__invoke2_mut__h33b30c564f43a8a5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); -} -function __wbg_load(module2, imports) { - return __async(this, null, function* () { - if (typeof Response === "function" && module2 instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return yield WebAssembly.instantiateStreaming(module2, imports); - } catch (e) { - if (module2.headers.get("Content-Type") != "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } else { - throw e; - } - } - } - const bytes = yield module2.arrayBuffer(); - return yield WebAssembly.instantiate(bytes, imports); - } else { - const instance = yield WebAssembly.instantiate(module2, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module: module2 }; - } else { - return instance; - } - } - }); -} -function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_undefined = function(arg0) { - const ret = getObject(arg0) === void 0; - return ret; - }; - imports.wbg.__wbindgen_is_null = function(arg0) { - const ret = getObject(arg0) === null; - return ret; - }; - imports.wbg.__wbg_inmemory_new = function(arg0) { - const ret = InMemory.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_findDocumentById_3c953e7cb816631f = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).findDocumentById(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_write_5ed217718c943bb6 = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).write(Operation.__wrap(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_indexdb_new = function(arg0) { - const ret = IndexDB.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_close_9079d609f51f315b = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).close(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_number_new = function(arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_string_get = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof obj === "string" ? obj : void 0; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbindgen_number_get = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof obj === "number" ? obj : void 0; - getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbg_count_56b737f3e1f9808b = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).count(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_start_8e90ba4b9a66ad6d = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).start(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_apply_5cc20a9c59aa42cc = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg1).apply(takeObject(arg2)); - const ptr1 = passArrayJsValueToWasm0(ret, wasm.__wbindgen_malloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }, arguments); - }; - imports.wbg.__wbg_database_new = function(arg0) { - const ret = Database.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_find_4fb73c61983f3303 = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).find(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_collection_new = function(arg0) { - const ret = Collection.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_function = function(arg0) { - const ret = typeof getObject(arg0) === "function"; - return ret; - }; - imports.wbg.__wbindgen_is_string = function(arg0) { - const ret = typeof getObject(arg0) === "string"; - return ret; - }; - imports.wbg.__wbindgen_is_array = function(arg0) { - const ret = Array.isArray(getObject(arg0)); - return ret; - }; - imports.wbg.__wbindgen_is_object = function(arg0) { - const val = getObject(arg0); - const ret = typeof val === "object" && val !== null; - return ret; - }; - imports.wbg.__wbindgen_is_falsy = function(arg0) { - const ret = !getObject(arg0); - return ret; - }; - imports.wbg.__wbindgen_is_bigint = function(arg0) { - const ret = typeof getObject(arg0) === "bigint"; - return ret; - }; - imports.wbg.__wbindgen_error_new = function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_boolean_get = function(arg0) { - const v = getObject(arg0); - const ret = typeof v === "boolean" ? v ? 1 : 0 : 2; - return ret; - }; - imports.wbg.__wbindgen_in = function(arg0, arg1) { - const ret = getObject(arg0) in getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_bigint_from_i64 = function(arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { - const ret = getObject(arg0) === getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_bigint_from_u64 = function(arg0) { - const ret = BigInt.asUintN(64, arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_cb_drop = function(arg0) { - const obj = takeObject(arg0).original; - if (obj.cnt-- == 1) { - obj.a = 0; - return true; - } - const ret = false; - return ret; - }; - imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) { - const ret = getObject(arg0).crypto; - return addHeapObject(ret); - }; - imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) { - const ret = getObject(arg0).process; - return addHeapObject(ret); - }; - imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) { - const ret = getObject(arg0).versions; - return addHeapObject(ret); - }; - imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) { - const ret = getObject(arg0).node; - return addHeapObject(ret); - }; - imports.wbg.__wbg_require_cca90b1a94a0255b = function() { - return handleError(function() { - const ret = module.require; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) { - const ret = getObject(arg0).msCrypto; - return addHeapObject(ret); - }; - imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { - return handleError(function(arg0, arg1) { - getObject(arg0).randomFillSync(takeObject(arg1)); - }, arguments); - }; - imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { - return handleError(function(arg0, arg1) { - getObject(arg0).getRandomValues(getObject(arg1)); - }, arguments); - }; - imports.wbg.__wbg_instanceof_Window_f401953a2cf86220 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Window; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_localStorage_e381d34d0c40c761 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).localStorage; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_indexedDB_7c51d9056667f4e0 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).indexedDB; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_open_f0d7259fd7e689ce = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), arg3 >>> 0); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_getItem_164e8e5265095b87 = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }, arguments); - }; - imports.wbg.__wbg_error_8e3928cfb8a43e2b = function(arg0) { - console.error(getObject(arg0)); - }; - imports.wbg.__wbg_log_5bb5f88f245d7762 = function(arg0) { - console.log(getObject(arg0)); - }; - imports.wbg.__wbg_length_9ae5daf9a690cba9 = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_contains_c65b44400b549286 = function(arg0, arg1, arg2) { - const ret = getObject(arg0).contains(getStringFromWasm0(arg1, arg2)); - return ret; - }; - imports.wbg.__wbg_get_910bbb94abdcf488 = function(arg0, arg1, arg2) { - const ret = getObject(arg1)[arg2 >>> 0]; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_target_2fc177e386c8b7b0 = function(arg0) { - const ret = getObject(arg0).target; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_IdbOpenDbRequest_3f4a166bc0340578 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof IDBOpenDBRequest; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_setonupgradeneeded_ad7645373c7d5e1b = function(arg0, arg1) { - getObject(arg0).onupgradeneeded = getObject(arg1); - }; - imports.wbg.__wbg_instanceof_IdbRequest_93249da04f5370b6 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof IDBRequest; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_result_6cedf5f78600a79c = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).result; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_error_685b20024dc2d6ca = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).error; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_setonsuccess_632ce0a1460455c2 = function(arg0, arg1) { - getObject(arg0).onsuccess = getObject(arg1); - }; - imports.wbg.__wbg_setonerror_8479b33e7568a904 = function(arg0, arg1) { - getObject(arg0).onerror = getObject(arg1); - }; - imports.wbg.__wbg_setoncomplete_d8e4236665cbf1e2 = function(arg0, arg1) { - getObject(arg0).oncomplete = getObject(arg1); - }; - imports.wbg.__wbg_setonerror_da071ec94e148397 = function(arg0, arg1) { - getObject(arg0).onerror = getObject(arg1); - }; - imports.wbg.__wbg_objectStore_da468793bd9df17b = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).objectStore(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_instanceof_IdbDatabase_db671cf2454a9542 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof IDBDatabase; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_objectStoreNames_588b5924274239fd = function(arg0) { - const ret = getObject(arg0).objectStoreNames; - return addHeapObject(ret); - }; - imports.wbg.__wbg_close_6bfe4ca2fe67cb67 = function(arg0) { - getObject(arg0).close(); - }; - imports.wbg.__wbg_createObjectStore_882f2f6b1b1ef040 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).createObjectStore(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_transaction_c32bb10c9c692f4b = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_transaction_1e282a79e9bb7387 = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_delete_f60bba7d0ae59a4f = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).delete(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_get_5361b64cac0d0826 = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).get(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_getAll_2782e438df699384 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).getAll(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_put_22792e17580ca18b = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).put(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) { - const ret = getObject(arg0) == getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_as_number = function(arg0) { - const ret = +getObject(arg0); - return ret; - }; - imports.wbg.__wbg_String_389b54bd9d25375f = function(arg0, arg1) { - const ret = String(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_getwithrefkey_4a92a5eca60879b9 = function(arg0, arg1) { - const ret = getObject(arg0)[getObject(arg1)]; - return addHeapObject(ret); - }; - imports.wbg.__wbg_set_9182712abebf82ef = function(arg0, arg1, arg2) { - getObject(arg0)[takeObject(arg1)] = takeObject(arg2); - }; - imports.wbg.__wbg_log_28eee4e6432efd24 = function(arg0, arg1) { - console.log(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbg_String_55b8bdc4bc243677 = function(arg0, arg1) { - const ret = String(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_getElementById_8458f2a6c28467dc = function(arg0, arg1, arg2) { - const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_settextcontent_fc3ff485b96fcb1d = function(arg0, arg1, arg2) { - getObject(arg0).textContent = getStringFromWasm0(arg1, arg2); - }; - imports.wbg.__wbg_wbgtestinvoke_8c20f4132af2bded = function() { - return handleError(function(arg0, arg1) { - try { - var state0 = { a: arg0, b: arg1 }; - var cb0 = () => { - const a = state0.a; - state0.a = 0; - try { - return __wbg_adapter_253(a, state0.b); - } finally { - state0.a = a; - } - }; - __wbg_test_invoke(cb0); - } finally { - state0.a = state0.b = 0; - } - }, arguments); - }; - imports.wbg.__wbg_wbgtestoutputwriteln_4db3bd64914ec955 = function(arg0) { - __wbg_test_output_writeln(takeObject(arg0)); - }; - imports.wbg.__wbg_stack_436273c21658169b = function(arg0) { - const ret = getObject(arg0).stack; - return addHeapObject(ret); - }; - imports.wbg.__wbg_static_accessor_document_d4b6ae7f5578480f = function() { - const ret = document; - return addHeapObject(ret); - }; - imports.wbg.__wbg_stack_17c77e9f5bfe6714 = function(arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_self_55106357ec10ecd4 = function(arg0) { - const ret = getObject(arg0).self; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_constructor_fd0d22d60b7dfd72 = function(arg0) { - const ret = getObject(arg0).constructor; - return addHeapObject(ret); - }; - imports.wbg.__wbg_name_7f439d24ff7ba1d3 = function(arg0, arg1) { - const ret = getObject(arg1).name; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_textcontent_67e4e811cbdf00fc = function(arg0, arg1) { - const ret = getObject(arg1).textContent; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_stack_44743fb7d71926a0 = function(arg0) { - const ret = getObject(arg0).stack; - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_abda76e883ba8a5f = function() { - const ret = new Error(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } - }; - imports.wbg.__wbg_queueMicrotask_3cbae2ec6b6cd3d6 = function(arg0) { - const ret = getObject(arg0).queueMicrotask; - return addHeapObject(ret); - }; - imports.wbg.__wbg_queueMicrotask_481971b0d87f3dd4 = function(arg0) { - queueMicrotask(getObject(arg0)); - }; - imports.wbg.__wbg_get_bd8e338fbd5f5cc8 = function(arg0, arg1) { - const ret = getObject(arg0)[arg1 >>> 0]; - return addHeapObject(ret); - }; - imports.wbg.__wbg_length_cd7af8117672b8b8 = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_new_16b304a2cfa7ff4a = function() { - const ret = new Array(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_newnoargs_e258087cd0daa0ea = function(arg0, arg1) { - const ret = new Function(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_d9bc3a0147634640 = function() { - const ret = /* @__PURE__ */ new Map(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_next_40fc327bfc8770e6 = function(arg0) { - const ret = getObject(arg0).next; - return addHeapObject(ret); - }; - imports.wbg.__wbg_next_196c84450b364254 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).next(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_done_298b57d23c0fc80c = function(arg0) { - const ret = getObject(arg0).done; - return ret; - }; - imports.wbg.__wbg_value_d93c65011f51a456 = function(arg0) { - const ret = getObject(arg0).value; - return addHeapObject(ret); - }; - imports.wbg.__wbg_iterator_2cee6dadfd956dfa = function() { - const ret = Symbol.iterator; - return addHeapObject(ret); - }; - imports.wbg.__wbg_get_e3c254076557e348 = function() { - return handleError(function(arg0, arg1) { - const ret = Reflect.get(getObject(arg0), getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_call_27c0f87801dedf93 = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_new_72fb9a18b5ae2624 = function() { - const ret = new Object(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_self_ce0dbfc45cf2f5be = function() { - return handleError(function() { - const ret = self.self; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_window_c6fb939a7f436783 = function() { - return handleError(function() { - const ret = window.window; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_globalThis_d1e6af4856ba331b = function() { - return handleError(function() { - const ret = globalThis.globalThis; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_global_207b558942527489 = function() { - return handleError(function() { - const ret = global.global; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_set_d4638f722068f043 = function(arg0, arg1, arg2) { - getObject(arg0)[arg1 >>> 0] = takeObject(arg2); - }; - imports.wbg.__wbg_from_89e3fc3ba5e6fb48 = function(arg0) { - const ret = Array.from(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_forEach_2be8de7347d63332 = function(arg0, arg1, arg2) { - try { - var state0 = { a: arg1, b: arg2 }; - var cb0 = (arg02, arg12, arg22) => { - const a = state0.a; - state0.a = 0; - try { - return __wbg_adapter_296(a, state0.b, arg02, arg12, arg22); - } finally { - state0.a = a; - } - }; - getObject(arg0).forEach(cb0); - } finally { - state0.a = state0.b = 0; - } - }; - imports.wbg.__wbg_isArray_2ab64d95e09ea0ae = function(arg0) { - const ret = Array.isArray(getObject(arg0)); - return ret; - }; - imports.wbg.__wbg_of_4a2b313a453ec059 = function(arg0) { - const ret = Array.of(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_push_a5b05aedc7234f9f = function(arg0, arg1) { - const ret = getObject(arg0).push(getObject(arg1)); - return ret; - }; - imports.wbg.__wbg_instanceof_ArrayBuffer_836825be07d4c9d2 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof ArrayBuffer; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_new_28c511d9baebfa89 = function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_message_5bf28016c2b49cfb = function(arg0) { - const ret = getObject(arg0).message; - return addHeapObject(ret); - }; - imports.wbg.__wbg_name_e7429f0dda6079e2 = function(arg0) { - const ret = getObject(arg0).name; - return addHeapObject(ret); - }; - imports.wbg.__wbg_call_b3ca7c6051f9bec1 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_call_938992c832f74314 = function() { - return handleError(function(arg0, arg1, arg2, arg3, arg4) { - const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3), getObject(arg4)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_set_8417257aaedc936b = function(arg0, arg1, arg2) { - const ret = getObject(arg0).set(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_isSafeInteger_f7b04ef02296c4d2 = function(arg0) { - const ret = Number.isSafeInteger(getObject(arg0)); - return ret; - }; - imports.wbg.__wbg_entries_95cc2c823b285a09 = function(arg0) { - const ret = Object.entries(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_is_010fdc0f4ab96916 = function(arg0, arg1) { - const ret = Object.is(getObject(arg0), getObject(arg1)); - return ret; - }; - imports.wbg.__wbg_keys_91e412b4b222659f = function(arg0) { - const ret = Object.keys(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_81740750da40724f = function(arg0, arg1) { - try { - var state0 = { a: arg0, b: arg1 }; - var cb0 = (arg02, arg12) => { - const a = state0.a; - state0.a = 0; - try { - return __wbg_adapter_347(a, state0.b, arg02, arg12); - } finally { - state0.a = a; - } - }; - const ret = new Promise(cb0); - return addHeapObject(ret); - } finally { - state0.a = state0.b = 0; - } - }; - imports.wbg.__wbg_resolve_b0083a7967828ec8 = function(arg0) { - const ret = Promise.resolve(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_then_0c86a60e8fcfe9f6 = function(arg0, arg1) { - const ret = getObject(arg0).then(getObject(arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_then_a73caa9a87991566 = function(arg0, arg1, arg2) { - const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); - }; - imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); - }; - imports.wbg.__wbg_length_c20a40f15020d68a = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Uint8Array; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_newwithlength_e9b4878cebadb3d3 = function(arg0) { - const ret = new Uint8Array(arg0 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_subarray_a1f73cd4b5b42fe1 = function(arg0, arg1, arg2) { - const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_apply_0a5aa603881e6d79 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = Reflect.apply(getObject(arg0), getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_deleteProperty_13e721a56f19e842 = function() { - return handleError(function(arg0, arg1) { - const ret = Reflect.deleteProperty(getObject(arg0), getObject(arg1)); - return ret; - }, arguments); - }; - imports.wbg.__wbg_set_1f9b04f170055d33 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); - return ret; - }, arguments); - }; - imports.wbg.__wbg_parse_66d1801634e099ac = function() { - return handleError(function(arg0, arg1) { - const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_stringify_8887fe74e1c50d81 = function() { - return handleError(function(arg0) { - const ret = JSON.stringify(getObject(arg0)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { - const v = getObject(arg1); - const ret = typeof v === "bigint" ? v : void 0; - getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { - const ret = debugString(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbindgen_memory = function() { - const ret = wasm.memory; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper537 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper539 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_59); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper541 = function(arg0, arg1, arg2) { - const ret = makeClosure(arg0, arg1, 220, __wbg_adapter_62); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper543 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper1352 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 373, __wbg_adapter_67); - return addHeapObject(ret); - }; - return imports; -} -function __wbg_init_memory(imports, maybe_memory) { -} -function __wbg_finalize_init(instance, module2) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module2; - cachedBigInt64Memory0 = null; - cachedFloat64Memory0 = null; - cachedInt32Memory0 = null; - cachedUint32Memory0 = null; - cachedUint8Memory0 = null; - wasm.__wbindgen_start(); - return wasm; -} -function initSync(module2) { - if (wasm !== void 0) return wasm; - const imports = __wbg_get_imports(); - __wbg_init_memory(imports); - if (!(module2 instanceof WebAssembly.Module)) { - module2 = new WebAssembly.Module(module2); - } - const instance = new WebAssembly.Instance(module2, imports); - return __wbg_finalize_init(instance, module2); -} -function __wbg_init(input) { - return __async(this, null, function* () { - if (wasm !== void 0) return wasm; - const imports = __wbg_get_imports(); - if (typeof input === "string" || typeof Request === "function" && input instanceof Request || typeof URL === "function" && input instanceof URL) { - input = fetch(input); - } - __wbg_init_memory(imports); - const { instance, module: module2 } = yield __wbg_load(yield input, imports); - return __wbg_finalize_init(instance, module2); - }); -} -var wasm, heap, heap_next, cachedTextDecoder, cachedUint8Memory0, WASM_VECTOR_LEN, cachedTextEncoder, encodeString, cachedInt32Memory0, cachedFloat64Memory0, cachedBigInt64Memory0, CLOSURE_DTORS, cachedUint32Memory0, stack_pointer, OpType, BasePluginFinalization, BasePlugin, BaseStorageFinalization, BaseStorage, CollectionFinalization, Collection, CoreStorageFinalization, CoreStorage, DatabaseFinalization, Database, InMemoryFinalization, InMemory, IndexDBFinalization, IndexDB, OperationFinalization, Operation, PropertyFinalization, Property, QueryFinalization, Query, SchemaFinalization, Schema, WasmBindgenTestContextFinalization, WasmBindgenTestContext, ridb_wasm_default; -var init_ridb_wasm = __esm({ - "../../../ridb-wasm/pkg/ridb_wasm.js"() { - heap = new Array(128).fill(void 0); - heap.push(void 0, null, true, false); - heap_next = heap.length; - cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => { - throw Error("TextDecoder not available"); - } }; - if (typeof TextDecoder !== "undefined") { - cachedTextDecoder.decode(); - } - cachedUint8Memory0 = null; - WASM_VECTOR_LEN = 0; - cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => { - throw Error("TextEncoder not available"); - } }; - encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) { - return cachedTextEncoder.encodeInto(arg, view); - } : function(arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - }; - cachedInt32Memory0 = null; - cachedFloat64Memory0 = null; - cachedBigInt64Memory0 = null; - CLOSURE_DTORS = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((state) => { - wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); - }); - cachedUint32Memory0 = null; - stack_pointer = 128; - OpType = Object.freeze({ - /** - * Create operation. - */ - CREATE: 0, - "0": "CREATE", - /** - * Update operation. - */ - UPDATE: 1, - "1": "UPDATE", - /** - * Delete operation. - */ - DELETE: 2, - "2": "DELETE", - /** - * Query Operation. - */ - QUERY: 3, - "3": "QUERY", - /** - * Count Operation. - */ - COUNT: 4, - "4": "COUNT" - }); - BasePluginFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_baseplugin_free(ptr >>> 0)); - BasePlugin = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - BasePluginFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_baseplugin_free(ptr); - } - /** - * @param {string} name - */ - constructor(name) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.baseplugin_new(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - this.__wbg_ptr = r0 >>> 0; - return this; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {any} - */ - get name() { - const ret = wasm.baseplugin_name(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {any} - */ - get docCreateHook() { - const ret = wasm.baseplugin_get_doc_create_hook(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {any} - */ - get docRecoverHook() { - const ret = wasm.baseplugin_get_doc_recover_hook(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @param {any} hook - */ - set docCreateHook(hook) { - wasm.baseplugin_set_doc_create_hook(this.__wbg_ptr, addHeapObject(hook)); - } - /** - * @param {any} hook - */ - set docRecoverHook(hook) { - wasm.baseplugin_set_doc_recover_hook(this.__wbg_ptr, addHeapObject(hook)); - } - }; - BaseStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_basestorage_free(ptr >>> 0)); - BaseStorage = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - BaseStorageFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_basestorage_free(ptr); - } - /** - * Creates a new `BaseStorage` instance with the provided name and schema type. - * - * # Arguments - * - * * `name` - The name of the storage. - * * `schema_type` - The schema type in `JsValue` format. - * - * # Returns - * - * * `Result` - A result containing the new `BaseStorage` instance or an error. - * @param {string} name - * @param {object} schemas_js - * @param {object | undefined} [options] - */ - constructor(name, schemas_js, options) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.basestorage_new(retptr, ptr0, len0, addHeapObject(schemas_js), isLikeNone(options) ? 0 : addHeapObject(options)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - this.__wbg_ptr = r0 >>> 0; - return this; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {string} name - * @returns {any} - */ - getOption(name) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.basestorage_getOption(retptr, this.__wbg_ptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {string} name - * @returns {Schema} - */ - getSchema(name) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.basestorage_getSchema(retptr, this.__wbg_ptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return Schema.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {CoreStorage} - */ - get core() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.basestorage_core(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CoreStorage.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - CollectionFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_collection_free(ptr >>> 0)); - Collection = class _Collection { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Collection.prototype); - obj.__wbg_ptr = ptr; - CollectionFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - CollectionFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_collection_free(ptr); - } - /** - * @returns {string} - */ - get name() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.collection_name(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * @returns {Schema} - */ - get schema() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.collection_schema(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return Schema.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Finds and returns all documents in the collection. - * - * This function is asynchronous and returns a `Schema` representing - * the documents found in the collection. - * @param {any} query - * @returns {Promise} - */ - find(query) { - const ret = wasm.collection_find(this.__wbg_ptr, addHeapObject(query)); - return takeObject(ret); - } - /** - * counts and returns all documents in the collection. - * - * This function is asynchronous and returns a `Schema` representing - * the documents found in the collection. - * @param {any} query - * @returns {Promise} - */ - count(query) { - const ret = wasm.collection_count(this.__wbg_ptr, addHeapObject(query)); - return takeObject(ret); - } - /** - * Finds and returns a single document in the collection by its ID. - * - * This function is asynchronous. - * @param {any} primary_key - * @returns {Promise} - */ - findById(primary_key) { - const ret = wasm.collection_findById(this.__wbg_ptr, addHeapObject(primary_key)); - return takeObject(ret); - } - /** - * Updates a document in the collection with the given data. - * - * This function is asynchronous and returns a `Result` indicating success or failure. - * - * # Arguments - * - * * `document` - A `JsValue` representing the partial document to update. - * @param {any} document - * @returns {Promise} - */ - update(document2) { - const ret = wasm.collection_update(this.__wbg_ptr, addHeapObject(document2)); - return takeObject(ret); - } - /** - * Creates a new document in the collection. - * - * This function is asynchronous and returns a `Result` indicating success or failure. - * - * # Arguments - * - * * `document` - A `JsValue` representing the document to create. - * @param {any} document - * @returns {Promise} - */ - create(document2) { - const ret = wasm.collection_create(this.__wbg_ptr, addHeapObject(document2)); - return takeObject(ret); - } - /** - * Deletes a document from the collection by its ID. - * - * This function is asynchronous. - * @param {any} primary_key - * @returns {Promise} - */ - delete(primary_key) { - const ret = wasm.collection_delete(this.__wbg_ptr, addHeapObject(primary_key)); - return takeObject(ret); - } - }; - CoreStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_corestorage_free(ptr >>> 0)); - CoreStorage = class _CoreStorage { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_CoreStorage.prototype); - obj.__wbg_ptr = ptr; - CoreStorageFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - CoreStorageFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_corestorage_free(ptr); - } - /** - */ - constructor() { - const ret = wasm.corestorage_new(); - this.__wbg_ptr = ret >>> 0; - return this; - } - /** - * @param {any} document - * @param {Query} query - * @returns {boolean} - */ - matchesQuery(document2, query) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(query, Query); - wasm.corestorage_matchesQuery(retptr, this.__wbg_ptr, addBorrowedObject(document2), query.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - heap[stack_pointer++] = void 0; - } - } - }; - DatabaseFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_database_free(ptr >>> 0)); - Database = class _Database { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Database.prototype); - obj.__wbg_ptr = ptr; - DatabaseFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - DatabaseFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_database_free(ptr); - } - /** - * @returns {Promise} - */ - start() { - const ret = wasm.database_start(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - close() { - const ptr = this.__destroy_into_raw(); - const ret = wasm.database_close(ptr); - return takeObject(ret); - } - /** - * @returns {boolean} - */ - get started() { - const ret = wasm.database_started(this.__wbg_ptr); - return ret !== 0; - } - /** - * Retrieves the collections in the database. - * - * This function returns an `Object` containing the collections. - * - * # Returns - * - * * `Result` - A result containing an `Object` with the collections or an error. - * @returns {object} - */ - get collections() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.database_collections(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {string} db_name - * @param {object} schemas_js - * @param {object} migrations_js - * @param {Array} plugins - * @param {any} module - * @param {string | undefined} [password] - * @param {any | undefined} [storage] - * @returns {Promise} - */ - static create(db_name, schemas_js, migrations_js, plugins, module2, password, storage) { - const ptr0 = passStringToWasm0(db_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - var ptr1 = isLikeNone(password) ? 0 : passStringToWasm0(password, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - const ret = wasm.database_create(ptr0, len0, addHeapObject(schemas_js), addHeapObject(migrations_js), addHeapObject(plugins), addHeapObject(module2), ptr1, len1, isLikeNone(storage) ? 0 : addHeapObject(storage)); - return takeObject(ret); - } - }; - InMemoryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_inmemory_free(ptr >>> 0)); - InMemory = class _InMemory { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_InMemory.prototype); - obj.__wbg_ptr = ptr; - InMemoryFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - InMemoryFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_inmemory_free(ptr); - } - /** - * @param {string} name - * @param {object} schemas_js - * @returns {Promise} - */ - static create(name, schemas_js) { - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_create(ptr0, len0, addHeapObject(schemas_js)); - return takeObject(ret); - } - /** - * @returns {any} - */ - get by_index() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.inmemory_by_index(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Operation} op - * @returns {Promise} - */ - write(op) { - _assertClass(op, Operation); - const ret = wasm.inmemory_write(this.__wbg_ptr, op.__wbg_ptr); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - find(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} primary_key - * @returns {Promise} - */ - findDocumentById(collection_name, primary_key) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - count(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - close() { - const ret = wasm.inmemory_close(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - start() { - const ret = wasm.inmemory_start(this.__wbg_ptr); - return takeObject(ret); - } - }; - IndexDBFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_indexdb_free(ptr >>> 0)); - IndexDB = class _IndexDB { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_IndexDB.prototype); - obj.__wbg_ptr = ptr; - IndexDBFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - IndexDBFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_indexdb_free(ptr); - } - /** - * @param {string} name - * @param {object} schemas_js - * @returns {Promise} - */ - static create(name, schemas_js) { - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_create(ptr0, len0, addHeapObject(schemas_js)); - return takeObject(ret); - } - /** - * @param {Operation} op - * @returns {Promise} - */ - write(op) { - _assertClass(op, Operation); - const ret = wasm.indexdb_write(this.__wbg_ptr, op.__wbg_ptr); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - find(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} primary_key - * @returns {Promise} - */ - findDocumentById(collection_name, primary_key) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - count(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - close() { - const ret = wasm.indexdb_close(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - start() { - const ret = wasm.indexdb_start(this.__wbg_ptr); - return takeObject(ret); - } - }; - OperationFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_operation_free(ptr >>> 0)); - Operation = class _Operation { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Operation.prototype); - obj.__wbg_ptr = ptr; - OperationFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - OperationFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_operation_free(ptr); - } - /** - * Retrieves the name of the collection. - * - * # Returns - * - * * `String` - The name of the collection. - * @returns {string} - */ - get collection() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.operation_collection(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * Retrieves the type of operation. - * - * # Returns - * - * * `OpType` - The type of operation. - * @returns {OpType} - */ - get opType() { - const ret = wasm.operation_opType(this.__wbg_ptr); - return ret; - } - /** - * Retrieves the data involved in the operation. - * - * # Returns - * - * * `JsValue` - The data involved in the operation. - * @returns {any} - */ - get data() { - const ret = wasm.operation_data(this.__wbg_ptr); - return takeObject(ret); - } - /** - * Retrieves the indexes related to the operation. - * - * # Returns - * - * * `Result` - A result containing the indexes as a `JsValue` or an error. - * @returns {any} - */ - get indexes() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.operation_indexes(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - PropertyFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_property_free(ptr >>> 0)); - Property = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - PropertyFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_property_free(ptr); - } - /** - * Checks is the schema is valid. - * - * # Returns - * - * Throws exception if not valid - * @returns {boolean} - */ - is_valid() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_is_valid(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the type of the property. - * - * # Returns - * - * * `PropertyType` - The type of the property. - * @returns {any} - */ - get type() { - const ret = wasm.property_type(this.__wbg_ptr); - return takeObject(ret); - } - /** - * Retrieves the items of the property. - * - * # Returns - * - * * `Result` - A result containing the items as a `JsValue` or an error. - * @returns {any} - */ - get items() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_items(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the maximum number of items of the property. - * - * # Returns - * - * * `Result` - A result containing the maximum number of items as a `JsValue` or an error. - * @returns {any} - */ - get maxItems() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_maxItems(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the minimum number of items of the property. - * - * # Returns - * - * * `Result` - A result containing the minimum number of items as a `JsValue` or an error. - * @returns {any} - */ - get minItems() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_minItems(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the maximum length of the property. - * - * # Returns - * - * * `Result` - A result containing the maximum length as a `JsValue` or an error. - * @returns {any} - */ - get maxLength() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_maxLength(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the minimum length of the property. - * - * # Returns - * - * * `Result` - A result containing the minimum length as a `JsValue` or an error. - * @returns {any} - */ - get minLength() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_minLength(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the nested properties of the property. - * - * # Returns - * - * * `Result` - A result containing the nested properties as a `JsValue` or an error. - * @returns {any} - */ - get properties() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_properties(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - QueryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_query_free(ptr >>> 0)); - Query = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - QueryFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_query_free(ptr); - } - /** - * @param {any} query - * @param {Schema} schema - */ - constructor(query, schema) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(schema, Schema); - var ptr0 = schema.__destroy_into_raw(); - wasm.query_new(retptr, addHeapObject(query), ptr0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - this.__wbg_ptr = r0 >>> 0; - return this; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {any} - */ - get query() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.query_query(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {any} - */ - parse() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.query_parse(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - SchemaFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_schema_free(ptr >>> 0)); - Schema = class _Schema { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Schema.prototype); - obj.__wbg_ptr = ptr; - SchemaFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - SchemaFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_schema_free(ptr); - } - /** - * @param {any} document - */ - validate_schema(document2) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_validate_schema(retptr, this.__wbg_ptr, addHeapObject(document2)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - if (r1) { - throw takeObject(r0); - } - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {boolean} - */ - is_valid() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_is_valid(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Creates a new `Schema` instance from a given `JsValue`. - * - * # Arguments - * - * * `schema` - A `JsValue` representing the schema. - * - * # Returns - * - * * `Result` - A result containing the new `Schema` instance or an error. - * @param {any} schema - * @returns {Schema} - */ - static create(schema) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_create(retptr, addHeapObject(schema)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return _Schema.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the version of the schema. - * - * # Returns - * - * * `i32` - The version of the schema. - * @returns {number} - */ - get version() { - const ret = wasm.schema_version(this.__wbg_ptr); - return ret; - } - /** - * Retrieves the primary key of the schema. - * - * # Returns - * - * * `String` - The primary key of the schema. - * @returns {string} - */ - get primaryKey() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_primaryKey(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * Retrieves the type of the schema. - * - * # Returns - * - * * `String` - The type of the schema. - * @returns {string} - */ - get type() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_type(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * Retrieves the indexes of the schema, if any. - * - * # Returns - * - * * `Option>` - The indexes of the schema, if any. - * @returns {(string)[] | undefined} - */ - get indexes() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_indexes(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - let v1; - if (r0 !== 0) { - v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4, 4); - } - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {(string)[] | undefined} - */ - get required() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_required(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - let v1; - if (r0 !== 0) { - v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4, 4); - } - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {(string)[] | undefined} - */ - get encrypted() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_encrypted(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - let v1; - if (r0 !== 0) { - v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4, 4); - } - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the properties of the schema. - * - * # Returns - * - * * `Result` - A result containing the properties as a `JsValue` or an error. - * @returns {any} - */ - get properties() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_properties(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - WasmBindgenTestContextFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmbindgentestcontext_free(ptr >>> 0)); - WasmBindgenTestContext = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - WasmBindgenTestContextFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_wasmbindgentestcontext_free(ptr); - } - /** - * Creates a new context ready to run tests. - * - * A `Context` is the main structure through which test execution is - * coordinated, and this will collect output and results for all executed - * tests. - */ - constructor() { - const ret = wasm.wasmbindgentestcontext_new(); - this.__wbg_ptr = ret >>> 0; - return this; - } - /** - * Inform this context about runtime arguments passed to the test - * harness. - * @param {any[]} args - */ - args(args) { - const ptr0 = passArrayJsValueToWasm0(args, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.wasmbindgentestcontext_args(this.__wbg_ptr, ptr0, len0); - } - /** - * Executes a list of tests, returning a promise representing their - * eventual completion. - * - * This is the main entry point for executing tests. All the tests passed - * in are the JS `Function` object that was plucked off the - * `WebAssembly.Instance` exports list. - * - * The promise returned resolves to either `true` if all tests passed or - * `false` if at least one test failed. - * @param {any[]} tests - * @returns {Promise} - */ - run(tests) { - const ptr0 = passArrayJsValueToWasm0(tests, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.wasmbindgentestcontext_run(this.__wbg_ptr, ptr0, len0); - return takeObject(ret); - } - }; - ridb_wasm_default = __wbg_init; - } -}); - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - BasePlugin: () => BasePlugin, - BaseStorage: () => BaseStorage, - Collection: () => Collection, - Database: () => Database, - OpType: () => OpType, - Operation: () => Operation, - Property: () => Property, - Query: () => Query, - RIDB: () => RIDB, - Schema: () => Schema, - SchemaFieldType: () => SchemaFieldType, - StorageType: () => StorageType -}); -module.exports = __toCommonJS(src_exports); - -// wasm:/Users/ribo/Projects/personal/ridb-rust/packages/ridb/node_modules/@trust0/ridb-wasm/ridb_wasm_bg.wasm -var ridb_wasm_bg_default = Buffer.from("AGFzbQEAAAABgwIjYAF/AGACf38Bf2ACf38AYAN/f38AYAF/AX9gA39/fwF/YAR/f39/AGAFf39/f38AYAABf2AEf39/fwF/YAAAYAV/f39/fwF/YAZ/f39/f38AYAd/f39/f39/AGAFf39/fn8AYAF+AX9gBn9/f39/fwF/YAV/f35/fwBgAXwBf2ABfwF8YAJ/fwF+YAN/f38BfmACfn8AYAl/f39/f39+fn4AYAd/f39/f39/AX9gA35/fwF/YAt/f39/f39/f39/fwF/YAl/f39/f39/f38Bf2ADf35+AGAEf35+fwBgBH9+f38AYAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AAsArmwEDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAADd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcAAQN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQABAN3YmcSX193YmluZGdlbl9pc19udWxsAAQDd2JnEl9fd2JnX2lubWVtb3J5X25ldwAEA3diZydfX3diZ19maW5kRG9jdW1lbnRCeUlkXzNjOTUzZTdjYjgxNjYzMWYACQN3YmccX193Ymdfd3JpdGVfNWVkMjE3NzE4Yzk0M2JiNgABA3diZxFfX3diZ19pbmRleGRiX25ldwAEA3diZxxfX3diZ19jbG9zZV85MDc5ZDYwOWY1MWYzMTViAAQDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwASA3diZxVfX3diaW5kZ2VuX3N0cmluZ19nZXQAAgN3YmcVX193YmluZGdlbl9udW1iZXJfZ2V0AAIDd2JnHF9fd2JnX2NvdW50XzU2YjczN2YzZTFmOTgwOGIACQN3YmccX193Ymdfc3RhcnRfOGU5MGJhNGI5YTY2YWQ2ZAAEA3diZxxfX3diZ19hcHBseV81Y2MyMGE5YzU5YWE0MmNjAAMDd2JnEl9fd2JnX2RhdGFiYXNlX25ldwAEA3diZxtfX3diZ19maW5kXzRmYjczYzYxOTgzZjMzMDMACQN3YmcUX193YmdfY29sbGVjdGlvbl9uZXcABAN3YmcWX193YmluZGdlbl9pc19mdW5jdGlvbgAEA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEA3diZxNfX3diaW5kZ2VuX2lzX2FycmF5AAQDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAQDd2JnE19fd2JpbmRnZW5faXNfZmFsc3kABAN3YmcUX193YmluZGdlbl9pc19iaWdpbnQABAN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAEA3diZw1fX3diaW5kZ2VuX2luAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0AA8Dd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAQN3YmcaX193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQADwN3YmcSX193YmluZGdlbl9jYl9kcm9wAAQDd2JnHV9fd2JnX2NyeXB0b18xZDFmMjI4MjRhNmEwODBjAAQDd2JnHl9fd2JnX3Byb2Nlc3NfNGE3Mjg0N2NjNTAzOTk1YgAEA3diZx9fX3diZ192ZXJzaW9uc19mNjg2NTY1ZTU4NmRkOTM1AAQDd2JnG19fd2JnX25vZGVfMTA0YTJmZjhkNmVhMDNhMgAEA3diZx5fX3diZ19yZXF1aXJlX2NjYTkwYjFhOTRhMDI1NWIACAN3YmcfX193YmdfbXNDcnlwdG9fZWIwNWU2MmI1MzBhMTUwOAAEA3diZyVfX3diZ19yYW5kb21GaWxsU3luY181YzljOTU1YWE1NmI2MDQ5AAIDd2JnJl9fd2JnX2dldFJhbmRvbVZhbHVlc18zYWE1NmFhNmVkZWM4NzRjAAIDd2JnKF9fd2JnX2luc3RhbmNlb2ZfV2luZG93X2Y0MDE5NTNhMmNmODYyMjAABAN3YmcjX193YmdfbG9jYWxTdG9yYWdlX2UzODFkMzRkMGM0MGM3NjEABAN3YmcgX193YmdfaW5kZXhlZERCXzdjNTFkOTA1NjY2N2Y0ZTAABAN3YmcbX193Ymdfb3Blbl9mMGQ3MjU5ZmQ3ZTY4OWNlAAkDd2JnHl9fd2JnX2dldEl0ZW1fMTY0ZThlNTI2NTA5NWI4NwAGA3diZxxfX3diZ19lcnJvcl84ZTM5MjhjZmI4YTQzZTJiAAADd2JnGl9fd2JnX2xvZ181YmI1Zjg4ZjI0NWQ3NzYyAAADd2JnHV9fd2JnX2xlbmd0aF85YWU1ZGFmOWE2OTBjYmE5AAQDd2JnH19fd2JnX2NvbnRhaW5zX2M2NWI0NDQwMGI1NDkyODYABQN3YmcaX193YmdfZ2V0XzkxMGJiYjk0YWJkY2Y0ODgAAwN3YmcdX193YmdfdGFyZ2V0XzJmYzE3N2UzODZjOGI3YjAABAN3YmcyX193YmdfaW5zdGFuY2VvZl9JZGJPcGVuRGJSZXF1ZXN0XzNmNGExNjZiYzAzNDA1NzgABAN3YmcpX193Ymdfc2V0b251cGdyYWRlbmVlZGVkX2FkNzY0NTM3M2M3ZDVlMWIAAgN3YmcsX193YmdfaW5zdGFuY2VvZl9JZGJSZXF1ZXN0XzkzMjQ5ZGEwNGY1MzcwYjYABAN3YmcdX193YmdfcmVzdWx0XzZjZWRmNWY3ODYwMGE3OWMABAN3YmccX193YmdfZXJyb3JfNjg1YjIwMDI0ZGMyZDZjYQAEA3diZyNfX3diZ19zZXRvbnN1Y2Nlc3NfNjMyY2UwYTE0NjA0NTVjMgACA3diZyFfX3diZ19zZXRvbmVycm9yXzg0NzliMzNlNzU2OGE5MDQAAgN3YmckX193Ymdfc2V0b25jb21wbGV0ZV9kOGU0MjM2NjY1Y2JmMWUyAAIDd2JnIV9fd2JnX3NldG9uZXJyb3JfZGEwNzFlYzk0ZTE0ODM5NwACA3diZyJfX3diZ19vYmplY3RTdG9yZV9kYTQ2ODc5M2JkOWRmMTdiAAUDd2JnLV9fd2JnX2luc3RhbmNlb2ZfSWRiRGF0YWJhc2VfZGI2NzFjZjI0NTRhOTU0MgAEA3diZydfX3diZ19vYmplY3RTdG9yZU5hbWVzXzU4OGI1OTI0Mjc0MjM5ZmQABAN3YmccX193YmdfY2xvc2VfNmJmZTRjYTJmZTY3Y2I2NwAAA3diZyhfX3diZ19jcmVhdGVPYmplY3RTdG9yZV84ODJmMmY2YjFiMWVmMDQwAAUDd2JnIl9fd2JnX3RyYW5zYWN0aW9uX2MzMmJiMTBjOWM2OTJmNGIABQN3YmciX193YmdfdHJhbnNhY3Rpb25fMWUyODJhNzllOWJiNzM4NwAJA3diZx1fX3diZ19kZWxldGVfZjYwYmJhN2QwYWU1OWE0ZgABA3diZxpfX3diZ19nZXRfNTM2MWI2NGNhYzBkMDgyNgABA3diZx1fX3diZ19nZXRBbGxfMjc4MmU0MzhkZjY5OTM4NAAEA3diZxpfX3diZ19wdXRfMjI3OTJlMTc1ODBjYTE4YgAFA3diZxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxAAEDd2JnFF9fd2JpbmRnZW5fYXNfbnVtYmVyABMDd2JnHV9fd2JnX1N0cmluZ18zODliNTRiZDlkMjUzNzVmAAIDd2JnJF9fd2JnX2dldHdpdGhyZWZrZXlfNGE5MmE1ZWNhNjA4NzliOQABA3diZxpfX3diZ19zZXRfOTE4MjcxMmFiZWJmODJlZgADA3diZxpfX3diZ19sb2dfMjhlZWU0ZTY0MzJlZmQyNAACA3diZx1fX3diZ19TdHJpbmdfNTViOGJkYzRiYzI0MzY3NwACA3diZyVfX3diZ19nZXRFbGVtZW50QnlJZF84NDU4ZjJhNmMyODQ2N2RjAAUDd2JnJV9fd2JnX3NldHRleHRjb250ZW50X2ZjM2ZmNDg1Yjk2ZmNiMWQAAwN3YmckX193Ymdfd2JndGVzdGludm9rZV84YzIwZjQxMzJhZjJiZGVkAAIDd2JnK19fd2JnX3diZ3Rlc3RvdXRwdXR3cml0ZWxuXzRkYjNiZDY0OTE0ZWM5NTUAAAN3YmccX193Ymdfc3RhY2tfNDM2MjczYzIxNjU4MTY5YgAEA3diZy9fX3diZ19zdGF0aWNfYWNjZXNzb3JfZG9jdW1lbnRfZDRiNmFlN2Y1NTc4NDgwZgAIA3diZxxfX3diZ19zdGFja18xN2M3N2U5ZjViZmU2NzE0AAIDd2JnG19fd2JnX3NlbGZfNTUxMDYzNTdlYzEwZWNkNAAEA3diZyJfX3diZ19jb25zdHJ1Y3Rvcl9mZDBkMjJkNjBiN2RmZDcyAAQDd2JnG19fd2JnX25hbWVfN2Y0MzlkMjRmZjdiYTFkMwACA3diZyJfX3diZ190ZXh0Y29udGVudF82N2U0ZTgxMWNiZGYwMGZjAAIDd2JnHF9fd2JnX3N0YWNrXzQ0NzQzZmI3ZDcxOTI2YTAABAN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgACA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAIDd2JnJV9fd2JnX3F1ZXVlTWljcm90YXNrXzNjYmFlMmVjNmI2Y2QzZDYABAN3YmclX193YmdfcXVldWVNaWNyb3Rhc2tfNDgxOTcxYjBkODdmM2RkNAAAA3diZxpfX3diZ19nZXRfYmQ4ZTMzOGZiZDVmNWNjOAABA3diZx1fX3diZ19sZW5ndGhfY2Q3YWY4MTE3NjcyYjhiOAAEA3diZxpfX3diZ19uZXdfMTZiMzA0YTJjZmE3ZmY0YQAIA3diZyBfX3diZ19uZXdub2FyZ3NfZTI1ODA4N2NkMGRhYTBlYQABA3diZxpfX3diZ19uZXdfZDliYzNhMDE0NzYzNDY0MAAIA3diZxtfX3diZ19uZXh0XzQwZmMzMjdiZmM4NzcwZTYABAN3YmcbX193YmdfbmV4dF8xOTZjODQ0NTBiMzY0MjU0AAQDd2JnG19fd2JnX2RvbmVfMjk4YjU3ZDIzYzBmYzgwYwAEA3diZxxfX3diZ192YWx1ZV9kOTNjNjUwMTFmNTFhNDU2AAQDd2JnH19fd2JnX2l0ZXJhdG9yXzJjZWU2ZGFkZmQ5NTZkZmEACAN3YmcaX193YmdfZ2V0X2UzYzI1NDA3NjU1N2UzNDgAAQN3YmcbX193YmdfY2FsbF8yN2MwZjg3ODAxZGVkZjkzAAEDd2JnGl9fd2JnX25ld183MmZiOWExOGI1YWUyNjI0AAgDd2JnG19fd2JnX3NlbGZfY2UwZGJmYzQ1Y2YyZjViZQAIA3diZx1fX3diZ193aW5kb3dfYzZmYjkzOWE3ZjQzNjc4MwAIA3diZyFfX3diZ19nbG9iYWxUaGlzX2QxZTZhZjQ4NTZiYTMzMWIACAN3YmcdX193YmdfZ2xvYmFsXzIwN2I1NTg5NDI1Mjc0ODkACAN3YmcaX193Ymdfc2V0X2Q0NjM4ZjcyMjA2OGYwNDMAAwN3YmcbX193YmdfZnJvbV84OWUzZmMzYmE1ZTZmYjQ4AAQDd2JnHl9fd2JnX2ZvckVhY2hfMmJlOGRlNzM0N2Q2MzMzMgADA3diZx5fX3diZ19pc0FycmF5XzJhYjY0ZDk1ZTA5ZWEwYWUABAN3YmcZX193Ymdfb2ZfNGEyYjMxM2E0NTNlYzA1OQAEA3diZxtfX3diZ19wdXNoX2E1YjA1YWVkYzcyMzRmOWYAAQN3YmctX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl84MzY4MjViZTA3ZDRjOWQyAAQDd2JnGl9fd2JnX25ld18yOGM1MTFkOWJhZWJmYTg5AAEDd2JnHl9fd2JnX21lc3NhZ2VfNWJmMjgwMTZjMmI0OWNmYgAEA3diZxtfX3diZ19uYW1lX2U3NDI5ZjBkZGE2MDc5ZTIABAN3YmcbX193YmdfY2FsbF9iM2NhN2M2MDUxZjliZWMxAAUDd2JnG19fd2JnX2NhbGxfOTM4OTkyYzgzMmY3NDMxNAALA3diZxpfX3diZ19zZXRfODQxNzI1N2FhZWRjOTM2YgAFA3diZyRfX3diZ19pc1NhZmVJbnRlZ2VyX2Y3YjA0ZWYwMjI5NmM0ZDIABAN3YmceX193YmdfZW50cmllc185NWNjMmM4MjNiMjg1YTA5AAQDd2JnGV9fd2JnX2lzXzAxMGZkYzBmNGFiOTY5MTYAAQN3YmcbX193Ymdfa2V5c185MWU0MTJiNGIyMjI2NTlmAAQDd2JnGl9fd2JnX25ld184MTc0MDc1MGRhNDA3MjRmAAEDd2JnHl9fd2JnX3Jlc29sdmVfYjAwODNhNzk2NzgyOGVjOAAEA3diZxtfX3diZ190aGVuXzBjODZhNjBlOGZjZmU5ZjYAAQN3YmcbX193YmdfdGhlbl9hNzNjYWE5YTg3OTkxNTY2AAUDd2JnHV9fd2JnX2J1ZmZlcl8xMmQwNzljYzIxZTE0YmRiAAQDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2FhNGExN2MzM2EwNmU1Y2IABQN3YmcaX193YmdfbmV3XzYzYjkyYmM4NjcxZWQ0NjQABAN3YmcaX193Ymdfc2V0X2E0N2JhYzcwMzA2YTE5YTcAAwN3YmcdX193YmdfbGVuZ3RoX2MyMGE0MGYxNTAyMGQ2OGEABAN3YmcsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzJiM2JiZWNkMDMzZDE5ZjYABAN3YmckX193YmdfbmV3d2l0aGxlbmd0aF9lOWI0ODc4Y2ViYWRiM2QzAAQDd2JnH19fd2JnX3N1YmFycmF5X2ExZjczY2Q0YjViNDJmZTEABQN3YmccX193YmdfYXBwbHlfMGE1YWE2MDM4ODFlNmQ3OQAFA3di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ZXNfMTQAgAZCX193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yXzE1AIEGRV9fd2JndF90ZXN0X3F1ZXJ5X2dldF9xdWVyeV9ub3JtYWxpemF0aW9uX25lc3RlZF9sb2dpY2FsX29wZXJhdG9yc18xNgCCBkJfX3diZ3RfdGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3JfMTcAgwY6X193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fY29tcGxleF9taXhlZF8xOACEBiZfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9lbXB0eV9xdWVyeV8xOQCFBitfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5XzIwAIYGLV9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc18yMQCHBi5fX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9pbnZhbGlkX2luX29wZXJhdG9yXzIyAIgGMl9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X2xvZ2ljYWxfb3BlcmF0b3JzXzIzAIkGFl9fd2JnX2Jhc2VzdG9yYWdlX2ZyZWUAiwMPYmFzZXN0b3JhZ2VfbmV3AKYCFWJhc2VzdG9yYWdlX2dldE9wdGlvbgDQAxViYXNlc3RvcmFnZV9nZXRTY2hlbWEAuAMQYmFzZXN0b3JhZ2VfY29yZQCWBRFfX3diZ19zY2hlbWFfZnJlZQCqBRZzY2hlbWFfdmFsaWRhdGVfc2NoZW1hAL0ED3NjaGVtYV9pc192YWxpZAD7Aw1zY2hlbWFfY3JlYXRlAJAEDnNjaGVtYV92ZXJzaW9uAK4GEXNjaGVtYV9wcmltYXJ5S2V5AIEEC3NjaGVtYV90eXBlAIIEDnNjaGVtYV9pbmRleGVzAPECD3NjaGVtYV9yZXF1aXJlZADyAhBzY2hlbWFfZW5jcnlwdGVkAPMCEXNjaGVtYV9wcm9wZXJ0aWVzALAEHV9fd2JndF90ZXN0X3NjaGVtYV9jcmVhdGlvbl8zAIsGH19fd2JndF90ZXN0X3NjaGVtYV92YWxpZGF0aW9uXzQAjAYcX193Ymd0X3Rlc3RfaW52YWxpZF9zY2hlbWFfNQCNBhNfX3diZ19kYXRhYmFzZV9mcmVlALgCDmRhdGFiYXNlX3N0YXJ0ANUEDmRhdGFiYXNlX2Nsb3NlALYFEGRhdGFiYXNlX3N0YXJ0ZWQArwYUZGF0YWJhc2VfY29sbGVjdGlvbnMAsQQPZGF0YWJhc2VfY3JlYXRlAKcEFF9fd2JnX29wZXJhdGlvbl9mcmVlAIMEFG9wZXJhdGlvbl9jb2xsZWN0aW9uAIQEEG9wZXJhdGlvbl9vcFR5cGUAsAYOb3BlcmF0aW9uX2RhdGEAvAURb3BlcmF0aW9uX2luZGV4ZXMAsgQVX193YmdfYmFzZXBsdWdpbl9mcmVlAOUEDmJhc2VwbHVnaW5fbmV3AK8FD2Jhc2VwbHVnaW5fbmFtZQCwBR5iYXNlcGx1Z2luX2dldF9kb2NfY3JlYXRlX2hvb2sAqQQfYmFzZXBsdWdpbl9nZXRfZG9jX3JlY292ZXJfaG9vawCqBB5iYXNlcGx1Z2luX3NldF9kb2NfY3JlYXRlX2hvb2sAwQUfYmFzZXBsdWdpbl9zZXRfZG9jX3JlY292ZXJfaG9vawDCBQdtYWluX2pzAMsFDWlzX2RlYnVnX21vZGUA2gcTX193YmdfcHJvcGVydHlfZnJlZQCUBRFwcm9wZXJ0eV9pc192YWxpZAD8Aw1wcm9wZXJ0eV90eXBlAPMEDnByb3BlcnR5X2l0ZW1zAKcDEXByb3BlcnR5X21heEl0ZW1zAK4DEXByb3BlcnR5X21pbkl0ZW1zAK8DEnByb3BlcnR5X21heExlbmd0aACwAxJwcm9wZXJ0eV9taW5MZW5ndGgAsQMTcHJvcGVydHlfcHJvcGVydGllcwCsAx9fX3diZ3RfdGVzdF9wcm9wZXJ0eV9jcmVhdGlvbl8wAI8GIV9fd2JndF90ZXN0X3Byb3BlcnR5X3ZhbGlkYXRpb25fMQCQBh5fX3diZ3RfdGVzdF9pbnZhbGlkX3Byb3BlcnR5XzIAkQYVX193YmdfY29sbGVjdGlvbl9mcmVlALACD2NvbGxlY3Rpb25fbmFtZQCFBBFjb2xsZWN0aW9uX3NjaGVtYQDKAw9jb2xsZWN0aW9uX2ZpbmQAiwUQY29sbGVjdGlvbl9jb3VudAD2BRNjb2xsZWN0aW9uX2ZpbmRCeUlkAP4EEWNvbGxlY3Rpb25fdXBkYXRlAIYFEWNvbGxlY3Rpb25fY3JlYXRlAIcFEWNvbGxlY3Rpb25fZGVsZXRlALYEE19fd2JnX2lubWVtb3J5X2ZyZWUA/AIPaW5tZW1vcnlfY3JlYXRlAL4EEWlubWVtb3J5X2J5X2luZGV4ALMEDmlubWVtb3J5X3dyaXRlAOEEDWlubWVtb3J5X2ZpbmQA/wQZaW5tZW1vcnlfZmluZERvY3VtZW50QnlJZADNBQ5pbm1lbW9yeV9jb3VudACABQ5pbm1lbW9yeV9jbG9zZQChBQ5pbm1lbW9yeV9zdGFydACiBRJfX3diZ19pbmRleGRiX2ZyZWUA+gEOaW5kZXhkYl9jcmVhdGUA5gQNaW5kZXhkYl93cml0ZQC6BAxpbmRleGRiX2ZpbmQA2QUYaW5kZXhkYl9maW5kRG9jdW1lbnRCeUlkANoFDWluZGV4ZGJfY291bnQA2wUNaW5kZXhkYl9jbG9zZQCjBQ1pbmRleGRiX3N0YXJ0AKgGD2NvcmVzdG9yYWdlX25ldwCyBhhjb3Jlc3RvcmFnZV9tYXRjaGVzUXVlcnkA+AMWX193YmdfY29yZXN0b3JhZ2VfZnJlZQCxBiFfX3diZ193YXNtYmluZGdlbnRlc3Rjb250ZXh0X2ZyZWUApgUad2FzbWJpbmRnZW50ZXN0Y29udGV4dF9uZXcAmgYbd2FzbWJpbmRnZW50ZXN0Y29udGV4dF9hcmdzAIgFGndhc21iaW5kZ2VudGVzdGNvbnRleHRfcnVuANcEFV9fd2JndGVzdF9jb25zb2xlX2xvZwDeBRdfX3diZ3Rlc3RfY29uc29sZV9kZWJ1ZwDfBRZfX3diZ3Rlc3RfY29uc29sZV9pbmZvAOAFFl9fd2JndGVzdF9jb25zb2xlX3dhcm4A4QUXX193Ymd0ZXN0X2NvbnNvbGVfZXJyb3IA4gURX193YmluZGdlbl9tYWxsb2MA1QUSX193YmluZGdlbl9yZWFsbG9jAPcFE19fd2JpbmRnZW5fZXhwb3J0XzIBAHxfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19BX19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gzMGZjZjI0ZjkzMGFjNzNiAMYGfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDAzNDNhZjNmZjIxMGJjNmMAxQYfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCLB3xfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuX19BX0JfQ19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gwODMzMDU0ODRmNTNmNTYyAOgEfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faGQwYjdiNzAzMWUzM2EzODQAzAYPX193YmluZGdlbl9mcmVlAOAGFF9fd2JpbmRnZW5fZXhuX3N0b3JlAPIGP3dhc21fYmluZGdlbl9fY29udmVydF9fY2xvc3VyZXNfX2ludm9rZTBfbXV0X19oODMxNjU0MDAzYTgxMTRjMgDVBj93YXNtX2JpbmRnZW5fX2NvbnZlcnRfX2Nsb3N1cmVzX19pbnZva2UzX211dF9faDc5YWQxYzZlNmExOTdiZTIAvAY/d2FzbV9iaW5kZ2VuX19jb252ZXJ0X19jbG9zdXJlc19faW52b2tlMl9tdXRfX2gzM2IzMGM1NjRmNDNhOGE1AMMGEF9fd2JpbmRnZW5fc3RhcnQAywUJqAcFAEEBC9kByQbQBJYE6wbqBqwG9gP2A4oDigOYA5gD6gPqA5sDmwP/A/8D9QP1A+kD6QPsA+wD7gPuA/4D/gPvA+8D6wPrA+QC5AKJA4kD5gPmA5wDnAPtA+0DrQOtA+gD6APnA+cD/QP9A4AEgATyA9wB+gS9AbUEgQKdA9MB9wOgAaEDuQHaA/MBkAOsAaQE2wGEA7oB2gGiA88BiwSb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AygCCEUNASADKAIMIQYMBgsgA0EBNgLkASADQcy0wAA2AuABIANCATcC7AEgAyADQbACaq1CgICAgMAAhDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNBSABIAJBARD6BgwFCyADIAggBhACNgLMAiADQeABaiADQYQCaiADQcwCaiADQaQCahCtBSADLQDgAUUEQCADKALMAiIEQYQBTwRAIAQQAAsgAygCpAIiBEGEAU8EQCAEEAALIAMoAsABIgQEQCAIIARBARD6BgsgCUEBaiIJIAdHDQEMBwsLIAMoAuQBIQYgAygCzAIiAUGEAUkNAyABEAAMAwsgAyAEIAUgDhCNAyADKAIABEAgAygCBCEGDAgLIAQQASEGDAULIANBATYC5AEgA0GItMAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUEIAMoAtACIgEgAygC1AIQAiEGIAMoAswCIgJFDQYgASACQQEQ+gYMBgsgA0EBNgLkASADQay0wAA2AuABIANCATcC7AEgAyADQcABaq1CgICAgNAThDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNACABIAJBARD6BgsgAygCpAIiAUGEAUkNACABEAALIAMoAsABIgEEQCADKALEASABQQEQ+gYLIAMoApACIgFBhAFPBEAgARAACyADKAKEAiIBQYQBSQ0DIAEQAAwDCyADKAKEAiEGIAMoApACIgRBhAFJDQAgBBAACyADIAY2AqACIAMgAygC6AIgAygC7AIQAjYCzAIgA0HgAWogA0HYAWogA0HMAmogA0GgAmoQrQUgAy0A4AFFBEAgAygCzAIiBEGEAU8EQCAEEAALIAMoAqACIgRBhAFJDQQgBBAADAQLIAMoAuQBIQYgAygCzAIiAUGEAU8EQCABEAALIAMoAqACIgFBhAFJDQEgARAADAELIANBnAJqEIIHRQRAIANBAjYC5AEgA0HoscAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUE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AnQQsgUMBgsgAkHYAWogARCeASACLQDYASIFQQZGBEAgAigC3AEMBgsgAkGOAmoiByAKQQJqLQAAOgAAIAJBgAJqIgkgBkEIaikDADcDACACIAovAAA7AYwCIAIgBikDADcD+AEgAigC3AEhCyACKALIASIDIAIoAsABRgRAIAJBwAFqEL0DCyACKALEASADQRhsaiIEIAIpA/gBNwMIIAQgBToAACAEIAIvAYwCOwABIAQgCzYCBCAEQQNqIActAAA6AAAgBEEQaiAJKQMANwMAIAIgA0EBajYCyAFBACEFIAEoAhQiBCABKAIQIgNJDQALDAMLIABBBjoAACAAIAg2AgQMEAsgBkEwa0H/AXFBCk8EQCACQQo2AtgBIAIgCBCYBSACIAJB2AFqIAIoAgAgAigCBBCyBTYCrAEMBgsgAkHYAWogAUEBEN0BAn4CQCACKQPYASIUQgNSBEAgAikD4AEhEwJAAkAgFKdBAWsOAgABAwsgAkECOgCoAUIADAMLIAJBAjoAqAEgE0I/iAwCCyAAIAIoAuABNgIEIABBBjoAAAwRCyACIBNC////////////AINCgICAgICAgPj/AFRBAXQ6AKgBQgILIRQgAkG4AWogEzcDACACQbABaiAUNwMAIABBEGogEzcDACAAQQhqIBQ3AwAgACACKQOoATcDAAwPCyABIAEtABhBAWsiAzoAGCADQf8BcQRAIAEgBEEEazYCFCACQcABaiEGQQAhCiMAQfABayIDJAAgA0EBOgAQIAMgATYCDCADQThqIgQgA0EMahCTAgJAAkACQCADLQA4RQRAIAMtADlFDQEgAygCDCEFIwBBEGsiByQAIAVBADYCCCAFIAUoAhRBAWo2AhQgB0EEaiAFQQxqIAUQjgIgBygCCCEMAkACQCAHKAIEIglBAkcEQCAHKAIMIQUCQCAJRQRAQQAhCSAFQQBOBEAgBUUEQEEBIQsMAwtByc3DAC0AABpBASEJIAVBARDtBiILDQILIAkgBRDZBgALQQAhCSAFQQBIDQIgBUUEQEEBIQsMAQtByc3DAC0AABpBASEJIAVBARDtBiILRQ0CCyALIAwgBRD6AiEJIAQgBTYCCCAEIAk2AgQgBCAFNgIADAILIARBgICAgHg2AgAgBCAMNgIEDAELIAkgBRDZBgALIAdBEGokACADKAI4IgRBgICAgHhHDQILIAMoAjwhBCAGQQY6AAAgBiAENgIEDAILIAZBADYCDCAGQQA2AgQgBkEFOgAADAELIAMoAjwhBSADKAJAIQcgA0EANgIcIANBADYCFCADIAc2AmggAyAFNgJkIAMgBDYCYCADQThqIANBDGoQ2wMCQCADLQA4QQZHBEAgA0EwaiADQcgAaikDADcDACADQShqIANBQGsiESkDADcDACADIAMpAzg3AyAgA0HQAWogA0EUaiADQeAAaiADQSBqEOYBAkACQAJAAkAgAy0A0AEOBwMDAwECAAMACyADQdABakEEchD7AQwCCyADKALUASIERQ0BIAMoAtgBIARBARD6BgwBCyADQdABakEEchC5BCADKALUASIERQ0AIAMoAtgBIARBGGxBCBD6BgsgA0HkAGohCyADQcQAaiEJIANB1AFqIQwgA0HQAWpBBHIhDgNAAkAgA0GsAWohBUEAIQ0jAEEQayIEJAAgBEEEaiADQQxqIgcQkwICQAJAAkAgBC0ABEUEQCAELQAFRQRAIAVBgICAgHg2AgAMBAsgBygCACIHQQA2AgggByAHKAIUQQFqNgIUIARBBGogB0EMaiAHEI4CIAQoAgghDyAEKAIEQQJGDQEgBCgCDCIHQQBOBEAgB0UEQEEBIRAMBAtByc3DAC0AABpBASENIAdBARDtBiIQDQMLIA0gBxDZBgALIAUgBCgCCDYCBCAFQYGAgIB4NgIADAILIAVBgYCAgHg2AgAgBSAPNgIEDAELIBAgDyAHEPoCIQ0gBSAHNgIIIAUgDTYCBCAFIAc2AgALIARBEGokAAJAAkACQAJAIAMoAqwBIgRBgICAgHhrDgIEAAELIAMoArABIQUMAQsgAykCsAEhEyADKAKwASADQbgBaiADQQxqENsDIAMtALgBQQZHDQEgAygCvAEhBSAERQ0AIARBARD6BgsgBkEGOgAAIAYgBTYCBAwECyAMIAMpA7gBNwIAIAxBEGogA0HIAWopAwA3AgAgDEEIaiADQcABaikDADcCACADQegAaiADQdgBaikCACIUNwMAIANB8ABqIANB4AFqKQIAIhU3AwAgA0H4AGoiBSADQegBaigCADYCACADIAMpAtABIhY3A2AgCUEQaiAVNwIAIAlBCGogFDcCACAJIBY3AgAgCUEYaiAFKAIANgIAIAMgE6ci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DCAEIAJBUGxqIgJBKGsgBzYCACACQTBrIB43AwAgAkEkayIDIAEpAqABNwIAIANBCGogAUGoAWopAgA3AgAgA0EQaiABQbABaigCADYCACACQQhrIBw3AwAgAkEQayAdNwMACyACQSBrIQMCQAJAAkACQCAOLQAcIgoOAwAAAwELIAEgDigCGBABNgKYASABIAEoAmggASgCbBACNgKcASABQUBrIAFBmAFqIAFBnAFqEOMFIAEoAkQhBCABKAJAQQFxBEAgASAENgLEASABQQE2AqQBIAFBrJHAADYCoAEgAUIBNwKsASABIAFBxAFqrUKAgICAMIQ3A8gBIAEgAUHIAWo2AqgBIAFBiAFqIAFBoAFqEOICIAEoAowBIgMgASgCkAEQAiECIAEoAogBIgQEQCADIARBARD6BgsgASgCxAEiA0GEAU8EQCADEAALIAEoApwBIgNBhAFJDRMgAxAADBMLIAEoApwBIgJBhAFPBEAgAhAACyAEEANBAUYNASAEEARBAUYNASABQThqIAQQCwJAAkACQCABKAI4IgVFDQAgASgCPCICQYCAgIB4Rg0AIAEgAjYCkAEgASAFNgKMASABIAI2AogBDAELIAFBKGogBBAMIAEoAihFDQEgASABKwMwOQOgASABQYgBaiABQaABahCrBAsgAUEgaiAaQeAAayABKAKYARABEKQBIAEoAiQhAiABKAIgIQUgCkUEQCAFDRIgAyABQYgBaiICELsDRQRAIAFBoAFqIgUgAhD4BCABQRBqIAMgBSABKAKYARABEIkCIAEoAhBFDRggASgCFCICQYMBTQ0YDBcLQdSPwABBLRACIQIMEgsgBQ0RIAMgAUGIAWoQuwNFBEBBnZDAAEEtEAIhAgwSCyABQaABaiICIAFBiAFqEPgEIAFBGGogAyACIAEoApgBEAEQiQIgASgCGEUNFiABKAIcIgJBgwFLDRUMFgtBypDAAEEmEAIhAgwRC0EBIQNByovAAEEaEAIhAgwVC0HgisAAQSMQAiECDA8LIA4oAhgQASIEEANBAUcNCAwJC0GAkcAAEJUGAAtBxJfAABCVBgALQbSXwAAQlQYAC0G8h8AAEJUGAAtB8IzAAEEUEAIhAkEADA8LEKMHAAsQpAcACwALIAQQBEEBRg0AIAFB2ABqIAQQCwJAAkACQCABKAJYIgpFDQAg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AUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AgwgAiABQQFqIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgIcIAJBIGogCCACEKcBIAItACAhDyACLQAhIRAgAi0AIiERIAItACMhEiACLQAkIRMgAi0AJSEUIAItACYhFSACLQAnIRYgAi0AKCEXIAItACkhGCACLQAqIRkgAi0AKyEaIAItACwhGyACLQAtIRwgAi0ALiEdIAItAC8hHiACLQAwIR8gAi0AMSEgIAItADIhIiACLQAzISMgAi0ANCEkIAItADUhJSACLQA2ISYgAi0ANyEnIAItADghKCACLQA5ISkgAi0AOiEqIAItADshKyACLQA8ISwgAi0APSEtIAItAD4hLiAEIAdqIgEtAAAhLyABQQFqLQAAITAgAUECai0AACExIAFBA2otAAAhMiABQQRqLQAAITMgAUEFai0AACE0IAFBBmotAAAhNSABQQdqLQAAITYgAUEIai0AACE3IAFBCWotAAAhOCABQQpqLQAAITkgAUELai0AACE6IAFBDGotAAAhOyABQQ1qLQAAITwgAUEOai0AACE9IAFBD2otAAAhPiABQRBqLQAAIT8gAUERai0AACFAIAFBEmotAAAhQSABQRNqLQAAIUIgAUEUai0AACFDIAFBFWotAAAhRCABQRZqLQAAIUUgAUEXai0AACFGIAFBGGotAAAhRyABQRlqLQAAIUggAUEaai0AACFJIAFBG2otAAAhSiABQRxqLQAAIUsgAUEdai0AACFMIAFBHmotAAAhTSAEICFqIgNBH2ogAUEfai0AACACLQA/czoAACADQR5qIC4gTXM6AAAgA0EdaiAtIExzOgAAIANBHGogLCBLczoAACADQRtqICsgSnM6AAAgA0EaaiAqIElzOgAAIANBGWogKSBIczoAACADQRhqICggR3M6AAAgA0EXaiAnIEZzOgAAIANBFmogJiBFczoAACADQRVqICUgRHM6AAAgA0EUaiAkIENzOgAAIANBE2ogIyBCczoAACADQRJqICIgQXM6AAAgA0ERaiAgIEBzOgAAIANBEGogHyA/czoAACADQQ9qIB4gPnM6AAAgA0EOaiAdID1zOgAAIANBDWogHCA8czoAACADQQxqIBsgO3M6AAAgA0ELaiAaIDpzOgAAIANBCmogGSA5czoAACADQQlqIBggOHM6AAAgA0EIaiAXIDdzOgAAIANBB2ogFiA2czoAACADQQZqIBUgNXM6AAAgA0EFaiAUIDRzOgAAIANBBGogEyAzczoAACADQQNqIBIgMnM6AAAgA0ECaiARIDFzOgAAIANBAWogECAwczoAACADIA8gL3M6AAAgBEEgaiEEIAYhASAJQQFrIgkNAAsLBEAgACAAKAIUIgFBAWo2AhQgACgCECEGIAApAgQhTiAAKAIMIQAgAkEYakIANwIAIAJCADcCECACIAA2AgggAiBONwIAIAIgASAGaiIAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycjYCDCACQSBqIAggAhCnASACLQAgIQYgAi0AISEDIAItACIhBCACLQAjIQggAi0AJCEJIAItACUhCiACLQAmIQsgAi0AJyEMIAItACghDSACLQApIQ4gAi0AKiEPIAItACshECACLQAsIREgAi0ALSESIAItAC4hEyAHIAVB/v///wBxQQR0IgFqIgAtAAAhBSAALQABIQcgAC0AAiEUIAAtAAMhFSAALQAEIRYgAC0ABSEXIAAtAAYhGCAALQAHIRkgAC0ACCEaIAAtAAkhGyAALQAKIRwgAC0ACyEdIAAtAAwhHiAALQANIR8gAC0ADiEgIAEgIWoiASAALQAPIAItAC9zOgAPIAEgEyAgczoADiABIBIgH3M6AA0gASARIB5zOgAMIAEgECAdczoACyABIA8gHHM6AAogASAOIBtzOgAJIAEgDSAaczoACCABIAwgGXM6AAcgASALIBhzOgAGIAEgCiAXczoABSABIAkgFnM6AAQgASAIIBVzOgADIAEgBCAUczoAAiABIAMgB3M6AAEgASAFIAZzOgAACyACQUBrJAALrikDCX8HfgF8AkACQAJAAkACQAJAAkACQCAALQAAQQFrDgUBAgMEBQALIAEoAgAiACgCACAAKAIIIgJrQQNNBEAgACACQQRBAUEBEJIDIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpB7uqx4wY2AAAMBQsgASgCACEBIAAtAAFFBEAgASgCACABKAIIIgBrQQRNBEAgASAAQQVBAUEBEJIDIAEoAgghAAsgASAAQQVqNgIIIAEoAgQgAGoiAEHorsEAKAAANgAAIABBBGpB7K7BAC0AADoAAEEADwsgASgCACABKAIIIgBrQQNNBEAgASAAQQRBAUEBEJIDIAEoAgghAAsgASAAQQRqNgIIIAEoAgQgAGpB9OTVqwY2AAAMBAsjAEEwayIFJAAgASgCACEDAkACQAJAAkACQAJAIABBCGoiASgCAEEBaw4CAQIAC0EUIQAgASkDCCILQpDOAFQEQCALIQwMBAsDQCAFQQhqIABqIgFBBGsgCyALQpDOAIAiDEKQzgB+faciAkH//wNxQeQAbiIGQQF0QZ61wQBqLwAAOwAAIAFBAmsgAiAGQeQAbGtB//8DcUEBdEGetcEAai8AADsAACAAQQRrIQAgC0L/wdcvViAMIQsNAAsMAwtBFCEAIAEpAwgiDSANQj+HIguFIAt9IgtCkM4AVARAIAshDAwCCwNAIAVBCGogAGoiAUEEayALIAtCkM4AgCIMQpDOAH59pyICQf//A3FB5ABuIgZBAXRBnrXBAGovAAA7AAAgAUECayACIAZB5ABsa0H//wNxQQF0QZ61wQBqLwAAOwAAIABBBGshACALQv/B1y9WIAwhCw0ACwwBCyABKwMIIhK9Qv///////////wCDQv/////////3/wBYBEAgBUEIaiEGIwBBoAJrIgAkACASvSIMQv////////8HgyELIAxCAFMEQCAGQS06AABBASEECwJAAn8CfwJAAkACQCAMQjSIp0H/D3EiAUUgC1BxRQRAIAFBAkkgC0IAUnIhAiALQoCAgICAgIAIhCALIAEbIgtCAoYhDSALQgGDIREgAUG1CGtBzHcgARsiAUEASARAIABBkAJqQcDWwgAgASABQYWiU2xBFHYgAUF/R2siCGoiB0EEdCIBaykDACILIA1CAoQiDhDBBCAAQYACakHI1sIAIAFrKQMAIgwgDhDBBCAAQfABaiAAQZgCaikDACIOIAApA4ACfCIPIABBiAJqKQMAIA4gD1atfCAIIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgEQggUgAEGwAWogCyANIAJBf3OsfCIOEMEEIABBoAFqIAwgDhDBBCAAQZABaiAAQbgBaikDACIOIAApA6ABfCIPIABBqAFqKQMAIA4gD1atfCABEIIFIABB4AFqIAsgDRDBBCAAQdABaiAMIA0QwQQgAEHAAWogAEHoAWopAwAiCyAA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AUHIAGoQ0wQgAUHTAGogAUEgaigCADYAACAAQQU6AAAgASABKQIYNwBLIAAgASkASDcAASAAQQhqIAFBzwBqKQAANwAADAQLIAAgASgCTDYCBCAAQQY6AAALIAFBGGoQ+wELIAQoAgBFDQMgBCgCBCIAQYMBSw0CDAMLQfCMwQBBLEH8jcEAEIwFAAsgBCgCAEUNASAEKAIEIgBBgwFNDQELIAAQAAsgAUGwAWokACADKAIUIgBBhAFJDQEgABAADAELIANBEGogA0EYakHM+cAAEJoCIQEgAEEGOgAAIAAgATYCBAsgAygCECIEQYQBSQ0BCyAEEAALIANBMGokAAwFCyAFKwNAIRYgBUHMAGoQhQdFBEAgACAWOQMQIABCAjcDCCAAIBa9Qv///////////wCDQoCAgICAgID4/wBUQQF0OgAADAMLIABBAjoAACAWRAAAAAAAAODDZiEBIABC////////////AAJ+IBaZRAAAAAAAAOBDYwRAIBawDAELQoCAgICAgICAgH8LQoCAgICAgICAgH8gARsgFkT////////fQ2QbQgAgFiAWYRsiEjcDECAAIBJCP4g3AwgMAgsgBSgCTCEDIwBBgAFrIgEkACABIAM2AhgCQCABQRhqIgMQggcEQCABQRxqIAMQ1gYgAUEANgIoIAFBADYCNCABQoCAgICAATcCLAJAIAEoAhxFDQAgAUHwAGohBCABQegAakEBciECA0AgAUEIaiABQRxqEMcFIAEoAghFDQEgASgCDCEDIAEgASgCKEEBajYCKCABQegAaiADENQBIAEtAGgiB0EGRgRAIAEoAmwhAyAAQQY6AAAgACADNgIEIAFBLGoQuQQgASgCLCIARQ0EIAEoAjAgAEEYbEEIEPoGDAQLIAFBzgBqIgggAkECai0AADoAACABQUBrIgogBEEIaikDADcDACABIAIvAAA7AUwgASAEKQMANwM4IAEoAmwhCSABKAI0IgYgASgCLEYEQCABQSxqEL0DCyABKAIwIAZBGGxqIgMgASkDODcACCADIAc6AAAgAyABLwFMOwABIAMgCTYABCADQQNqIAgtAAA6AAAgA0EQaiAKKQMANwAAIAEgBkEBajYCNCABKAIcDQALCyABQfMAaiABQTRqKAIANgAAIABBBDoAACABIAEpAiw3AGsgACABKQBoNwAB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QAJAIAQEQCAELQAADQkgAUEoakHyzMAAQcYBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQbjOwABBNBDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQezOwABB4AAQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG80MAAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQazQwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQZzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQfzPwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQezPwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQdzPwAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQczPwAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGy3MAAQcgBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQfrdwABB8gAQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakH63cAAQfIAEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAACyABQZABahDvAiAEQQE6AAACQCAAKAIEIgAoAgAiAkEBSyACRXINACAAQQRqKAIAIgJBhAFJDQAgAhAACyAAQQA2AgAgAUGgAmokAA8LQbixwABBFRCiBwALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABB3N/AABDDBAALIAEgASgCkAE2AjBB8LnAAEErIAFBMGpBnLnAAEHM38AAEMMEAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG838AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGs38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGc38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGM38AAEMMEAAsgASADNgKIAkHwucAAQSsgAUGIAmpBnLnAAEH83sAAEMMEAAsgAUEANgKIAiABQYACaiABQYQCaiABQYgCakHs3sAAEPQFAAtByK3AABCVBgALpgYBBX8jAEGgAmsiASQAIAAoAgAiAigCACEEIAJBADYCAAJAAkACQAJAAkACQAJAAkACQCAEBEAgBC0AAA0JIAFBKGpBruDAAEGdAhDuBSABKAIsIQIgASgCKA0BIAFBkAFqIgMgAhCCAyABKALkAUGAgICAeEYNAiABQTBqIgUgA0HgABD6AhogAUEgakHL4sAAQf4BEO4FIAEoAiQhAiABKAIgDQMgAyAFQeAAEPoCGiABIAI2AvABIAFBGGogAUHwAWoQwAEgASgCHCECIAEoAhgNBCABIAI2AvgBIAFBEGpByeTAAEGGAxDuBSABKAIUIQIgASgCEA0FIAEgAjYC/AEgAUEIaiABQfgBahDvBSABKAIMIQIgASgCCA0GIAEgAjYCgAIgASABQfwBahDvBSABKAIEIQMgASgCAA0HIAEgAzYChAIgAUGAAmogAUGEAmoQ5wZFDQggA0GEAU8EQCADEAAgASgCgAIhAgsgAkGEAU8EQCACEAALIAEoAvwBIgJBhAFPBEAgAhAACyABKAL4ASICQYQBTwRAIAIQAAsgAUGQAWoQ7wIgBEEBOgAAAkAgACgCBCIAKAIAIgJBAUsgAkVyDQAgAEEEaigCACICQYQBSQ0AIAIQAAsgAEEANgIAIAFBoAJqJAAPC0G4scAAQRUQogcACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQcDowAAQwwQACyABIAEoApABNgIwQfC5wABBKyABQTBqQZy5wABBsOjAABDDBAALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABBoOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBkOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBgOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABB8OfAABDDBAALIAEgAzYCiAJB8LnAAEErIAFBiAJqQZy5wABB4OfAABDDBAALIAFBADYCiAIgAUGAAmogAUGEAmogAUGIAmpB0OfAABD0BQALQcitwAAQlQYAC6YGAQV/IwBBoAJrIgEkACAAKAIAIgIoAgAhBCACQQA2AgACQAJAAkACQAJAAkACQAJAAkAgBARAIAQtAAANCSABQShqQY3XwABB8wEQ7gUgASgCLCECIAEoAigNASABQZABaiIDIAIQggMgASgC5AFBgICAgHhGDQIgAUEwaiIFIANB4AAQ+gIaIAFBIGpBgNnAAEHlARDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQYDZwABB5QEQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEHY28AAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQcjbwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQbjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQajbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQZjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYjbwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQfjawAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQejawAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGW0cAAQcUBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQdvSwABBggEQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakHd08AAQeIBEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAA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IAIgA0YNARogAkEBaiECIAEgCCAHKAIQEQEARQ0ACyACQQFrCyADSQshAiAAIAk6ACAgACAKNgIQDAELQQEhAgsgBEEQaiQAIAILrwQBBX8CQAJAAkAgAiADTwRAQQEhBgJAIANBAEwNACABIANqIQQCQCADQQNNBEADQCABIARPDQMgBEEBayIELQAAQQpHDQAMAgsAC0GAgoQIIARBBGsoAAAiB0GKlKjQAHNrIAdyQYCBgoR4cUGAgYKEeEcEQANAIAEgBE8NAyAEQQFrIgQtAABBCkcNAAwCCwALIAMgBEEDcWshBCADQQlPBEADQAJAIAQiB0EISA0AQYCChAggASAEaiIIQQhrKAIAIgRBipSo0ABzayAEckGAgYKEeHFBgIGChHhHDQAgB0EIayEEQYCChAggCEEEaygCACIIQYqUqNAAc2sgCHJBgIGChHhxQYCBgoR4Rg0BCwsgASAHaiEEA0AgASAETw0DIARBAWsiBC0AAEEKRw0ACwwBCyABIARqIQQDQCABIARPDQIgBEEBayIELQAAQQpHDQALCyAEIAFrIgRBAWohBSACIARNDQILIAEgBWogAU0NAyAFQQNxIQYgBUEBa0EDSQRAQQAhBAwDCyAFQXxxIQJBACEEA0AgBCABLQAAQQpGaiABLQABQQpGaiABLQACQQpGaiABLQADQQpGaiEEIAFBBGohASACQQRrIgINAAsMAgsgAyACQYiNwgAQ7AQACyAFIAJBmI3CABDsBAALIAYEQANAIAQgAS0AAEEKRmohBCABQQFqIQEgBkEBayIGDQALCyAEQQFqIQYLIAAgBjYCACAAIAMgBWs2AgQLhgcCCH8BfiMAQSBrIggkAAJAAkACQAJAAkACQANAIAEoAgghBwJAIAEoAggiAyABKAIEIgVGDQAgAyAFSQRAIAEoAgAiBiADai0AACIEQSJGIARB3ABGciAEQSBJcg0BIAZBAWohBEEAIAUgA0EBaiIGa0F4cSIJayEFA0AgBUUEQCABIAYgCWo2AggCQCABKAIIIgMgASgCBCIETw0AIAEoAgAhBgNAIAMgBmotAAAiBUEiRiAFQdwARnIgBUEgSXINASABIANBAWoiAzYCCCADIARHDQALCwwDCyADIARqIAVBCGohBSADQQhqIQMpAAAiC0J/hSALQty48eLFi5eu3ACFQoGChIiQoMCAAX0gC0KixIiRosSIkSKFQoGChIiQoMCAAX0gC0KgwICBgoSIkCB9hISDQoCBgoSIkKDAgH+DIgtQDQALIAEgC3qnQQN2IANqQQdrNgIIDAELIAMgBUGojcIAEOsEAAsgASgCCCIDIAEoAgQiBEYNAyADIARPDQQgASgCACIFIANqLQAAIgZB3ABHBEAgBkEiRg0DIAEgA0EBaiIBNgIIIAhBEDYCFCAIQQhqIAUgBCABEI0CIAhBFGogCCgCCCAIKAIMELIFIQEgAEECNgIAIAAgATYCBAwHCyADIAdJDQEgAyAHayIEIAIoAgAgAigCCCIGa0sEfyACIAYgBEEBQQEQkgMgAigCCAUgBgsgAigCBGogBSAHaiAEEPoCGiABIANBAWo2AgggAiACKAIIIARqNgIIIAFBASACEJUCIgNFDQALIABBAjYCACAAIAM2AgQMBQsgByADQeiNwgAQ7QQACyACKAIIIgRFDQIgAyAHSQRAIAcgA0HYjcIAEO0EAAsgAyAHayIGIAIoAgAgBGtLBH8gAiAEIAZBAUEBEJIDIAIoAggFIAQLIAIoAgRqIAUgB2ogBhD6AhogASADQQFqNgIIIABBATYCACAAIAIoAgQ2AgQgAiACKAIIIAZqIgE2AgggACABNgIIDAMLIAhBBDYCFCAIIAEoAgAgAyADEI0CIAhBFGogCCgCACAIKAIEELIFIQEgAEECNgIAIAAgATYCBAwCCyADIARBuI3CABDrBAALIAMgB0kEQCAHIANByI3CABDtBAALIABBADYCACAAIAMgB2s2AgggACAFIAdqNgIEIAEgA0EBajYCCAsgCEEgaiQAC48EAQ1/IAFBAWshDyAAKAIEIQogACgCACELIAAoAgghDAJAA0AgDg0BAkACQCACIARJDQADQCABIARqIQUCQAJAAkAgAiAEayIGQQdNBEAgAiAERw0BIAIhBAwFCwJAIAVBA2pBfHEiCCAFayIDBEBBACEAA0AgACAFai0AAEEKRg0FIAMgAEEBaiIARw0ACyADIAZBCGsiAE0NAQwDCyAGQQhrIQALA0BBgIKECCAIKAIAIglBipSo0ABzayAJckGAgoQIIAhBBGooAgAiCUGKlKjQAHNrIAlycUGAgYKEeHFBgIGChHhHDQIgCEEIaiEIIANBCGoiAyAATQ0ACwwBC0EAIQADQCAAIAVqLQAAQQpGDQIgBiAAQQFqIgBHDQALIAIhBAwDCyADIAZGBEAgAiEEDAMLA0AgAyAFai0AAEEKRgRAIAMhAAwCCyAGIANBAWoiA0cNAAsgAiEEDAILIAAgBGoiA0EBaiEEAkAgAiADTQ0AIAAgBWotAABBCkcNACAEIQUgBCEADAMLIAIgBE8NAAsLQQEhDiACIgAgByIFRg0CCwJAIAwtAAAEQCALQeiuwwBBBCAKKAIMEQUADQELQQAhAyAAIAdHBEAgACAPai0AAEEKRiEDCyAAIAdrIQAgASAHaiEGIAwgAzoAACAFIQcgCyAGIAAgCigCDBEFAEUNAQsLQQEhDQsgDQvkBAEDfyMAQUBqIgIkACAAKAIAIQMgAEEANgIAAkACQAJAAkACQAJAIAMEQCACIAMpAgA3AiAgAiABNgIoIAJBGGogAkEoahDTBiACKAIYRQ0BIAIgAigCHCIANgI8IAJBPGoQ/AZFDQIgAiAANgIsIAJBEGogAkEsahDsBSACKAIUIQAgAigCEA0DIAIgADYCMCAAEANBAUYEQCACQYABNgI0IAJBzITBAEESEAIiATYCOCACIAJBIGogAkE0aiACQThqENQFIAIoAgQhBCACKAIADQUgBEGEAU8EQCAEEAAgAigCOCEBCyABQYQBTwRAIAEQAAsgAigCNCIBQYQBSQ0HIAEQAAwHCyACQYABNgI4IAJBCGogAkEkaiACQThqIAJBMGoQ1AUgAigCDCEAIAIoAghFDQUgAiAANgI8QZCCwQBBKyACQTxqQYCCwQBB8ITBABDDBAALQZiAwQBBHBCiBwALQbyEwQAQiAcACyACIAA2AjxBkILBAEErIAJBPGpB3ILBAEGQhcEAEMMEAAsgAiAANgI8QZCCwQBBKyACQTxqQYCCwQBBgIXBABDDBAALIAIgBDYCPEGQgsEAQSsgAkE8akGAgsEAQeCEwQAQwwQACwJAIABBhAFJDQAgABAAIAIoAjgiAEGEAUkNACAAEAALIAIoAjAhAAsgAEGEAU8EQCAAEAALIAIoAiwiAEGEAU8EQCAAEAALIAIoAigiAEGEAU8EQCAAEAALIAIoAiQhACACKAIgIgFBhAFPBEAgARAACyAAQYQBTwRAIAAQAAsgA0EIQQQQ+gYgAkFAayQAC9QEAQV/IwBBQGoiASQAQcnNwwAtAAAaIAEgADYCDAJAAkACQEE0QQQQ7QYiAARAIABBADYCHCAAQQA2AhQgAEKAgICAIDcCCCAAQoKAgIAQNwIAQcnNwwAtAAAaQQRBBBDtBiICRQ0BIAIgADYCACACQYyAwgAQoAchAyAAIAAoAgBBAWoiBDYCACABQYyAwgA2AhQgASACNgIQIAEgAzYCGCAERQ0CQcnNwwAtAAAaQQRBBBDtBiICRQ0DIAIgADYCACACQfj/wQAQoAchAyABQfj/wQA2AiAgASACNgIcIAEgAzYCJCABQQxqKAIAIAFBEGooAgggAUEcaigCCBCEASICQYQBTwRAIAIQAAsgAUEwaiABQRhqKAIANgIAIAFBPGogAUEkaigCADYCACABIAEpAhA3AyggASABKQIcNwI0IAAoAghFBEAgAEEcaiECIABBfzYCCAJAIAAoAhwiA0UNAAJAIAAoAiQQH0UNACAAKAIgIgQoAgAiBQRAIAMgBREAAAsgBCgCBCIFRQ0AIAMgBSAEKAIIEPoGCyAAKAIwEB9FDQAgACgCKCEDIAAoAiwiBCgCACIFBEAgAyAFEQAACyAEKAIEIgVFDQAgAyAFIAQoAggQ+gYLIAIgASkDKDcCACACQRBqIAFBOGopAwA3AgAgAkEIaiABQTBqKQMANwIAIAAgACgCCEEBajYCCCABKAIMIgJBhAFPBEAgAhAACyABQUBrJAAgAA8LQcCCwgAQpwUAC0EEQTQQrAcAC0EEQQQQrAcLAAtBBEEEEKwHAAuxBAEKfyMAQSBrIgIkAAJAIAEoAgQiBCABKAIIIghJBEAgASgCACEJA0AgASAEQQFqIgM2AgQgAkEUaiAJIAQQpQUgAigCFCIGQYCAgIB4RwRAAkACQCACKAIcIgNBAEgNACACKAIYIQdBASEBIAMEQEHJzcMALQAAGkEBIQUgA0EBEO0GIgFFDQELIAEgByADEPoCIQUgBgRAIAcgBkEBEPoGC0HJzcMALQAAGkEwQQQQ7QYiAQRAIAEgAzYCCCABIAU2AgQgASADNgIAIAJBATYCECACIAE2AgwgAkEENgIIIARBAWoiBCAITw0CQQEhBgNAIAJBFGogCSAEEKUFIAIoAhQiBUGAgICAeEcEQEEAIQcCQCACKAIcIgNBAEgNACACKAIYIQoCQCADRQRAQQEhCwwBC0HJzcMALQAAGkEBIQcgA0EBEO0GIgtFDQELIAsgCiADEPoCIQcgBQRAIAogBUEBEPoGCyACKAIIIAZGBEAgAkEIaiAGQQFBBEEMEJIDIAIoAgwhAQsgASAGQQxsaiIFIAM2AgggBSAHNgIEIAUgAzYCACACIAZBAWoiBjYCECAEQQFqIgQgCEkNAgwFCyAHIAMQ2QYACyAIIARBAWoiBEcNAAsMAgtBBEEwENkGAAsgBSADENkGAAsgACACKQIINwIAIABBCGogAkEQaigCADYCAAwDCyADIgQgCEcNAAsLIABBADYCCCAAQoCAgIDAADcCAAsgAkEgaiQAC7QEAQh/IwBBQGoiAiQAAkACQAJAIAEoAgAiBCgCFCIDIAQoAhAiCEkEQCAEQQxqIQYgBCgCDCEJA0AgAyAJai0AACIHQQlrIgVBF0tBASAFdEGTgIAEcUVyDQIgBCADQQFqIgM2AhQgAyAIRw0ACwsgAkEDNgI0IAJBKGogBEEMahCYBSAAIAJBNGogAigCKCACKAIsELIFNgIEDAELIAdB/QBGBEBBACEFIABBADoAAQwCCwJAAkAgAS0ABEUEQCAHQSxHDQFBASEFIAQgA0EBaiIDNgIUIAMgCEkEQANAIAMgCWotAAAiB0EJayIBQRlLDQRBASABdEGTgIAEcUUEQCABQRlHDQUgAEEBOgABQQAhBQwHCyAEIANBAWoiAzYCFCADIAhHDQALCyACQQU2AjQgAkEQaiAGEJgFIAAgAkE0aiACKAIQIAIoAhQQsgU2AgQMBAtBACEFIAFBADoABCAHQSJHBEAgAkERNgI0IAIgBhCYBSAAIAJBNGogAigCACACKAIEELIFNgIEDAMLIABBAToAAQwDCyACQQg2AjQgAkEgaiAGEJgFIAAgAkE0aiACKAIgIAIoAiQQsgU2AgQMAQsgB0H9AEcEQCACQRE2AjQgAkEIaiAGEJgFIAAgAkE0aiACKAIIIAIoAgwQsgU2AgQMAQsgAkEVNgI0IAJBGGogBhCYBSAAIAJBNGogAigCGCACKAIcELIFNgIEC0EBIQULIAAgBToAACACQUBrJAAL/gMBCX8jAEEQayIEJAACfwJAIAIoAgQiA0UNACAAIAIoAgAgAyABKAIMEQUARQ0AQQEMAQsgAigCDCIGBEAgAigCCCIDIAZBDGxqIQggBEEMaiEJA0ACQAJAAkACQCADLwEAQQFrDgICAQALAkAgAygCBCICQcEATwRAIAFBDGooAgAhBgNAQQEgAEHusMMAQcAAIAYRBQANCBogAkFAaiICQcAASw0ACwwBCyACRQ0DCyAAQe6wwwAgAiABQQxqKAIAEQUARQ0CQQEMBQsgACADKAIEIAMoAgggAUEMaigCABEFAEUNAUEBDAQLIAMvAQIhAiAJQQA6AAAgBEEANgIIAn9BBEEFIAJBkM4ASRsgAkHoB08NABpBASACQQpJDQAaQQJBAyACQeQASRsLIgYgBEEIaiIKaiIHQQFrIgUgAiACQQpuIgtBCmxrQTByOgAAAkAgBSAKRg0AIAdBAmsiBSALQQpwQTByOgAAIARBCGogBUYNACAHQQNrIgUgAkHkAG5BCnBBMHI6AAAgBEEIaiAFRg0AIAdBBGsiBSACQegHbkEKcEEwcjoAACAEQQhqIAVGDQAgB0EFayACQZDOAG5BMHI6AAALIAAgBEEIaiAGIAFBDGooAgARBQBFDQBBAQwDCyADQQxqIgMgCEcNAAsLQQALIARBEGokAAvyDQEGfyMAQSBrIgYkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIIIgQgACgCBCIFSQRAIAAgBEEBaiIDNgIIIAQgACgCACIHai0AAEEiaw5UAwEBAQEBAQEBAQEBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQBAQEBAQYBAQEHAQEBAQEBAQgBAQEJAQoCAQsgBkEENgIUIAZBCGogACgCACAFIAQQjQIgBkEUaiAGKAIIIAYoAgwQsgUMCwsgBkEMNgIUIAYgByAFIAMQjQIgBkEUaiAGKAIAIAYoAgQQsgUMCgsgASEFIwBBQGoiAyQAIANBNGogACIEEJYDAn8CQAJ/AkACQAJAAkACQAJAAkACQAJAAkAgAy8BNEUEQCADLwE2IgFBgPgDcUGAuANGQQAgBRsNAQJAAkACQCABQYDIAGpB//8DcUGA+ANJBEAgASEADAELIAUNAQNAIAQoAggiACAEKAIEIgdPDQYgBCgCACIIIABqLQAAQdwARw0MIAQgAEEBaiIFNgIIIAUgB08NByAFIAhqLQAAQfUARw0KIAQgAEECajYCCCADQTRqIAQQlgMgAy8BNA0IIAMvATYiAEGAQGtB//8DcUGA+ANPDQMgAigCACACKAIIIgVrQQNNBH8gAiAFQQRBAUEBEJIDIAIoAggFIAULIAIoAgRqIgVB7QE6AAAgBUECaiABQT9xQYABcjoAACAFIAFBBnZBL3FBgAFyOgABIAIgAigCCEEDajYCCCAAIQEgAEGAyABqQf//A3FBgPgDTw0ACwsgAEH//wNxQYABSQ0OIAIoAgAgAigCCCIBa0EDTQR/IAIgAUEEQQFBARCSAyACKAIIBSABCyACKAIEaiEBIABB//8DcUGAEE8NDCAAQQZ2QUByIQVBAgwNCyAEKAIIIgAgBCgCBCIHTw0DIAQgAEEBaiIFNgIIIAQoAgAiCCAAai0AAEHcAEcNCiAFIAdPDQQgBCAAQQJqIgA2AgggBSAIai0AAEH1AEcNCCADQTRqIAQQlgMgAy8BNA0FIAMvATYiAEGAQGtB//8DcUGA+ANJDQYLIABBgMgAakH//wNxIAFBgNAAakH//wNxQQp0aiIFQYCABGohBCACKAIAIAIoAggiAWtBA00EfyACIAFBBEEBQQEQkgMgAigCCAUgAQsgAigCBGoiASAEQRJ2QfABcjoAACABQQNqIABBP3FBgAFyOgAAIAEgBUEGdkE/cUGAAXI6AAIgASAEQQx2QT9xQYABcjoAASACIAIoAghBBGo2AghBAAwNCyADKAI4DAwLIANBFDYCNCADIAQoAgAgBCgCBCAEKAIIEI0CIANBNGogAygCACADKAIEELIFDAsLIANBBDYCNCADQShqIAQoAgAgByAAEI0CIANBNGogAygCKCADKAIsELIFDAoLIANBBDYCNCADQRhqIAggByAFEI0CIANBNGogAygCGCADKAIcELIFDAkLIAMoAjgMCAsgA0EUNgI0IANBCGogBCgCACAEKAIEIAQoAggQjQIgA0E0aiADKAIIIAMoAgwQsgUMBwsgAUH//wNxIAIQ2QMgBEEAIAIQlQIMBgsgA0EXNgI0IANBEGogCCAHIAAQjQIgA0E0aiADKAIQIAMoAhQQsgUMBQsgAUH//wNxIAIQ2QNBAAwECyADQRc2AjQgA0EgaiAIIAcgBRCNAiADQTRqIAMoAiAgAygCJBCyBQwDCyABIABBBnZBP3FBgAFyOgABIABBgOADcUEMdkFgciEFQQMLIQQgASAFOgAAIAEgBGpBAWsgAEE/cUGAAXI6AAAgAiACKAIIIARqNgIIQQAMAQsgAigCCCIBIAIoAgBGBEAgAhDkAwsgAigCBCABaiAAOgAAIAIgAUEBajYCCEEACyADQUBrJAAMCQsgAigCCCIAIAIoAgBGBEAgAhDkAwsgAigCBCAAakEiOgAADAcLIAIoAggiACACKAIARgRAIAIQ5AMLIAIoAgQgAGpB3AA6AAAMBgsgAigCCCIAIAIoAgBGBEAgAhDkAwsgAigCBCAAakEvOgAADAULIAIoAggiACACKAIARgRAIAIQ5AMLIAIoAgQgAGpBCDoAAAwECyACKAIIIgAgAigCAEYEQCACEOQDCyACKAIEIABqQQw6AAAMAwsgAigCCCIAIAIoAgBGBEAgAhDkAwsgAigCBCAAakEKOgAADAILIAIoAggiACACKAIARgRAIAIQ5AMLIAIoAgQgAGpBDToAAAwBCyACKAIIIgAgAigCAEYEQCACEOQDCyACKAIEIABqQQk6AAALIAIgAEEBajYCCEEACyAGQSBqJAAL4hUCIH8DfkHszcMAKAIARQRAQezNwwAoAgAhBkHszcMAQgE3AgBB+M3DACgCACEEQfTNwwAoAgAhAkH0zcMAQdjhwQApAgA3AgBBgM7DACgCACEFQfzNwwBB4OHBACkCADcCAAJAIAZFIARFcg0AIAUEQCACQQhqIQcgAikDAEJ/hUKAgYKEiJCgwIB/gyEiIAIhBgNAICJQBEADQCAGQeAAayEGIAcpAwAgB0EIaiEHQoCBgoSIkKDAgH+DIiJCgIGChIiQoMCAf1ENAAsgIkKAgYKEiJCgwIB/hSEiCyAGICJ6p0EDdkF0bGpBBGsoAgAiA0GEAU8EQCADEAALICJCAX0gIoMhIiAFQQFrIgUNAAsLIAQgBEEMbEETakF4cSIGakEJaiIERQ0AIAIgBmsgBEEIEPoGCwsCQAJAQfDNwwAoAgBFBEBB8M3DAEF/NgIAQfjNwwAoAgAiBCAAcSEGIABBGXYiGq1CgYKEiJCgwIABfiEkQfTNwwAoAgAhBQNAIAUgBmopAAAiIyAkhSIiQn+FICJCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiIlBFBEADQCAAIAUgInqnQQN2IAZqIARxQXRsaiICQQxrKAIARgRAIAJBCGsoAgAgAUYNBgsgIkIBfSAigyIiUEUNAAsLICMgI0IBhoNCgIGChIiQoMCAf4NQRQ0CIAYgCUEIaiIJaiAEcSEGDAALAAtBwOHBABCnBQALQfzNwwAoAgBFBEAjAEEgayIOJAACQAJAQYDOwwAoAgAiBkEBaiICIAZPBEBB+M3DACgCACIHIAdBAWoiCEEDdiIEQQdsIAdBCEkbIgxBAXYgAkkEQAJAAkACfyACIAxBAWogAiAMSxsiAkEITwRAQX8gAkEDdEEHbkEBa2d2QQFqIAJB/////wFNDQEaELMFIA4oAhgaDAcLQQRBCCACQQRJGwsiAq1CDH4iIkIgiKcNACAipyIEQXhLDQAgBEEHakF4cSIFIAJBCGoiA2oiBCAFSQ0AIARB+f///wdJDQELELMFIA4oAggaDAQLQcnNwwAtAAAaIARBCBDtBiIJRQRAIAQQwQYgDigCEBoMBAsgBSAJakH/ASADEPkDIQkgAkEBayIMIAJBA3ZBB2wgAkEJSRshFCAGRQRAQfTNwwAoAgAhBAwDCyAJQQxrIRUgCUEIaiEWQfTNwwAoAgAiBEEMayEPIAQpAwBCf4VCgIGChIiQoMCAf4MhIiAEIQIgBiEFA0AgIlAEQANAIAtBCGohCyACKQMIIAJBCGohAkKAgYKEiJCgwIB/gyIiQoCBgoSIkKDAgH9RDQALICJCgIGChIiQoMCAf4UhIgsgCSAPICJ6p0EDdiALaiIXQXRsaiIDKAIAIgogAygCBCAKGyIYIAxxIgpqKQAAQoCBgoSIkKDAgH+DIiNQBEBBCCEDA0AgAyAKaiEKIANBCGohAyAJIAogDHEiCmopAABCgIGChIiQoMCAf4MiI1ANAAsLICJCAX0gIoMhIiAJICN6p0EDdiAKaiAMcSIDaiwAAEEATgRAIAkpAwBCgIGChIiQoMCAf4N6p0EDdiEDCyADIAlqIBhBGXYiCjoAACAWIANBCGsgDHFqIAo6AAAgFSADQXRsaiIDQQhqIA8gF0F0bGoiCkEIaigAADYAACADIAopAAA3AAAgBUEBayIFDQALDAILQQAhAkH0zcMAKAIAIQUCQCAEIAhBB3FBAEdqIgRFDQAgBEEBRwRAIARB/v///wNxIQsDQCACIAVqIgMgAykDACIiQn+FQgeIQoGChIiQoMCAAYMgIkL//v379+/fv/8AhHw3AwAgA0EIaiIDIAMpAwAiIkJ/hUIHiEKBgoSIkKDAgAGDICJC//79+/fv37//AIR8NwMAIAJBEGohAiALQQJrIgsNAAsLIARBAXFFDQAgAiAFaiICIAIpAwAiIkJ/hUIHiEKBgoSIkKDAgAGDICJC//79+/fv37//AIR8NwMACwJAAkAgCEEITwRAIAUgCGogBSkAADcAAAwBCyAFQQhqIAUgCBCwBxogCEUNAQsgBUEIaiELIAVBDGshIUEAIQIDQAJAIAUgAiIEaiIKLQAAQYABRw0AIAUgAkF0bCIDaiICQQFrIQ8gAkECayEUIAJBA2shFSACQQRrIRYgAkEFayEXIAJBBmshGCACQQdrIRsgAkEIayEcIAJBCWshHSACQQprIR4gAkELayEfIAMgIWohICACQQxrIQkCQANAICAoAgAiAiAgKAIEIAIbIg0gB3EiCCEDIAUgCGopAABCgIGChIiQoMCAf4MiI1AEQEEIIQIDQCACIANqIQMgAkEIaiECIAUgAyAHcSIDaikAAEKAgYKEiJCgwIB/gyIjUA0ACwsgBSAjeqdBA3YgA2ogB3EiAmosAABBAE4EQCAFKQMAQoCBgoSIkKDAgH+DeqdBA3YhAgsgAiAIayAEIAhrcyAHcUEISQ0BIAIgBWoiAy0AACADIA1BGXYiAzoAACALIAJBCGsgB3FqIAM6AAAgBSACQXRsaiICQQxrIQNB/wFHBEAgCS0AACEIIAkgAy0AADoAACAfLQAAIQ0gHyACQQtrIhAtAAA6AAAgHi0AACERIB4gAkEKayISLQAAOgAAIB0tAAAhEyAdIAJBCWsiGS0AADoAACADIAg6AAAgECANOgAAIBIgEToAACAZIBM6AAAgHC0AACEDIBwgAkEIayIILQAAOgAAIBstAAAhDSAbIAJBB2siEC0AADoAACAYLQAAIREgGCACQQZrIhItAAA6AAAgFy0AACETIBcgAkEFayIZLQAAOgAAIAggAzoAACAQIA06AAAgEiAROgAAIBkgEzoAACAWLQAAIQMgFiACQQRrIggtAAA6AAAgFS0AACENIBUgAkEDayIQLQAAOgAAIBQtAAAhESAUIAJBAmsiEi0AADoAACAPLQAAIRMgDyACQQFrIgItAAA6AAAgCCADOgAAIBAgDToAACASIBE6AAAgAiATOgAADAELCyAKQf8BOgAAIAsgBEEIayAHcWpB/wE6AAAgA0EIaiAJQQhqKAAANgAAIAMgCSkAADcAAAwBCyAKIA1BGXYiAjoAACALIARBCGsgB3FqIAI6AAALIARBAWohAiAEIAdHDQALC0H8zcMAIAwgBms2AgAMAgsQswUgDigCABoMAQtB+M3DACAMNgIAQfTNwwAgCTYCAEH8zcMAIBQgBms2AgAgB0UNACAHIAhBDGxBB2pBeHEiAmpBCWoiBkUNACAEIAJrIAZBCBD6BgsgDkEgaiQACyAAIAEQAiEHQfTNwwAoAgAiBEH4zcMAKAIAIgUgAHEiBmopAABCgIGChIiQoMCAf4MiIlAEQEEIIQIDQCACIAZqIQYgAkEIaiECIAQgBSAGcSIGaikAAEKAgYKEiJCgwIB/gyIiUA0ACwsgBCAieqdBA3YgBmogBXEiAmosAAAiBkEATgRAIAQgBCkDAEKAgYKEiJCgwIB/g3qnQQN2IgJqLQAAIQYLIAIgBGogGjoAACAEIAJBCGsgBXFqQQhqIBo6AABB/M3DAEH8zcMAKAIAIAZBAXFrNgIAQYDOwwBBgM7DACgCAEEBajYCACAEIAJBdGxqIgJBBGsgBzYCACACQQhrIAE2AgAgAkEMayAANgIACyACQQRrKAIAEAFB8M3DAEHwzcMAKAIAQQFqNgIAC74EAgV/AX4jAEHgAGsiAiQAIAJBDGogAUHUAGoQ+AQCQAJAAkACQCACKAIUQQZHDQAgAigCECIFQdiPwQBBBhCpBQ0AIAEoAgwiBARAIAEoAgAiA0EIaiEBIAMpAwBCf4VCgIGChIiQoMCAf4MhBwNAIAdQBEADQCADQcAHayEDIAEpAwAgAUEIaiEBQoCBgoSIkKDAgH+DIgdCgIGChIiQoMCAf1ENAAsgB0KAgYKEiJCgwIB/hSEHCyACQUBrIAMgB3qnQQN2QYh/bGpB6ABrEMMBIAIoAkAiBkGAgICAeEcNAyAHQgF9IAeDIQcgBEEBayIEDQALCyAAQYCAgIB4NgIAIABBAToABCACKAIMIgBFDQMgBSAAQQEQ+gYMAwsgAkECNgJEIAJB9JXBADYCQCACQgE3AkwgAiACQQxqrUKAgICA8CCENwMYIAIgAkEYaiIDNgJIIAJBLGogAkFAayIEEOICIAIoAjAhASACIAIoAjQ2AjwgAiABNgI4IAJBATYCRCACQcCOwQA2AkAgAkIBNwJMIAIgAkE4aq1CgICAgMAAhDcDWCACIAJB2ABqNgJIIAMgBBDiAiACQQI6ACQgAEEIaiACQSBqKQIANwIAIAAgAikCGDcCACACKAIsIgBFDQEgASAAQQEQ+gYMAQsgACACKQBFNwAFIABBDGogAkHMAGooAAA2AAAgACACLQBEOgAEIAAgBjYCAAsgAigCDCIARQ0AIAIoAhAgAEEBEPoGCyACQeAAaiQAC/IDAQp/IABBEGooAgAgAEEEaigCACAAQRRqKAIAIgYgAEEIaigCACICIAIgBksbEKkFIQMgAEEkQRggAEEoaigCACAAQRxqKAIAIABBLGooAgAiBCAAQSBqKAIAIgUgBCAFSRsQqQUiByAEIAVrIAcbQQBIIgUbaiEEIABBGEEkIAUbaiIFIAAgAyAGIAJrIAMbIgJBf3NBH3ZBDGxqIgYgBCAEQQRqKAIAIAAgAkEfdkEMbGoiAEEEaigCACAEQQhqKAIAIgIgAEEIaigCACIDIAIgA0kbEKkFIgcgAiADayAHG0EASCIHGyAFQQRqKAIAIAZBBGooAgAgBUEIaigCACICIAZBCGooAgAiAyACIANJGxCpBSIIIAIgA2sgCBtBAEgiCBsiAkEEaigCACAAIAQgBiAIGyAHGyIDQQRqKAIAIAJBCGooAgAiCSADQQhqKAIAIgogCSAKSRsQqQUhCyABQQhqIAQgACAHGyIAQQhqKAIANgIAIAEgACkCADcCACABIAIgAyALIAkgCmsgCxtBAEgiABsiBCkCADcCDCABQRRqIARBCGooAgA2AgAgAUEgaiADIAIgABsiAEEIaigCADYCACABIAApAgA3AhggASAGIAUgCBsiACkCADcCJCABQSxqIABBCGooAgA2AgALkQQCDX8BfiMAQTBrIgMkACACrUIYfiIQpyEHAkAgEEIgiKcgB0H4////B0tyDQACQAJAIAdFBEBBCCEIDAELQcnNwwAtAAAaQQghBSAHQQgQ7QYiCEUNAiACRQ0AIANBFGohCSADQRBqIQYgA0EWaiELIANBHGohDEEAIQUgAiEKA0AgBSAHRg0BAkACQAJAAkACQAJAIAEgBWoiBC0AACINQQFrDgUAAQIDBAULIARBAWotAAAhDgwECyAJQQhqIARBEGopAQA3AQAgCSAEQQhqKQEANwEADAMLIANBJGogBEEEahD4BCAGQQhqIANBLGooAgA2AQAgBiADKQIkNwEADAILIANBJGogBEEIaigCACAEQQxqKAIAEJkCIAZBCGogA0EsaigCADYBACAGIAMpAiQ3AQAMAQsCQCAEQQxqKAIARQRAIANBADYCLCADQQA2AiQMAQsgBEEEaigCACIPRQ0EIANBJGogDyAEQQhqKAIAEMEBCyAGIAMpAiQ3AQAgBkEIaiADQSxqKAIANgEACyAFIAhqIgQgDToAACAEQQFqIA46AAAgBEECaiADKQEONwEAIARBCmogCykBADcBACAEQRBqIAwpAQA3AQAgBUEYaiEFIApBAWsiCg0ACwsgACACNgIIIAAgCDYCBCAAIAI2AgAgA0EwaiQADwtBgKjAABCIBwALIAUgBxDZBgALigQCCH8BfCMAQdAAayIDJAACQAJAAkACQAJAIAAoAgAiBEGBARBHRQRAIAQQGg4CAgEDCyADQQc6ADAgA0EwaiABIAIQ3wQhAAwEC0EBIQULQQEhBkEAIQAMAQsgA0EQaiAEEAwgAygCEARAIAMrAxghC0EDIQBBASEGDAELIANBCGogBBALAn8CQCADKAIIIgRFDQAgAygCDCIIQYCAgIB4Rg0AIAghBUEFDAELAkACQCAAEIYHBEAgA0EwaiAAEJ8EIAMoAjghBSADKAI0IQogAygCMCEJDAELIAAQhAdFDQEgAyAAEMUHIgc2AkggA0EwaiADQcgAahCfBCADKAI4IQUgAygCNCEKIAMoAjAhCSAHQYQBSQ0AIAcQAAsgCUGAgICAeEYNAEEBIQYgCiEEQQYMAQsgA0EBNgI0IANBiODBADYCMCADQgE3AjwgAyAArUKAgICAMIQ3A0ggAyADQcgAajYCOCADQSRqIANBMGoQ4gJBgICAgHghCSADKAIsIQUgAygCKCEEIAMoAiQhCEERCyEAIAWtvyELIAYhBwsgAyALOQM4IAMgBDYCNCADIAU6ADEgAyAAOgAwIANBMGogASACEN8EIQACQCAHRQRAIAYgCEVyRQ0BDAILIAkEQCAKIAlBARD6BgsgCEUgBnINAQsgBCAIQQEQ+gYLIANB0ABqJAAgAAuqBAEDfwJAAkACQAJAAkACQAJAAkAgAC0AHg4FAAcHAQIHCyAAKAIQIgBBhAFJDQYgABAADwsCQAJAAkAgAC0AcA4EAAICAQILIAAoAlQiAUGEAUkNASABEAAMAQsCQAJAIAAtAGwOBAACAgECCyAAKAJkIgFBhAFJDQEgARAADAELIABB6ABqEMQDCyAAKAJEIgIEQCAAKAJAIQEDQCABKAIAIgMEQCABQQRqKAIAIANBARD6BgsgAUEMaiEBIAJBAWsiAg0ACwsgACgCPCIBBEAgACgCQCABQQxsQQQQ+gYLIAAoAjgiAUGEAU8EQCABEAALIAAoAiwiAUGAgICAeEYNAyAALQAcDQEMAwsCQCAALQBIDgQABAQCBAsgACgCICIBBEAgACgCJCABQQEQ+gYLIAAoAjgiAUGEAU8EQCABEAALIAAoAjQiAgRAIAAoAjAhAQNAIAEoAgAiAwRAIAFBBGooAgAgA0EBEPoGCyABQQxqIQEgAkEBayICDQALCyAAKAIsIgFFDQMgACgCMCABQQxsQQQQ+gYMAwsgACgCNCICBEAgACgCMCEBA0AgASgCACIDBEAgAUEEaigCACADQQEQ+gYLIAFBDGohASACQQFrIgINAAsgACgCLCEBCyABRQ0BIAAoAjAgAUEMbEEEEPoGDAELIABBxABqEMQDDAELIABBADoAHCAAKAIgIgFFDQAgACgCJCABQQEQ+gYLIABBADoAHQsLpgQBA38jAEFAaiICJAAgAkEANgIUIAJCgICAgBA3AgwgAkEgaiIEIAFBCGopAgA3AwAgAiABKQIANwMYIAJBKGoiAUEBNgIEIAEgAkEYaiIDKAIIIAMoAgRrQQF0IAMoAgBBgIDEAEdyIgM2AgggASADNgIAIAIoAigiAQRAIAJBDGpBACABQQFBARCSAwsgAkEwaiAEKQMANwMAIAIgAikDGDcDKCACQShqEIMFIgFBgIDEAEcEQANAAkACfwJAIAFBgAFPBEAgAkEANgI8IAFBgBBJDQEgAUGAgARJBEAgAiABQT9xQYABcjoAPiACIAFBDHZB4AFyOgA8IAIgAUEGdkE/cUGAAXI6AD1BAwwDCyACIAFBP3FBgAFyOgA/IAIgAUESdkHwAXI6ADwgAiABQQZ2QT9xQYABcjoAPiACIAFBDHZBP3FBgAFyOgA9QQQMAgsgAigCFCIDIAIoAgxGBEAgAkEMahDkAwsgAigCECADaiABOgAAIAIgA0EBajYCFAwCCyACIAFBP3FBgAFyOgA9IAIgAUEGdkHAAXI6ADxBAgshASABIAIoAgwgAigCFCIDa0sEfyACQQxqIAMgAUEBQQEQkgMgAigCFAUgAwsgAigCEGogAkE8aiABEPoCGiACIAIoAhQgAWo2AhQLIAJBKGoQgwUiAUGAgMQARw0ACwsgACACKQIMNwIAIABBCGogAkEUaigCADYCACACQUBrJAALuQQBBX8jAEGQAmsiASQAIAAoAgAiAigCACEDIAJBADYCAAJAAkACQAJAAkACQAJAIAMEQCADLQAADQcgAUEYakHLvsAAQacBEO4FIAEoAhwhAiABKAIYDQEgAUGAAWoiBCACEIIDIAEoAtQBQYCAgIB4Rg0CIAFBIGoiBSAEQeAAEPoCGiABQRBqQY3LwABBPxDuBSABKAIUIQIgASgCEA0DIAQgBUHgABD6AhogASACNgLgASABQQhqIAQgAUHgAWoQnAEgASgCCEUNBCABIAEoAgwiBRALIAEoAgAiAkUNBSABKAIEIQQgASACNgLwASABIAQ2AvQBIAEgBDYC7AEgBEERRw0GIAJB27XAAEEREKkFDQYgAkERQQEQ+gYgBUGEAU8EQCAFEAALIAFBgAFqEO8CIANBAToAAAJAIAAoAgQiACgCACIDQQFLIANFcg0AIABBBGooAgAiA0GEAUkNACADEAALIABBADYCACABQZACaiQADwtBuLHAAEEVEKIHAAsgASACNgKAAUHwucAAQSsgAUGAAWpBnLnAAEGczMAAEMMEAAsgASABKAKAATYCIEHwucAAQSsgAUEgakGcucAAQYzMwAAQwwQACyABIAI2AoABQfC5wABBKyABQYABakGcucAAQfzLwAAQwwQAC0HwvMAAQSFBzMvAABDYBQALQdzLwAAQiAcACyABQQA2AvgBIAFB7AFqQbzAwAAgAUH4AWpB7MvAABDyBQALQcitwAAQlQYAC7kEAQV/IwBBkAJrIgEkACAAKAIAIgIoAgAhAyACQQA2AgACQAJAAkACQAJAAkACQCADBEAgAy0AAA0HIAFBGGpBy77AAEGnARDuBSABKAIcIQIgASgCGA0BIAFBgAFqIgQgAhCCAyABKALUAUGAgICAeEYNAiABQSBqIgUgBEHgABD6AhogAUEQakHyv8AAQSkQ7gUgASgCFCECIAEoAhANAyAEIAVB4AAQ+gIaIAEgAjYC4AEgAUEIaiAEIAFB4AFqEJwBIAEoAghFDQQgASABKAIMIgUQCyABKAIAIgJFDQUgASgCBCEEIAEgAjYC8AEgASAENgL0ASABIAQ2AuwBIARBEUcNBiACQdu1wABBERCpBQ0GIAJBEUEBEPoGIAVBhAFPBEAgBRAACyABQYABahDvAiADQQE6AAACQCAAKAIEIgAoAgAiA0EBSyADRXINACAAQQRqKAIAIgNBhAFJDQAgAxAACyAAQQA2AgAgAUGQAmokAA8LQbixwABBFRCiBwALIAEgAjYCgAFB8LnAAEErIAFBgAFqQZy5wABB9MDAABDDBAALIAEgASgCgAE2AiBB8LnAAEErIAFBIGpBnLnAAEHkwMAAEMMEAAsgASACNgKAAUHwucAAQSsgAUGAAWpBnLnAAEHUwMAAEMMEAAtB8LzAAEEhQZzAwAAQ2AUAC0GswMAAEIgHAAsgAUEANgL4ASABQewBakG8wMAAIAFB+AFqQcTAwAAQ8gUAC0HIrcAAEJUGAAu5BAEFfyMAQZACayIBJAAgACgCACICKAIAIQMgAkEANgIAAkACQAJAAkACQAJAAkAgAwRAIAMtAAANByABQRhqQe7uwABBoAEQ7gUgASgCHCECIAEoAhgNASABQYABaiIEIAIQggMgASgC1AFBgICAgHhGDQIgAUEgaiIFIARB4AAQ+gIaIAFBEGpBjvDAAEEzEO4FIAEoAhQhAiABKAIQDQMgBCAFQeAAEPoCGiABIAI2AuABIAFBCGogBCABQeABahCcASABKAIIRQ0EIAEgASgCDCIFEAsgASgCACICRQ0FIAEoAgQhBCABIAI2AvABIAEgBDYC9AEgASAENgLsASAEQR5HDQYgAkHk8MAAQR4QqQUNBiACQR5BARD6BiAFQYQBTwRAIAUQAAsgAUGAAWoQ7wIgA0EBOgAAAkAgACgCBCIAKAIAIgNBAUsgA0VyDQAgAEEEaigCACIDQYQBSQ0AIAMQAAsgAEEANgIAIAFBkAJqJAAPC0G4scAAQRUQogcACyABIAI2AoABQfC5wABBKyABQYABakGcucAAQbzxwAAQwwQACyABIAEoAoABNgIgQfC5wABBKyABQSBqQZy5wABBrPHAABDDBAALIAEgAjYCgAFB8LnAAEErIAFBgAFqQZy5wABBnPHAABDDBAALQfC8wABBIUHE8MAAENgFAAtB1PDAABCIBwALIAFBADYC+AEgAUHsAWpBhPHAACABQfgBakGM8cAAEPIFAAtByK3AABCVBgALuQQBBX8jAEGQAmsiASQAIAAoAgAiAigCACEDIAJBADYCAAJAAkACQAJAAkACQAJAIAMEQCADLQAADQcgAUEYakHLvsAAQacBEO4FIAEoAhwhAiABKAIYDQEgAUGAAWoiBCACEIIDIAEoAtQBQYCAgIB4Rg0CIAFBIGoiBSAEQeAAEPoCGiABQRBqQeLGwABBNBDuBSABKAIUIQIgASgCEA0DIAQgBUHgABD6AhogASACNgLgASABQQhqIAQgAUHgAWoQnAEgASgCCEUNBCABIAEoAgwiBRALIAEoAgAiAkUNBSABKAIEIQQgASACNgLwASABIAQ2AvQBIAEgBDYC7AEgBEERRw0GIAJB27XAAEEREKkFDQYgAkERQQEQ+gYgBUGEAU8EQCAFEAALIAFBgAFqEO8CIANBAToAAAJAIAAoAgQiACgCACIDQQFLIANFcg0AIABBBGooAgAiA0GEAUkNACADEAALIABBADYCACABQZACaiQADwtBuLHAAEEVEKIHAAsgASACNgKAAUHwucAAQSsgAUGAAWpBnLnAAEHox8AAEMMEAAsgASABKAKAATYCIEHwucAAQSsgAUEgakGcucAAQdjHwAAQwwQACyABIAI2AoABQfC5wABBKyABQYABakGcucAAQcjHwAAQwwQAC0HwvMAAQSFBmMfAABDYBQALQajHwAAQiAcACyABQQA2AvgBIAFB7AFqQbzAwAAgAUH4AWpBuMfAABDyBQALQcitwAAQlQYAC7kEAQV/IwBBkAJrIgEkACAAKAIAIgIoAgAhAyACQQA2AgACQAJAAkACQAJAAkACQCADBEAgAy0AAA0HIAFBGGpBy77AAEGnARDuBSABKAIcIQIgASgCGA0BIAFBgAFqIgQgAhCCAyABKALUAUGAgICAeEYNAiABQSBqIgUgBEHgABD6AhogAUEQakHzxMAAQTMQ7gUgASgCFCECIAEoAhANAyAEIAVB4AAQ+gIaIAEgAjYC4AEgAUEIaiAEIAFB4AFqEJwBIAEoAghFDQQgASABKAIMIgUQCyABKAIAIgJFDQUgASgCBCEEIAEgAjYC8AEgASAENgL0ASABIAQ2AuwBIARBGkcNBiACQcjFwABBGhCpBQ0GIAJBGkEBEPoGIAVBhAFPBEAgBRAACyABQYABahDvAiADQQE6AAACQCAAKAIEIgAoAgAiA0EBSyADRXINACAAQQRqKAIAIgNBhAFJDQAgAxAACyAAQQA2AgAgAUGQAmokAA8LQbixwABBFRCiBwALIAEgAjYCgAFB8LnAAEErIAFBgAFqQZy5wABBnMbAABDDBAALIAEgASgCgAE2AiBB8LnAAEErIAFBIGpBnLnAAEGMxsAAEMMEAAsgASACNgKAAUHwucAAQSsgAUGAAWpBnLnAAEH8xcAAEMMEAAtB8LzAAEEhQajFwAAQ2AUAC0G4xcAAEIgHAAsgAUEANgL4ASABQewBakHkxcAAIAFB+AFqQezFwAAQ8gUAC0HIrcAAEJUGAAu5BAEFfyMAQZACayIBJAAgACgCACICKAIAIQMgAkEANgIAAkACQAJAAkACQAJAAkAgAwRAIAMtAAANByABQRhqQd+6wABB4QEQ7gUgASgCHCECIAEoAhgNASABQYABaiIEIAIQggMgASgC1AFBgICAgHhGDQIgAUEgaiIFIARB4AAQ+gIaIAFBEGpBwLzAAEEwEO4FIAEoAhQhAiABKAIQDQMgBCAFQeAAEPoCGiABIAI2AuABIAFBCGogBCABQeABahCcASABKAIIRQ0EIAEgASgCDCIFEAsgASgCACICRQ0FIAEoAgQhBCABIAI2AvABIAEgBDYC9AEgASAENgLsASAEQR1HDQYgAkG0vcAAQR0QqQUNBiACQR1BARD6BiAFQYQBTwRAIAUQAAsgAUGAAWoQ7wIgA0EBOgAAAkAgACgCBCIAKAIAIgNBAUsgA0VyDQAgAEEEaigCACIDQYQBSQ0AIAMQAAsgAEEANgIAIAFBkAJqJAAPC0G4scAAQRUQogcACyABIAI2AoABQfC5wABBKyABQYABakGcucAAQYy+wAAQwwQACyABIAEoAoABNgIgQfC5wABBKyABQSBqQZy5wABB/L3AABDDBAALIAEgAjYCgAFB8LnAAEErIAFBgAFqQZy5wABB7L3AABDDBAALQfC8wABBIUGUvcAAENgFAAtBpL3AABCIBwALIAFBADYC+AEgAUHsAWpB1L3AACABQfgBakHcvcAAEPIFAAtByK3AABCVBgALggQCB38BfiMAQdAAayIBJAAgAUEANgIoIAFCgICAgBA3AiAgAUEDOgBMIAFBIDYCPCABQQA2AkggAUGw/MEANgJEIAFBADYCNCABQQA2AiwgASABQSBqNgJAIAAgAUEsahDeA0UEQCABQRhqIAFBKGooAgAiADYCACABIAEpAiAiCDcDECAIpyICIABrQQlNBEAgAUEQaiAAQQoQ8QMgASgCECECIAEoAhghAAsgASgCFCIDIABqIgRByPzBACkAADcAACAEQQhqQdD8wQAvAAA7AAAgASAAQQpqIgA2AhggAUEIahBaIgUQWyABKAIIIQYgASgCDCIEIAIgAGtLBEAgAUEQaiAAIAQQ8QMgASgCECECIAEoAhQhAyABKAIYIQALIAAgA2ogBiAEEPoCGiABIAAgBGoiADYCGCACIABrQQFNBEAgAUEQaiAAQQIQ8QMgASgCFCEDIAEoAhghAAsgACADakGKFDsAACABIABBAmoiADYCGAJAAkAgACABKAIQIgdPBEAgAyECDAELIABFBEBBASECIAMgB0EBEPoGDAELIAMgB0EBIAAQ2gYiAkUNAQsgAiAAEFwgBARAIAYgBEEBEPoGCyAFQYQBTwRAIAUQAAsgAUHQAGokAA8LQQEgABDZBgALQeT8wQBBNyABQRBqQdT8wQBB6P3BABDDBAAL2wMBB38CQAJAIAFBgApJBEAgAUEFdiEFAkACQCAAKAKgASIEBEAgBEEBayEDIARBAnQgAGpBBGshAiAEIAVqQQJ0IABqQQRrIQYgBEEpSSEHA0AgB0UNAiADIAVqIgRBKE8NAyAGIAIoAgA2AgAgAkEEayECIAZBBGshBiADQQFrIgNBf0cNAAsLIAFBH3EhCCABQSBPBEAgAEEAIAVBAnQQ+QMaCyAAKAKgASAFaiECIAhFBEAgACACNgKgASAADwsgAkEBayIHQSdLDQMgAiEEIAAgB0ECdGooAgAiBkEAIAFrIgN2IgFFDQQgAkEnTQRAIAAgAkECdGogATYCACACQQFqIQQMBQsgAkEoQZDFwwAQ6wQACyADQShBkMXDABDrBAALIARBKEGQxcMAEOsEAAtBusXDAEEdQZDFwwAQ2AUACyAHQShBkMXDABDrBAALAkAgAiAFQQFqIgdLBEAgA0EfcSEBIAJBAnQgAGpBCGshAwNAIAJBAmtBKE8NAiADQQRqIAYgCHQgAygCACIGIAF2cjYCACADQQRrIQMgByACQQFrIgJJDQALCyAAIAVBAnRqIgEgASgCACAIdDYCACAAIAQ2AqABIAAPC0F/QShBkMXDABDrBAALhgQBBn8jAEEQayIGJAAgACgCACIDQQA6ABwCQCADKAIIQf7///8HTQRAAkAgAygCGCIHRQ0AA0AgAygCCA0DIANBfzYCCCADKAIYIgBFBEAgA0EANgIIDAILIAMgAEEBazYCGCADKAIQIAMoAhQiAkECdGooAgAhACADQQA2AgggAyACQQFqIgIgAygCDCIEQQAgAiAETxtrNgIUIAACfwJAIAAoAghFBEAgAEF/NgIIIAAoAgwiAg0BQQAMAgtB+IPCABCnBQALIABBADoAHCAGQQA2AgggBiAAQRRqIgQ2AgQgBiAENgIAIAIgBiAAKAIQKAIMEQEARQRAIAAoAgwiAgRAIAAoAhAiBCgCACIFBEAgAiAFEQAACyAEKAIEIgUEQCACIAUgBCgCCBD6BgsgACgCGCAAKAIUKAIMEQAACyAAQQA2AgwLIAAoAghBAWoLNgIIIAAgACgCAEEBayICNgIAAkAgAg0AIAAoAgwiAgRAIAAoAhAiBCgCACIFBEAgAiAFEQAACyAEKAIEIgUEQCACIAUgBCgCCBD6BgsgACgCGCAAKAIUKAIMEQAACyAAQQRqIgIgAigCAEEBayICNgIAIAINACAAQSBBBBD6BgsgB0EBayIHDQALCyABQYQBTwRAIAEQAAsgBkEQaiQADwtBuIHCABCoBQALQaiBwgAQpwUAC7YDAQF/IwBBkAFrIgUkACAFIAI2AhQgBSABNgIQIAUgAjYCDAJAIARFBEAgBUEYaiAFQQxqIANBACAFEM0BDAELIAVBGGogBUEMaiADQQEgBBDNAQsCQAJAIAUoAhhBAkcEQCAFQYgBaiAFQcgAaikDADcCACAFQYABaiAFQUBrKQMANwIAIAVB+ABqIAVBOGopAwA3AgAgBUHwAGogBUEwaikDADcCACAFQegAaiAFQShqKQMANwIAIAVB4ABqIAVBIGopAwA3AgAgBSAFKQMYNwJYQQAhBEHJzcMALQAAGkHAAEEIEO0GIgJFDQIgAkEANgIAIAIgBSkCVDcCBCACQQxqIAVB3ABqKQIANwIAIAJBFGogBUHkAGopAgA3AgAgAkEcaiAFQewAaikCADcCACACQSRqIAVB9ABqKQIANwIAIAJBLGogBUH8AGopAgA3AgAgAkE0aiAFQYQBaikCADcCACACQTxqIAVBjAFqKAIANgIADAELQQEhBCAFKAIcIQILIAAgBDYCCCAAIAJBACAEGzYCBCAAQQAgAiAEGzYCACAFQZABaiQADwtBCEHAABCsBwAL9wMCBn8BfCMAQUBqIgMkAAJAAkACQAJAIAEQFEEBRw0AIAIQFEEBRw0AIANBCGogARALIAMoAgwhASADKAIIIQQgAyACEAsgAygCBCIFQYCAgIB4IAMoAgAiBhshAgJAIAFBgICAgHggBBsiCEGAgICAeEcEQCACQYCAgIB4Rw0BIABBADsBACAIDQQMBQsgAEEAOgAAIAAgAkGAgICAeEYiADoAASAADQQMAgsgASAFRgRAIAQgBiABEKkFRSEHCyAAQQA6AAAgACAHOgABDAELIANBMGogARAMAkACQAJAAkACQAJAIAMoAjBFBEBBASEGIAEQF0EBRgRAIAIQF0EBRw0CC0EBIQQgARAaDgICAwQLIANBIGogARAMIAMrAyghCSADKAIgIQEgA0EQaiACEAwgASADKAIQIgRyRSECIAFFDQUgBA0EDAULIABBADsBAAwHC0EAIQQMAQtBACEEQQAhBgtBASEBAkACQAJAIAIQGg4CAAECC0EAIQEMAQtBASEFQQAhAQsgAEEAOgAAIAAgASAFIAZzIAFBAXNxIAQbOgABDAQLIAkgAysDGGEhAgsgAEEAOgAAIAAgAjoAAQwCCyACBEAgBiAFQQEQ+gYLIAhBgICAgHhyQYCAgIB4Rg0BCyAEIAFBARD6BgsgA0FAayQAC/EDAQZ/IwBB4ABrIgIkACACQShqIAFBCGooAgA2AgAgAkGAAToALCACQQA2AhwgAkKAgICAEDcCFCACIAEpAgA3AiAgAkHIAGogAkEUahCeAQJAAkAgAi0ASEEGRwRAIAJBQGsiBCACQdgAaikDADcDACACQThqIAJB0ABqKQMANwMAIAIgAikDSDcDMAJAIAIoAigiASACKAIkIgNJBEAgAkEgaiEFIAIoAiAhBgNAIAEgBmotAABBCWsiB0EXS0EBIAd0QZOAgARxRXINAiADIAFBAWoiAUcNAAsgAiADNgIoCyAAIAIpAzA3AwAgAEEQaiAEKQMANwMAIABBCGogAkE4aikDADcDACACKAIUIgBFDQMgAigCGCAAQQEQ+gYMAwsgAiABNgIoIAJBFjYCSCACQQhqIAUQmAUgAkHIAGogAigCCCACKAIMELIFIQEgAEEGOgAAIAAgATYCBAJAAkACQCACLQAwDgUEBAQBAgALIAJBMGpBBHIQ+wEMAwsgAigCNCIARQ0CIAIoAjggAEEBEPoGDAILIAJBMGpBBHIQuQQgAigCNCIARQ0BIAIoAjggAEEYbEEIEPoGDAELIAAgAigCTDYCBCAAQQY6AAALIAIoAhQiAEUNACACKAIYIABBARD6BgsgAkHgAGokAAubBAEGfyMAQdAAayIDJAAgA0HIAGogAiABKAIwIgZBgICAgHhHQQRBBSABKAIkIgdBgICAgHhGG2ogASgCPCIIQYCAgIB4R2oQ8QYgAygCTCECAn8CQCADKAJIIgRFDQAgAyACNgJEIAMgBDYCQCADQThqIAQgASgCIBDdBiADKAI8IQICQCADKAI4DQAgA0HEAGoiBUGLlMEAQQcQlgIgAhD/BiADQTBqIAQgASgCTCABKAJQEN4GIAMoAjQhAiADKAIwDQAgBUGSlMEAQQoQlgIgAhD/BiADQShqIAMoAkAgASgCWCABKAJcEN4GIAMoAiwhAiADKAIoDQAgBUGclMEAQQQQlgIgAhD/BiADQSBqIAEgAygCQBDeASADKAIkIQIgAygCIA0AIAVBoJTBAEEKEJYCIAIQ/wYCQCAHQYCAgIB4Rg0AIANBGGogA0FAa0GqlMEAQQcgAUEkahDPBCADKAIYRQ0AIAMoAhwhAgwBCwJAIAZBgICAgHhGDQAgA0EQaiADQUBrQbGUwQBBCCABQTBqEM8EIAMoAhBFDQAgAygCFCECDAELAkAgCEGAgICAeEYNACADQQhqIANBQGtBuZTBAEEJIAFBPGoQzwQgAygCCEUNACADKAIMIQIMAQsgAygCRCECQQAMAgsgAygCRCIBQYQBSQ0AIAEQAAtBAQshASAAIAI2AgQgACABNgIAIANB0ABqJAALzwMCBn4CfyMAQdAAayIIJAAgCEFAayIJQgA3AwAgCEIANwM4IAggACkDCCICNwMwIAggACkDACIDNwMoIAggAkLzytHLp4zZsvQAhTcDICAIIAJC7d6R85bM3LfkAIU3AxggCCADQuHklfPW7Nm87ACFNwMQIAggA0L1ys2D16zbt/MAhTcDCCAIQQhqIgAgASgCBCABKAIIEPQBIAhB/wE6AE8gACAIQc8AakEBEPQBIAgpAwghAyAIKQMYIQIgCTUCACEGIAgpAzghBCAIKQMgIAgpAxAhByAIQdAAaiQAIAQgBkI4hoQiBoUiBEIQiSAEIAd8IgSFIgVCFYkgBSACIAN8IgNCIIl8IgWFIgdCEIkgByAEIAJCDYkgA4UiAnwiA0IgiUL/AYV8IgSFIgdCFYkgByADIAJCEYmFIgIgBSAGhXwiA0IgiXwiBoUiBUIQiSAFIAMgAkINiYUiAiAEfCIDQiCJfCIEhSIFQhWJIAUgAyACQhGJhSICIAZ8IgNCIIl8IgaFIgVCEIkgBSACQg2JIAOFIgIgBHwiA0IgiXwiBIVCFYkgAkIRiSADhSICQg2JIAIgBnyFIgJCEYmFIAIgBHwiAkIgiYUgAoULyQMCBn4CfyMAQdAAayIJJAAgCUFAayIKQgA3AwAgCUIANwM4IAkgACkDCCIDNwMwIAkgACkDACIENwMoIAkgA0LzytHLp4zZsvQAhTcDICAJIANC7d6R85bM3LfkAIU3AxggCSAEQuHklfPW7Nm87ACFNwMQIAkgBEL1ys2D16zbt/MAhTcDCCAJQQhqIgAgASACEPQBIAlB/wE6AE8gACAJQc8AakEBEPQBIAkpAwghBCAJKQMYIQMgCjUCACEHIAkpAzghBSAJKQMgIAkpAxAhCCAJQdAAaiQAIAUgB0I4hoQiB4UiBUIQiSAFIAh8IgWFIgZCFYkgBiADIAR8IgRCIIl8IgaFIghCEIkgCCAFIANCDYkgBIUiA3wiBEIgiUL/AYV8IgWFIghCFYkgCCAEIANCEYmFIgMgBiAHhXwiBEIgiXwiB4UiBkIQiSAGIAQgA0INiYUiAyAFfCIEQiCJfCIFhSIGQhWJIAYgBCADQhGJhSIDIAd8IgRCIIl8IgeFIgZCEIkgBiADQg2JIASFIgMgBXwiBEIgiXwiBYVCFYkgA0IRiSAEhSIDQg2JIAMgB3yFIgNCEYmFIAMgBXwiA0IgiYUgA4ULxwMCDH8BfiADIAEoAhQiCCAFQQFrIg1qIgdLBEAgBSABKAIQIg5rIQ8gASgCHCELIAEoAgghCiABKQMAIRMDQAJAAkAgEyACIAdqMQAAiEIBg1AEQCABIAUgCGoiCDYCFEEAIQcgBg0CDAELIAogCiALIAogC0sbIAYbIgkgBSAFIAlJGyEMIAIgCGohECAJIQcCQAJAAkADQCAHIAxGBEBBACALIAYbIQwgCiEHA0AgByAMTQRAIAEgBSAIaiICNgIUIAZFBEAgAUEANgIcCyAAIAI2AgggACAINgIEIABBATYCAA8LIAdBAWsiByAFTw0FIAcgCGoiCSADTw0DIAQgB2otAAAgAiAJai0AAEYNAAsgASAIIA5qIgg2AhQgDyEHIAZFDQUMBgsgByAIaiADTw0CIAcgEGohESAEIAdqIAdBAWohBy0AACARLQAARg0ACyAIIAprIAdqIQggBg0EQQAhBwwDCyAJIANB+KLAABDrBAALIAMgCCAJaiIAIAAgA0kbIANBiKPAABDrBAALIAcgBUHoosAAEOsEAAsgASAHNgIcIAchCwsgCCANaiIHIANJDQALCyABIAM2AhQgAEEANgIAC8cDAgx/AX4gAyABKAIUIgggBUEBayINaiIHSwRAIAUgASgCECIOayEPIAEoAhwhCyABKAIIIQogASkDACETA0ACQAJAIBMgAiAHajEAAIhCAYNQBEAgASAFIAhqIgg2AhRBACEHIAYNAgwBCyAKIAogCyAKIAtLGyAGGyIJIAUgBSAJSRshDCACIAhqIRAgCSEHAkACQAJAA0AgByAMRgRAQQAgCyAGGyEMIAohBwNAIAcgDE0EQCABIAUgCGoiAjYCFCAGRQRAIAFBADYCHAsgACACNgIIIAAgCDYCBCAAQQE2AgAPCyAHQQFrIgcgBU8NBSAHIAhqIgkgA08NAyAEIAdqLQAAIAIgCWotAABGDQALIAEgCCAOaiIINgIUIA8hByAGRQ0FDAYLIAcgCGogA08NAiAHIBBqIREgBCAHaiAHQQFqIQctAAAgES0AAEYNAAsgCCAKayAHaiEIIAYNBEEAIQcMAwsgCSADQcjiwQAQ6wQACyADIAggCWoiACAAIANJGyADQdjiwQAQ6wQACyAHIAVBuOLBABDrBAALIAEgBzYCHCAHIQsLIAggDWoiByADSQ0ACwsgASADNgIUIABBADYCAAvHAwIMfwF+IAMgASgCFCIIIAVBAWsiDWoiB0sEQCAFIAEoAhAiDmshDyABKAIcIQsgASgCCCEKIAEpAwAhEwNAAkACQCATIAIgB2oxAACIQgGDUARAIAEgBSAIaiIINgIUQQAhByAGDQIMAQsgCiAKIAsgCiALSxsgBhsiCSAFIAUgCUkbIQwgAiAIaiEQIAkhBwJAAkACQANAIAcgDEYEQEEAIAsgBhshDCAKIQcDQCAHIAxNBEAgASAFIAhqIgI2AhQgBkUEQCABQQA2AhwLIAAgAjYCCCAAIAg2AgQgAEEBNgIADwsgB0EBayIHIAVPDQUgByAIaiIJIANPDQMgBCAHai0AACACIAlqLQAARg0ACyABIAggDmoiCDYCFCAPIQcgBkUNBQwGCyAHIAhqIANPDQIgByAQaiERIAQgB2ogB0EBaiEHLQAAIBEtAABGDQALIAggCmsgB2ohCCAGDQRBACEHDAMLIAkgA0HA7cEAEOsEAAsgAyAIIAlqIgAgACADSRsgA0HQ7cEAEOsEAAsgByAFQbDtwQAQ6wQACyABIAc2AhwgByELCyAIIA1qIgcgA0kNAAsLIAEgAzYCFCAAQQA2AgALxwMCDH8BfiADIAEoAhQiCCAFQQFrIg1qIgdLBEAgBSABKAIQIg5rIQ8gASgCHCELIAEoAgghCiABKQMAIRMDQAJAAkAgEyACIAdqMQAAiEIBg1AEQCABIAUgCGoiCDYCFEEAIQcgBg0CDAELIAogCiALIAogC0sbIAYbIgkgBSAFIAlJGyEMIAIgCGohECAJIQcCQAJAAkADQCAHIAxGBEBBACALIAYbIQwgCiEHA0AgByAMTQRAIAEgBSAIaiICNgIUIAZFBEAgAUEANgIcCyAAIAI2AgggACAINgIEIABBATYCAA8LIAdBAWsiByAFTw0FIAcgCGoiCSADTw0DIAQgB2otAAAgAiAJai0AAEYNAAsgASAIIA5qIgg2AhQgDyEHIAZFDQUMBgsgByAIaiADTw0CIAcgEGohESAEIAdqIAdBAWohBy0AACARLQAARg0ACyAIIAprIAdqIQggBg0EQQAhBwwDCyAJIANBsPvBABDrBAALIAMgCCAJaiIAIAAgA0kbIANBwPvBABDrBAALIAcgBUGg+8EAEOsEAAsgASAHNgIcIAchCwsgCCANaiIHIANJDQALCyABIAM2AhQgAEEANgIAC8wDAgR/AX4jAEHgAGsiAiQAAkAgAARAIAAoAgANASACIABBCGpB4AAQ+gIhASAAQegAQQgQ+gYgASgCUCIABEAgASgCVCAAQQEQ+gYLIAEoAkAiAEGEAU8EQCAAEAALIAEoAkghAiABKAJMIgQEQCACIQADQCAAQQxqKAIAIgNBhAFPBEAgAxAACyAAQRBqKAIAIgNBhAFPBEAgAxAACyAAKAIAIgMEQCAAQQRqKAIAIANBARD6BgsgAEEUaiEAIARBAWsiBA0ACwsgASgCRCIABEAgAiAAQRRsQQQQ+gYLAkAgASgCBCICRQ0AIAEoAgwiAwRAIAEoAgAiBEEIaiEAIAQpAwBCf4VCgIGChIiQoMCAf4MhBQNAIAVQBEADQCAEQYAHayEEIAApAwAgAEEIaiEAQoCBgoSIkKDAgH+DIgVCgIGChIiQoMCAf1ENAAsgBUKAgYKEiJCgwIB/hSEFCyAEIAV6p0EDdkGQf2xqQfAAaxD9ASAFQgF9IAWDIQUgA0EBayIDDQALCyACIAJBAWpB8ABsIgBqQQlqIgJFDQAgASgCACAAayACQQgQ+gYLIAFBIGoQtgMgAUHgAGokAA8LEKMHAAsQpAcAC+4EAQd/IwBBIGsiBiQAQQEhCSABIAEoAhQiB0EBaiIFNgIUIAFBDGohCAJAIAUgASgCECIKTw0AAkACQCAIKAIAIAVqLQAAQStrDgMBAgACC0EAIQkLIAEgB0ECaiIFNgIUCwJAAkAgBSAKSQRAIAEgBUEBaiIHNgIUIAEoAgwiCyAFai0AAEEwa0H/AXEiBUEKTwRAIAZBDTYCFCAGIAgQ1gUgBkEUaiAGKAIAIAYoAgQQsgUhASAAQQE2AgAgACABNgIEDAMLIAcgCk8NAQNAIAcgC2otAABBMGtB/wFxIghBCk8NAiABIAdBAWoiBzYCFCAFQcyZs+YARyAIQQdLciAFQcuZs+YASnFFBEAgBUEKbCAIaiEFIAcgCkcNAQwDCwsjAEEgayIEJAAgAAJ/AkBBACAJIANQG0UEQCABKAIUIgUgASgCECIHTw0BIAEoAgwhCQNAIAUgCWotAABBMGtB/wFxQQpPDQIgASAFQQFqIgU2AhQgBSAHRw0ACwwBCyAEQQ42AhQgBEEIaiABQQxqENYFIAAgBEEUaiAEKAIIIAQoAgwQsgU2AgRBAQwBCyAARAAAAAAAAAAARAAAAAAAAACAIAIbOQMIQQALNgIAIARBIGokAAwCCyAGQQU2AhQgBkEIaiAIENYFIAZBFGogBigCCCAGKAIMELIFIQEgAEEBNgIAIAAgATYCBAwBCyAAIAEgAiADAn8gCUUEQCAEIAVrIgBBH3VBgICAgHhzIAAgACAESCAFQQBKcxsMAQsgBCAFaiIAQR91QYCAgIB4cyAAIAVBAEggACAESHMbCxCjAwsgBkEgaiQAC5IIAgR+DH8jAEEgayIJJAAgACgCACILIAstAAgiAEEBIAAbOgAIIAAEQCALQQhqENABCwJAAkACQCACQX9GDQAgAigCACEAA0AgAEUNASAAQQBIDQIgAiAAQQFqIAIoAgAiByAAIAdGGzYCACAAIAdHIAchAA0ACyAJIAI2AgggCUEYaiABQQhqKAIANgIAIAkgASkCADcDECMAQRBrIhEkACALQRBqIgdBEGoiACAJQRBqIgwQqgIhAyAHKAIIRQRAIAcgABCwAQsgA0IZiCIFQv8Ag0KBgoSIkKDAgAF+IQYgDCgCBCESIAwoAgghECADpyEKIAcoAgQhDiAHKAIAIQhBACEAAkACQANAIAggCiAOcSIKaikAACIEIAaFIgNCf4UgA0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIDUEUEQANAIAggA3qnQQN2IApqIA5xQQR0ayIBQQhrKAIAIBBGBEAgEiABQQxrKAIAIBAQqQVFDQQLIANCAX0gA4MiA1BFDQALCyAEQoCBgoSIkKDAgH+DIQNBASEBIABBAUcEQCADeqdBA3YgCmogDnEhDSADQgBSIQELIAMgBEIBhoNQBEAgCiAPQQhqIg9qIQogASEADAELC0EAIQAgCCANaiwAACIKQQBOBEAgCCAIKQMAQoCBgoSIkKDAgH+DeqdBA3YiDWotAAAhCgsgDEEIaigCACEBIAwpAgAhAyAIIA1qIAWnQf8AcSIMOgAAIAggDUEIayAOcWpBCGogDDoAACAHIAcoAgggCkEBcWs2AgggByAHKAIMQQFqNgIMIAggDUEEdGsiB0EQayIIIAM3AgAgCEEIaiABNgIAIAdBBGsgAjYCAAwBCyABQQRrIgEoAgAhACABIAI2AgAgDCgCACIBRQ0AIAwoAgQgAUEBEPoGCyARQRBqJAAgCSAANgIMAkAgAEUNACAAIAAoAgAiAEEBazYCACAAQQFHDQAgCUEMahDDBQsgC0EAIAstAAgiACAAQQFGIgAbOgAIIABFBEAgC0EIahDhAgsgAiACKAIEIgBBAWs2AgQgAEEBRw0CIAJBDEEEEPoGDAILIAstAAghACAJQQA2AgggC0EAIAAgAEEBRiIAGzoACCAARQRAIAtBCGoQ4QILAkAgCSgCCCIARQ0AIAAgACgCACIAQQFrNgIAIABBAUcNACAJQQhqEMMFCwJAIAJBf0YNACACIAIoAgQiAEEBazYCBCAAQQFHDQAgAkEMQQQQ+gYLIAEoAgAiAEUNASABKAIEIABBARD6BgwBCyMAQSBrIgAkACAAQQE2AgQgAEH8wcEANgIAIABCATcCDCAAQpjBwYDAADcDGCAAIABBGGo2AgggAEGEwsEAELQFAAsgCUEgaiQAC/gDAQN/IABB0AFqIQUCQAJAQcgAIAAtAJgCIgNrIgQgAk0EQCADDQEMAgsgAyAFaiABIAIQ+gIaIAAgAiADajoAmAIPCyADIAVqIAEgBBD6AhogACAAKQMAIAApA9ABhTcDACAAIAApAwggACkD2AGFNwMIIAAgACkDECAAKQPgAYU3AxAgACAAKQMYIAApA+gBhTcDGCAAIAApAyAgACkD8AGFNwMgIAAgACkDKCAAKQP4AYU3AyggACAAKQMwIAApA4AChTcDMCAAIAApAzggACkDiAKFNwM4IAAgACkDQCAAKQOQAoU3A0AgACAAKALIARC2ByACIARrIQIgASAEaiEBCyABIAJByABuQcgAbCIEaiEDIAJByABPBEADQCAAIAApAwAgASkAAIU3AwAgACAAKQMIIAEpAAiFNwMIIAAgACkDECABKQAQhTcDECAAIAApAxggASkAGIU3AxggACAAKQMgIAEpACCFNwMgIAAgACkDKCABKQAohTcDKCAAIAApAzAgASkAMIU3AzAgACAAKQM4IAEpADiFNwM4IAAgACkDQCABKQBAhTcDQCAAIAAoAsgBELYHIAFByABqIgEgA0cNAAsLIAIgBGsiAUHJAEkEQCAFIAMgARD6AhogACABOgCYAg8LIAFByABB8K/BABDsBAAL1gMCBn8BfgJAAkACQAJAAkAgAC0AvAEOBAAEBAEECyAAQdgAaiEFQfgAIQZBnAEhASAAKAKYASICQYMBTQ0CDAELIAAtALgBQQNGBEAgAEG0AWoQxAMLQSAhBkHEACEBIAAhBSAAKAJAIgJBgwFNDQELIAIQAAsgACABaiIEKAIIIgIEQCAEKAIEIQEDQCABQQxqKAIAIgNBhAFPBEAgAxAACyABQRBqKAIAIgNBhAFPBEAgAxAACyABKAIAIgMEQCABQQRqKAIAIANBARD6BgsgAUEUaiEBIAJBAWsiAg0ACwsgBCgCACIBBEAgBCgCBCABQRRsQQQQ+gYLAkAgBSgCBCIERQ0AIAUoAgwiAwRAIAUoAgAiAkEIaiEBIAIpAwBCf4VCgIGChIiQoMCAf4MhBwNAIAdQBEADQCACQYAHayECIAEpAwAgAUEIaiEBQoCBgoSIkKDAgH+DIgdCgIGChIiQoMCAf1ENAAsgB0KAgYKEiJCgwIB/hSEHCyACIAd6p0EDdkGQf2xqQfAAaxD9ASAHQgF9IAeDIQcgA0EBayIDDQALCyAEIARBAWpB8ABsIgNqQQlqIgFFDQAgBSgCACADayABQQgQ+gYLIAAgBmoQtgMLC/wDAQJ/IAAgAWohAgJAAkAgACgCBCIDQQFxDQAgA0ECcUUNASAAKAIAIgMgAWohASAAIANrIgBB/NHDACgCAEYEQCACKAIEQQNxQQNHDQFB9NHDACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADAILIAAgAxD2AgsCQAJAAkAgAigCBCIDQQJxRQRAIAJBgNLDACgCAEYNAiACQfzRwwAoAgBGDQMgAiADQXhxIgIQ9gIgACABIAJqIgFBAXI2AgQgACABaiABNgIAIABB/NHDACgCAEcNAUH00cMAIAE2AgAPCyACIANBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAsgAUGAAk8EQCAAIAEQhwMPCyABQfgBcUHkz8MAaiECAn9B7NHDACgCACIDQQEgAUEDdnQiAXFFBEBB7NHDACABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0GA0sMAIAA2AgBB+NHDAEH40cMAKAIAIAFqIgE2AgAgACABQQFyNgIEIABB/NHDACgCAEcNAUH00cMAQQA2AgBB/NHDAEEANgIADwtB/NHDACAANgIAQfTRwwBB9NHDACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgALC8IDAgd/A34jAEFAaiIEJAAgBCADNgIQIAQgAjYCDAJ/QQAgASgCDEUNABogAUEQaiACIAMQqwIhCyABKAIAIgVB8ABrIQggASgCBCIGIAuncSEBIAtCGYhC/wCDQoGChIiQoMCAAX4hDQNAAkAgASAFaikAACIMIA2FIgtCf4UgC0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyILUEUEQANAIAMgCEEAIAt6p0EDdiABaiAGcWsiCUHwAGxqIgooAghGBEAgAiAKKAIEIAMQqQVFDQMLIAtCAX0gC4MiC1BFDQALC0EAIAwgDEIBhoNCgIGChIiQoMCAf4NQRQ0CGiABIAdBCGoiB2ogBnEhAQwBCwsgBSAJQfAAbGpB8ABrCyEBIARBAjYCJCAEQbypwAA2AiAgBEIBNwIsIAQgBEEMaq1CgICAgMAAhDcDOCAEIARBOGo2AiggBEEUaiAEQSBqEOICIAQoAhgiBSAEKAIcEAIhAwJAIAFFBEBBASEBDAELIAFBEGpBACEBIANBhAFPBEAgAxAACyEDCyAEKAIUIgIEQCAFIAJBARD6BgsgACADNgIEIAAgATYCACAEQUBrJAALqwMBAn8CQAJAAkACQCABQQdqIgNB+ABPDQAgAUEPaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQZqIgNB+ABPDQAgAUEOaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQVqIgNB+ABPDQAgAUENaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQRqIgNB+ABPDQAgAUEMaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQNqIgNB+ABPDQAgAUELaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQJqIgNB+ABPDQAgAUEKaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQFqIgNB+ABPDQAgAUEJaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQfgASQ0BIAEhAwsgA0H4AEGo0sEAEOsEAAsgAUEIaiICQfgASQ0BCyACQfgAQbjSwQAQ6wQACyAAIAJBAnRqIAAgAUECdGooAgA2AgALuAMCBH8BfiMAQeAAayIBJAACQCAABEAgACgCAA0BIAFBCGogAEEIakHYABD6AhogAEHgAEEIEPoGIAEoAkgiAEGEAU8EQCAAEAALIAEoAlAhAyABKAJUIgQEQCADIQAD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AUF/czYC9AEgAyADKAL4AUF/czYC+AEgAyADKAKAAkF/czYCgAIgAyADKAKEAkF/czYChAIgAyADKAKUAkF/czYClAIgAyADKAKYAkF/czYCmAIgAyADKAKgAkF/czYCoAIgAyADKAKkAkF/czYCpAIgAyADKAK0AkF/czYCtAIgAyADKAK4AkF/czYCuAIgAyADKALAAkF/czYCwAIgAyADKALEAkF/czYCxAIgAyADKALUAkF/czYC1AIgAyADKALYAkF/czYC2AIgAyADKALgAkF/czYC4AIgAyADKALkAkF/czYC5AIgAyADKAL0AkF/czYC9AIgAyADKAL4AkF/czYC+AIgAyADKAKAA0F/czYCgAMgAyADKAKEA0F/czYChAMgAyADKAKUA0F/czYClAMgAygCmAMhBCADIAYgBiAGQQR2c0GAmLwYcUERbHMiBkECdiAGc0GA5oCYA3FBBWwgBnNBf3M2ArgDIAMgAiACIAJBBHZzQYCYvBhxQRFscyICQQJ2IAJzQYDmgJgDcUEFbCACc0F/czYCtAMgAyAHIAcgB0EEdnNBgJi8GHFBEWxzIgdBAnYgB3NBgOaAmANxQQVsIAdzQX9zNgKkAyADIAEgASABQQR2c0GAmLwYcUERbHMiAUECdiABc0GA5oCYA3FBBWwgAXNBf3M2AqADIAMgBEF/czYCmAMgAyADKALAA0F/czYCwAMgAyADKALEA0F/czYCxAMgAyADKALUA0F/czYC1AMgAyADKALYA0F/czYC2AMgDCADQeADEPoCGiADQeADaiQABSADIAYQtwIgAUHgAGoiBBD1ASAEIAQoAgBBf3M2AgAgAUHkAGoiBCAEKAIAQX9zNgIAIAFB9ABqIgQgBCgCAEF/czYCACABQfgAaiIBIAEoAgBBf3M2AgAgAyAGQQhqIgZBBhDVASACQcQAaiECIAdBQGshBwwBCwsgBUH4B2pCADcDACAFQfAHakIANwMAIAVB6AdqQgA3AwAgBUIANwPgByAFIAwgBUHgB2oiAxCnASAFMQAHISQgBTEABiElIAUxAAUhJiAFMQAEIScgBTEAAyEoIAUxAAEhKSAFMQACISogBSAFMQAAIiJCB4giIyAFMQAOQgmGIAUxAA8gBTEACEI4hiIrIAUxAAlCMIaEIAUxAApCKIaEIAUxAAtCIIaEIAUx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KAIUIgQEQCABKAIYIARBARD6BgsgACADNgIAIAAgAjYCBCAFQRBqJAALiAEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUHoAGoQwAEgAigCDCEDIAIoAgghBCABIAEoAgBBAWs2AgAgACAENgIIIAAgA0EAIARBAXEiARs2AgQgAEEAIAMgARs2AgAgAkEQaiQADwsQowcACxCkBwALhwEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUEIahDrASACKAIMIQMgAigCCCEEIAEgASgCAEEBazYCACAAIAQ2AgggACADQQAgBEEBcSIBGzYCBCAAQQAgAyABGzYCACACQRBqJAAPCxCjBwALEKQHAAvyIwIofwt+IwBBEGsiHCQAAkAgAQRAIAEoAgAiAkF/Rg0BIAEgAkEBajYCACAcQQhqISIgAUEIaiESIwBBwANrIgMkACADQZyewQBBGRACIgI2AtgCEPgBBEAgA0HYAmoQuAcLIAJBhAFPBEAgAhAACwJ+QaDSwwAoAgBBAUYEQEGw0sMAKQMAIStBqNLDACkDAAwBC0ICIStBsNLDAEICNwMAQaDSwwBCATcDAEIBCyEqIANBCGpByJ7BACkDADcDACADICo3AxBBqNLDACAqQgF8NwMAIAMgKzcDGCADQcCewQApAwA3AwAgEigCDCIbBEAgEkEgaiEXIBJBxABqISUgA0HUAmqtQoCAgIAQhCEwIANB+AJqISYgA0HQAWohJyADQdAAaiEVIANB9ABqISggEigCQCEpIBIoAgAiHUEIaiEOIB0pAwBCf4VCgIGChIiQoMCAf4MhKyASKQM4ITEgEikDMCEyIBIpAxghMyASKQMQITQDQCArUARAA0AgHUGAB2shHSAOKQMAIA5BCGohDkKAgYKEiJCgwIB/gyIrQoCBgoSIkKDAgH9RDQALICtCgIGChIiQoMCAf4UhKwsgAyAdICt6p0EDdkGQf2xqQfAAazYC1AIgA0EBNgLcAiADQYyfwQA2AtgCIANCATcC5AIgAyAwNwPgASADIANB4AFqNgLgAiADQSRqIANB2AJqEOICIAMoAiQhBCADIAMoAigiAiADKAIsEAI2AtgCIAQEQCACIARBARD6BgsQ+AEEQCAD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hAFPBEAgARAACyAAKAIUIgFBhAFPBEAgARAACyAAKAIQIgBBgwFNDQELIAAQAAsLeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEPQDIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARCLAiABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAt4AQJ/IAAoAgAiAigCACEBIAJBADYCAAJAIAEEQCABLQAADQEQywMgAUEBOgAAAkAgACgCBCIAKAIAIgFBAUsgAUVyDQAgAEEEaigCACIBQYQBSQ0AIAEQAAsgAEEANgIADwtBuLHAAEEVEKIHAAtByK3AABCVBgALeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEO4CIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARDgAyABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAtsAQF/IwBBMGsiAyQAIAMgAjYCBCADIAE2AgAgA0ECNgIMIANBjKPBADYCCCADQgI3AhQgAyADrUKAgICA0CKENwMoIAMgAK1CgICAgOAihDcDICADIANBIGo2AhAgA0EIahDOAyADQTBqJAALbAEBfyMAQTBrIgMkACADIAI2AgQgAyABNgIAIANBAjYCDCADQfjfwQA2AgggA0ICNwIUIAMgA61CgICAgKAohDcDKCADIACtQoCAgIDgIoQ3AyAgAyADQSBqNgIQIANBCGoQzwMgA0EwaiQAC2UBAn8jAEEQayICJAAgACgCCCEDIAAoAgQhACACQQRqIAEQqwYgAwRAA0AgAiAANgIMIAJBBGogAkEMakGQsMEAEJoDIABBAWohACADQQFrIgMNAAsLIAJBBGoQngYgAkEQaiQAC28BAX8jAEFAaiICJAAgAkEAOgA4IAIgATYCDCACIAA2AgggAiACQQhqNgI8IAJBPGpB6ILAABDEByACLQA4QQNGBEAgAigCHCIBIAEoAgBBAWs2AgAgAigCFCIBIAEoAgBBAWs2AgALIAJBQGskAAuLAQIBfAJ+IAEQhQcEfiABKAIAEEgiAkQAAAAAAADgw2YhAUL///////////8AAn4gAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwtCgICAgICAgICAfyABGyACRP///////99DZBtCACACIAJhGyEDQgEFQgALIQQgACADNwMIIAAgBDcDAAtlAQN/IAAoAgwiAiAAKAIEIgFrQQxuIQMgASACRwRAA0AgASgCACICBEAgAUEEaigCACACQQEQ+gYLIAFBDGohASADQQFrIgMNAAsLIAAoAggiAQRAIAAoAgAgAUEMbEEEEPoGCwtkAQN/IwBBEGsiAiQAIAIgACgCADYCDCACQQxqIAEQugIgAigCDCIABEAgAEEEaigCACEBIAAoAgAiBEGEAU8EQCAEEAALIAFBhAFPBEAgARAACyAAQQhBBBD6BgsgAkEQaiQAC2kBBH8CQCAABEAgACgCAA0BIAAoAhQhASAAKAIIIQQgACgCBCECIAAoAhAhAyAAQRhBBBD6BiADQYQBTwRAIAMQAAsgAUGEAU8EQCABEAALIAIEQCAEIAJBARD6BgsPCxCjBwALEKQHAAt4AQF/IwBBsAFrIgMkACADQQA6AKQBIAMgAjYCoAEgAyABNgKcASADIAA2ApgBIAMgAzYCrAEgA0GsAWpB+IDAABDEBwJAIAMtAKQBQQNHDQAgA0EIahCMAyADKAIEIgFFDQAgAygCACABQQEQ+gYLIANBsAFqJAALaQEEfwJAIAAoAgAiAUGAgICAeEYNACAAKAIEIQIgACgCCCIDBEAgAiEAA0AgACgCACIEBEAgAEEEaigCACAEQQEQ+gYLIABBDGohACADQQFrIgMNAAsLIAFFDQAgAiABQQxsQQQQ+gYLC2oBAX8jAEEQayIGJAAgAUUEQEH/+8AAQSMQogcACyAGQQhqIAEgAyAEIAUgAigCFBEHACAGKAIMIQEgACAGKAIIIgI2AgggAEEAIAEgAkEBcSICGzYCACAAIAFBACACGzYCBCAGQRBqJAALZAECfyMAQRBrIgIkACACIAAoAgA2AgwgAkEMaiABEJACIAIoAgwiAARAIABBBGooAgAhASAAKAIAIgNBhAFPBEAgAxAACyABQYQBTwRAIAEQAAsgAEEIQQQQ+gYLIAJBEGokAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0Gss8MANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQYytwwA2AgggA0ICNwIUIANCgICAgPAiIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhC0BQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIMIANBzLPDADYCCCADQgI3AhQgA0KAgICA8CIiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACELQFAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0GAtMMANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD5ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD3ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2gBAX8jAEEwayIDJAAgAyACNgIMIAMgATYCCCADQQE2AhQgA0GkjsEANgIQIANCATcCHCADIANBCGqtQoCAgIDAAIQ3AyggAyADQShqNgIYIAAgA0EQahDiAiAAQQA6AAwg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IAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAAPCyMAQYABayIEJAAgAC0AACEAA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAALOAAjAEEQayIBJAAgAUEIaiACIAMgBBDrAiABKAIMIQIgACABKAIINgIAIAAgAjYCBCABQRBqJAALPAEBfwJ/IAEtAAFFBEAQYyECQQAMAQsQayECQQELIQMgACABNgIQIABBADYCCCAAIAI2AgQgACADNgIACzkBAX8gACgCACEAIAEoAhwiAkEQcUUEQCACQSBxRQRAIAAgARCHBw8LIAAgARCaBA8LIAAgARCZBAs6AQF/IwBBEGsiAiQAIAIgASgCABCSASACKAIAIQEgACACKQMINwMIIAAgAUEAR603AwAgAkEQaiQAC450AyN/Gn4BfCABKAIcQQFxIQIgACsDACE/AkAgASgCCEEBRgRAAn8gASEIIAEoAgwhE0EAIQAjAEHwCGsiCSQAID+9IScCf0ECID8gP2INABogJ0L/////////B4MiKUKAgICAgICACIQgJ0IBhkL+////////D4MgJ0I0iKdB/w9xIgEbIiVCAYMhKCAnQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJUIBhiAlQoCAgICAgIAIUSIAGyElQgJCASAAGyEmQct3Qcx3IAAbIAFqIQAgKFAMAQsgAUGzCGshAEIBISYgKFALIQEgCSAAOwHoCCAJICY3A+AIIAlCATcD2AggCSAlNwPQCCAJIAE6AOoIAkACfwJAAkACQAJAIAFBAmsiBARAQQEhAUHbqsMAQdyqwwAgJ0IAUyIFG0HbqsMAQQEgBRsgAhshGSAnQj+IpyACciEcQQMgBCAEQQNP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AEGAAWsiAyQAID+9ISUCf0ECID8gP2INABogJUL/////////B4MiKUKAgICAgICACIQgJUIBhkL+////////D4MgJUI0iKdB/w9xIgAbIidCAYMhKCAlQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJ0IBhiAnQoCAgICAgIAIUSIBGyEnQgJCASABGyEmQct3Qcx3IAEbIABqIQAgKFAMAQsgAEGzCGshAEIBISYgKFALIQEgAyAAOwF4IAMgJjcDcCADQgE3A2ggAyAnNwNgIAMgAToAegJ/AkACQAJAIAFBAmsiAQRAQQEhAEHbqsMAQdyqwwAgJUIAUyIEG0HbqsMAQQEgBBsgAhshGEEBICVCP4inIAIbIRlBAyABIAFBA08bQQJrDgIDAgELIANBAzYCKCADQd2qwwA2AiQgA0ECOwEgQQEhGEEBIQAgA0EgagwDCyADQQM2AiggA0HgqsMANgIkIANBAjsBICADQSBqDAILIANBIGohBSADQQ9qIg4hCCMAQTBrIgQkAAJAAkACfwJAAkACQAJAAkACQAJAAkAgA0HgAGoiDCIAKQMAIiVQRQRAIAApAwgiJ1ANASAAKQMQIiZQDQIgJSAmfCImICVUDQMgJSAnVA0EICZCgICAgICAgIAgWg0FIAQgAC8BGCIAOwEIIAQgJSAnfSInNwMAIAAgAEEgayAAICZCgICAgBBUIgEbIgJBEGsgAiAmQiCGICYgARsiJkKAgICAgIDAAFQiARsiAkEIayACICZCEIYgJiABGyImQoCAgICAgICAAVQiARsiAkEEayACICZCCIYgJiABGyImQoCAgICAgICAEFQiARsiAkECayACICZCBIYgJiABGyImQoCAgICAgICAwABUIgEbICZCAoYgJiABGyIsQgBZIgJrIgFrwSIKQQBIDQYgBCAnIAqtIiaGIiggJogiKTcDECAnIClSDQogBCAAOwEIIAQgJTcDACAEICUgJkI/gyInhiImICeIIic3AxAgJSAnUg0KQaB/IAFrwUHQAGxBsKcFakHOEG0iAEHRAE8NByAAQQR0IgBBsJvDAGopAwAiJ0L/////D4MiJSAmQiCIIjN+IipCIIgiOyAnQiCIIikgM34iPHwgKSAm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DBAAEwAAAJUAAAA/AAAARGF0YWJhc2Ugc3RhcnRlZCBzdWNjZXNzZnVsbHkuAAA8DBAAEwAAAJIAAAABAAAAQ2xvc2luZyB0aGUgZGF0YWJhc2UuLi4APAwQABMAAACiAAAAPgAAAERhdGFiYXNlIGNsb3NlZCBzdWNjZXNzZnVsbHkuQ3JlYXRpbmcgZGF0YWJhc2U6IAUNEAATAAAAVXNpbmcgcHJvdmlkZWQgc3RvcmFnZS5DcmVhdGluZyBJbk1lbW9yeSBzdG9yYWdlLgAAADwMEAATAAAA3AAAACQAAAA8DBAAEwAAAOYAAAAfAAAAUGx1Z2lucyBhcHBsaWVkLkFkZGluZyBkZWZhdWx0cyBwbHVnaW4uQWRkaW5nIG1pZ3JhdGlvbiBwbHVnaW4uQWRkaW5nIGludGVncml0eSBwbHVnaW4uQWRkaW5nIGVuY3J5cHRpb24gcGx1Z2luLkNyZWF0aW5nIHN0b3JhZ2Ugd2l0aCBzY2hlbWFzIGFuZCBtaWdyYXRpb25zLkRhdGFiYXNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LkludmFsaWQgY29sbGVjdGlvbiBuYW1lUHJvY2Vzc2luZyBzY2hlbWEgZm9yIGNvbGxlY3Rpb246IEYOEAAiAAAATWlncmF0aW9uIHBhdGggdW5kZWZpbmVkIGZvciBjb2xsZWN0aW9uOiAsIHZlcnNpb246IHAOEAApAAAAmQ4QAAsAAABSZXF1aXJlZCBTY2hlbWEgIG1pZ3JhdGlvbiBwYXRoICB0byBub3QgYmUgdW5kZWZpbmVktA4QABAAAADEDhAAEAAAANQOEAAUAAAAdQAAAAgAAAAEAAAAdgAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAEA8QAGcAAAAWAgAAHgAAABAPEABnAAAA+AEAACcAAAAQDxAAZwAAAO8BAAAoAAAAdQAAAAgAAAAEAAAAdwAAAHUAAAAIAAAABAAAAHgAAAB1AAAACAAAAAQAAAB5AAAAdQAAAAgAAAAEAAAAegAAAHUAAAAIAAAABAAAAHsAAAB1AAAACAAAAAQAAAB8AAAAdQAAAAgAAAAEAAAAfQAAAHUAAAAIAAAABAAAAH4AAAB1AAAACAAAAAQAAAB/AAAAdQAAAAgAAAAEAAAAgAAAAHUAAAAIAAAABAAAAIEAAAB1AAAACAAAAAQAAACCAAAAdQAAAAgAAAAEAAAAgwAAAHUAAAAIAAAABAAAAIQAAAB1AAAACAAAAAQAAACFAAAAdQAAAAgAAAAEAAAAhgAAAHUAAAAIAAAABAAAAIcAAAB1AAAACAAAAAQAAACIAAAAdQAAAAgAAAAEAAAAiQAAAHUAAAAIAAAABAAAAIoAAAB1AAAACAAAAAQAAACLAAAAdQAAAAgAAAAEAAAAjAAAAHUAAAAIAAAABAAAAI0AAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzABgREABPAAAAyAUAABQAAAAYERAATwAAAMgFAAAhAAAAGBEQAE8AAAC8BQAAIQAAABgREABPAAAATAQAACQAAABpbnZhbGlkIHBvbGwgc3RhdGVgdW53cmFwX3Rocm93YCBmYWlsZWQAQdijwAALsQUBAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAAJhIQAE8AAAAEAQAAGgAAAAAAAAAEAAAABAAAAI8AAAAAAAAABAAAAAQAAACQAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJIAAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAlAAAAAAAAAAEAAAABAAAAJUAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwD4EhAAXwAAABYCAAAvAAAA+BIQAF8AAAChAAAAJAAAAE5vbmVTb21lAAAAAAQAAAAEAAAAlgAAAEVycm9yL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwLnJzAJUTEABaAAAA+gAAAD8AAACVExAAWgAAAB8BAAAuAAAAY29kZZcAAAAEAAAABAAAAAMAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlc3JjL2Vycm9yLnJzAE8UEAAMAAAAWwAAAGUAAACYAAAABAAAAAQAAACZAAAATxQQAAwAAABbAAAAWwBBlKnAAAu/AwEAAACcAAAASW52YWxpZCBjb2xsZWN0aW9uICwgbm90IGZvdW5kAACcFBAAEwAAAK8UEAALAAAASG9vayBpcyBub3QgYSBmdW5jdGlvbkhvb2sgbXVzdCBiZSBhIGZ1bmN0aW9uRXJyb3IgZXhlY3V0aW5nIHBsdWdpbiBob29rOiAAAPkUEAAdAAAASW52YWxpZCBTY2hlbWEgY2Fubm90IGZpbmQgcHJpbWFyeUtleSBmaWVsZDEyMzQ1VW5leHBlY3RlZCBwcmltYXJ5IGtleSBzaG91bGQgYmUgYSBzdHJpbmdVbmV4cGVjdGVkIHByaW1hcnkga2V5IHNob3VsZCBiZSBudW1iZXJGaWVsZCAgaXMgcmVxdWlyZWQAAKAVEAAGAAAAphUQAAwAAAAgc2hvdWxkIG1hdGNoIHR5cGUgAKAVEAAGAAAAxBUQABMAAABTdHJpbmdOdW1iZXJCb29sZWFuQXJyYXlPYmplY3RfX05vbmV4aGF1c3RpdmUAAAAGAAAABgAAAAcAAAAFAAAABgAAAA8AAADoFRAA7hUQAPQVEAD7FRAAABYQAAYWEAD//////////0gWEABB4KzAAAu7BS9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAYBYQAGcAAADOAQAAHAAAAAAAAAAMAAAABAAAAJ4AAACfAAAAAAAAAAwAAAAEAAAAoAAAAKEAAAAAAAAADAAAAAQAAACiAAAAowAA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OiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgIm5vbmV4aXN0ZW50IjogInZhbHVlIgogICAgfQogICAgYXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAAAALBkQABAAAAA4AQAABQAAACwZEAAQAAAAOgEAACsAAABJbnZhbGlkIHByb3BlcnR5OiBub25leGlzdGVudAAAALQeEAAdAAAALBkQABAAAAA5AQAABQAAACwZEAAQAAAANgEAADMAAAAsGRAAEAAAADQBAAAyAAAALBkQABAAAAAyAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF90eXBlCiAgICB7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIHsKICAgICAgICAiYWdlIjogInRoaXJ0eSIKICAgIH0KICAgIAAsGRAAEAAAAFUBAAAFAAAALBkQABAAAABXAQAAKwAAANsaEAARAAAALBkQABAAAABWAQAABQAAACwZEAAQAAAAUwEAADMAAAAsGRAAEAAAAFIBAAAyAAAALBkQABAAAABQAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfbG9naWNhbF9vcGVyYXRvcnMKICAgIHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJuYW1lIjogIkFsaWNlIiB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkZ3RlIjogMjUgfSB9CiAgICAgICAgXQogICAgfQogICAgAAAALBkQABAAAAB2AQAABQAAACwZEAAQAAAAdAEAADMAAAAsGRAAEAAAAHMBAAAyAAAALBkQABAAAABxAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF9vcGVyYXRvcgogICAgewogICAgICAgICJhZ2UiOiB7ICIkdW5rbm93biI6IDMwIH0KICAgIH0KICAgIAAALBkQABAAAACPAQAABQAAACwZEAAQAAAAkQEAACsAAABJbnZhbGlkIG9wZXJhdG9yOiAkdW5rbm93bgAAyCIQABoAAAAsGRAAEAAAAJABAAAFAAAALBkQABAAAACNAQAAMwAAACwZEAAQAAAAjAEAADIAAAAsGRAAEAAAAIoBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRndCI6ICJ0aGlydHkiIH0KICAgIH0KICAgIAAALBkQABAAAACsAQAABQAAACwZEAAQAAAArgEAACsAAAAsGRAAEAAAAK0BAAAFAAAALBkQABAAAACqAQAAMwAAACwZEAAQAAAAqQEAADIAAAAsGRAAEAAAAKcBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcgogICAgewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgInN0YXR1cyI6IHsgIiRpbiI6IFsiYWN0aXZlIiwgInBlbmRpbmciXSB9CiAgICB9CiAgICAsGRAAEAAAAMkBAAAFAAAALBkQABAAAADHAQAAMwAAACwZEAAQAAAAxgEAADIAAAAsGRAAEAAAAMQBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRpbiI6IFsidGhpcnR5IiwgImZvcnR5Il0gfQogICAgfQogICAgLBkQABAAAADiAQAABQAAACwZEAAQAAAA5AEAACsAAAAsGRAAEAAAAOMBAAAFAAAALBkQABAAAADgAQAAMwAAACwZEAAQAAAA3wEAADIAAAAsGRAAEAAAAN0BAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9zaW1wbGVfYXR0cmlidXRlc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiaWQiOiAiMTIzIiwKICAgICAgICAibmFtZSI6ICJBbGljZSIKICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgImlkIjogIjEyMyIgfSwKICAgICAgICAgICAgeyAibmFtZSI6ICJBbGljZSIgfQogICAgICAgIF0KICAgIH0sGRAAEAAAAAYCAAAFAAAALBkQABAAAAAIAgAAKgAAACwZEAAQAAAABwIAACwAAAAsGRAAEAAAAAQCAAA0AAAALBkQABAAAAD9AQAALgAAACwZEAAQAAAA+gEAAC4AAAAsGRAAEAAAAPkBAAAvAAAALBkQABAAAAD4AQAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH17CiAgICAgICAgImlkIjogIjEyMyIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkbHQiOiAyMCB9IH0KICAgICAgICBdCiAgICB9ewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJpZCI6ICIxMjMiIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDIwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQAsGRAAEAAAADECAAAFAAAALBkQABAAAAAzAgAAKgAAACwZEAAQAAAAMgIAACwAAAAsGRAAEAAAAC8CAAA0AAAALBkQABAAAAAjAgAALgAAACwZEAAQAAAAIAIAAC4AAAAsGRAAEAAAAB8CAAAvAAAALBkQABAAAAAeAgAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fbmVzdGVkX2xvZ2ljYWxfb3BlcmF0b3JzewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJyb2xlIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkYW5kIjogWwogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0ZSI6IDMwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7ICJyb2xlIjogImFkbWluIiB9CiAgICAgICAgXQogICAgfQAAACwZEAAQAAAAYQIAAAUAAAAsGRAAEAAAAGMCAAAqAAAALBkQABAAAABiAgAALAAAACwZEAAQAAAAXwIAADQAAAAsGRAAEAAAAFMCAAAuAAAALBkQABAAAABQAgAALgAAACwZEAAQAAAATwIAAC8AAAAsGRAAEAAAAE4CAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3J7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJzY29yZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMTggfSB9LAogICAgICAgICAgICB7ICJzY29yZSI6IHsgIiRsdGUiOiAxMDAgfSB9CiAgICAgICAgXQogICAgfSwZEAAQAAAAhgIAAAUAAAAsGRAAEAAAAIgCAAAqAAAALBkQABAAAACHAgAALAAAACwZEAAQAAAAhAIAADQAAAAsGRAAEAAAAH0CAAAuAAAALBkQABAAAAB6AgAALgAAACwZEAAQAAAAeQIAAC8AAAAsGRAAEAAAAHgCAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9jb21wbGV4X21peGVkewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgImFnZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9LAogICAgICAgICAgICAiY2l0eSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAic3RhdHVzIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICJuYW1lIjogIkJvYiIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiY2l0eSI6ICJOZXcgWW9yayIgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGx0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgIm5hbWUiOiAiQm9iIiB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiJG9yIjogWwogICAgICAgICAgICAgICAgICAgIHsgImNpdHkiOiAiTmV3IFlvcmsiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDMwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH0ALBkQABAAAAC9AgAABQAAACwZEAAQAAAAvwIAACoAAAAsGRAAEAAAAL4CAAAsAAAALBkQABAAAAC7AgAANAAAACwZEAAQAAAAqgIAAC4AAAAsGRAAEAAAAKcCAAAuAAAALBkQABAAAACmAgAALwAAACwZEAAQAAAApQIAADAAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X3F1ZXJ5ewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9e30sGRAAEAAAANECAAAFAAAALBkQABAAAADPAgAAMwAAACwZEAAQAAAAzgIAAEMAAAAsGRAAEAAAAM4CAAA5AAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5bm90IGFuIG9iamVjdCwZEAAQAAAA4QIAAAUAAAAsGRAAEAAAAOMCAAArAAAA+BgQABcAAAAsGRAAEAAAAOICAAAFAAAALBkQABAAAADeAgAAQwAAACwZEAAQAAAA3gIAADkAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAg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N2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnMAAAC9RBAAXAAAAFcAAAAKAAAAvUQQAFwAAABQAAAAMwAAAFZlYyBpcyBzaXplZCBjb25zZXJ2YXRpdmVseQA8RRAAGwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAYEUQACoAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9tb2QucnOURRAAYAAAAAEBAAAZAAAAaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIGJ1ZmZlciBzaXplAAAAlEUQAGAAAAB5AAAAEgAAAA0BAAAUAAAABAAAAA4BAABJbnZhbGlkIFVURjiURRAAYAAAAH8AAAAkAAAATWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZvcmUgbmV4dF9rZXkvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLTEuMC4yMTYvc3JjL2RlL3ZhbHVlLnJzAACcRhAAXgAAAGYFAAAbAAAAU2VyaWFsaXphdGlvbiBFcnJvcjogAAAADEcQABUAAABWYWxpZGF0aW9uIEVycm9yOiAAACxHEAASAAAAU2VyaWFsaXphdGlvbiAAAEhHEAAOAAAAY29kZW1lc3NhZ2UADwEAAAQAAAAEAAAAAwAAAEludmFsaWQgSlMgRXJyb3Igbm8gbWVzc2FnZSBpcyBhdmFpbGFibGVzcmMvZXJyb3IucnOkRxAADAAAADUAAABFAAAAc3RyaW5nbnVtYmVyYm9vbGVhbmFycmF5b2JqZWN0V3Jvbmcga2V5YW4gUHJvcGVydHlUeXBlIChTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgT2JqZWN0IG9yIEFycmF5KQBBrJDBAAuXDgEAAADWAAAAEAEAABQAAAAEAAAAEQEAABIBAAASAQAAQ3JlYXRpbmcgZG9jdW1lbnQgd2l0aCBkZWZhdWx0c0RvY3VtZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5RmFpbGVkIHRvIGNyZWF0ZSBkb2N1bWVudEFkZGluZyBkZWZhdWx0cyB0byBkb2N1bWVudERlZmF1bHRzIGFkZGVkIHN1Y2Nlc3NmdWxseVNldHRpbmcgZGVmYXVsdCBmb3Iga2V5OiDXSBAAGQAAAGRvY0NyZWF0ZUhvb2tkb2NSZWNvdmVySG9va0Vycm9yc0Vycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yABlJEAAFAAAAHkkQABIAAAAwSRAADwAAAHZhcmlhbnQgaWRlbnRpZmllcmVudW0gRXJyb3JzYXR0ZW1wdGVkIHRvIGNvbnZlcnQgaW52YWxpZCBQcm9wZXJ0eVR5cGUgaW50byBKU1ZhbHVlc3JjL3NjaGVtYS9wcm9wZXJ0eV90eXBlLnJzAACrSRAAGwAAAAcAAAABAAAAU3RyaW5nTnVtYmVyQm9vbGVhbkFycmF5T2JqZWN0X19Ob25leGhhdXN0aXZlU2NoZW1hdmVyc2lvbnByaW1hcnlLZXl0eXBlcHJvcGVydGllc2luZGV4ZXNyZXF1aXJlZGVuY3J5cHRlZHN0cnVjdCBTY2hlbWFGaWVsZCAnJyBpcyByZXF1aXJlZABPShAABwAAAFZKEAANAAAAJyBzaG91bGQgYmUgb2YgdHlwZSAnJwAAT0oQAAcAAAB0ShAAFQAAAIlKEAABAAAARmFpbGVkIHRvIGdldCBwcm9wZXJ0eSAnJzogAKRKEAAYAAAAvEoQAAMAAADYRxAABgAAAFNjaGVtYSB0eXBlIGlzIGludmFsaWQgKCIiKQDYShAAGQAAAPFKEAACAAAAC0oQAAcAAAASShAACgAAABxKEAAEAAAAIEoQAAoAAAAqShAABwAAADFKEAAIAAAAOUoQAAkAAABtYXhMZW5ndGhyaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfY3JlYXRpb257CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0sCiAgICAgICAgICAgICJuYW1lIjogeyJ0eXBlIjogInN0cmluZyJ9LAogICAgICAgICAgICAiYWdlIjogeyJ0eXBlIjogIm51bWJlciJ9CiAgICAgICAgfQogICAgfQAAAAEAAABpZAAAXEwQAAIAAABzcmMvc2NoZW1hL21vZC5ycwAAAGhMEAARAAAAVwEAAAUAAABoTBAAEQAAAFgBAAAFAAAAaEwQABEAAABWAQAABQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAaEwQABEAAABVAQAALwAAAGhMEAARAAAAVAEAADAAAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfdmFsaWRhdGlvbnsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsidHlwZSI6ICJzdHJpbmcifQogICAgICAgIH0KICAgIH1hc3NlcnRpb24gZmFpbGVkOiBzY2hlbWEuaXNfdmFsaWQoKS5pc19vaygpAABoTBAAEQAAAGcBAAAFAAAAaEwQABEAAABmAQAALwAAAGhMEAARAAAAZQEAAC8AAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9pbnZhbGlkX3NjaGVtYXsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogImludmFsaWQiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0KICAgICAgICB9CiAgICB9YXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAABoTBAAEQAAAHgBAAAFAAAAaEwQABEAAAB1AQAALwAAAFJldHJpZXZpbmcgY29sbGVjdGlvbnMuLi4AAAD//////////zhPEABB0J7BAAvVAkNvbGxlY3Rpb25zIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuUHJvY2Vzc2luZyBjb2xsZWN0aW9uOiAAAHNPEAAXAAAABgAAAAYAAAAHAAAABQAAAAYAAAAPAAAA2EkQAN5JEADkSRAA60kQAPBJEAD2SRAABgAAAAYAAAAHAAAABQAAAAYAAAAGAAAAwEcQAMZHEADMRxAA00cQANhHEADYRxAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIucnMA9E8QAF8AAACuAAAAFAAAADAxMjM0NTY3ODlhYmNkZWYAAAAACAAAAAQAAAAZAQAAGgEAABsBAAAcAQAAHQEAAAwAAAAEAAAAHgEAAB8BAABkAEGwocEAC/MgAQAAACABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAADvUBAASwAAAAYKAAAOAAAARXJyb3JpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAABRURAADgAAAF9REAALAAAAaW52YWxpZCB2YWx1ZTogAHxREAAPAAAAX1EQAAsAAABtaXNzaW5nIGZpZWxkIGBgnFEQAA8AAACrURAAAQAAAGludmFsaWQgbGVuZ3RoIAC8URAADwAAAF9REAALAAAAZHVwbGljYXRlIGZpZWxkIGAAAADcURAAEQAAAKtREAABAAAAdW5rbm93biB2YXJpYW50IGBgLCB0aGVyZSBhcmUgbm8gdmFyaWFudHMAAAAAUhAAEQAAABFSEAAYAAAAYCwgZXhwZWN0ZWQgAFIQABEAAAA8UhAADAAAACEBAAAEAAAABAAAAAMAAABFcnJvciBnZXR0aW5nIHByb3BlcnR5c3JjL3V0aWxzLnJzAAB+UhAADAAAAAoAAABMAAAAUGFzc3dvcmQgY2Fubm90IGJlIGVtcHR5RW5jcnlwdGlvbgAAIgEAACAAAAAEAAAAIwEAACQBAAAkAQAAIgEAACAAAAAEAAAAJQEAACYBAAAmAQAAU2NoZW1hIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZENvbnRlbnQgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkRmFpbGVkIHRvIHN0cmluZ2lmeSBlbmNyeXB0ZWQgZGF0YUZhaWxlZCB0byBjb252ZXJ0IHNlcmlhbGl6ZWQgZGF0YSB0byBzdHJpbmdGYWlsZWQgdG8gY3JlYXRlIGNpcGhlckVuY3J5cHRpb24gZmFpbGVkAQABQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////////////////////////////////////////////////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9fX2VuY3J5cHRlZGVuY3J5cHRlZCBmaWVsZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbW9kZWxwcmltYXJ5IGtleSBtdXN0IG5vdCBiZSBlbmNyeXB0ZWRDb250ZW50IG11c3QgYmUgYW4gb2JqZWN0SW52YWxpZCBlbmNyeXB0ZWQgZGF0YTogZXhwZWN0ZWQgc3RyaW5nRW5jcnlwdGVkIGRhdGEgaXMgZW1wdHlJbnZhbGlkIGJhc2U2NCBkYXRhRGVjcnlwdGlvbiBmYWlsZWRJbnZhbGlkIFVURi04IGRhdGFGYWlsZWQgdG8gcGFyc2UgZGVjcnlwdGVkIGRhdGFJbnZhbGlkIGVuY3J5cHRlZCBkYXRhIGxlbmd0aEZhaWxlZCB0byByZWFkIGVuY3J5cHRlZCBkYXRhREVCVUdyaWRiOiovVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAAA0VhAAagAAAJUAAAAOAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMzQvc3JjL3Nlci5ycwAAsFYQAF4AAAAwCAAAMwAAALBWEABeAAAAIwgAAEAAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlsFYQAF4AAAANBgAAEgAAAGZhbHNlXCJcXFxiXGZcblxyXHRdbWlkID4gbGVuAAAAfFcQAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5ycwCQVxAAXwAAAK4AAAAUAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJYAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwAgWBAAXwAAAEwAAAAfAAAAIFgQAF8AAABGAAAAFwAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwAAy1gQAF8AAAAWAgAALwAAAHNyYy9wbHVnaW4vaW50ZWdyaXR5L21vZC5ycwA8WRAAGwAAAA8AAABIAAAASW50ZWdyaXR5AAAAKAEAABQAAAAEAAAAKQEAACoBAAAqAQAAKAEAABQAAAAEAAAAKwEAACwBAAAsAQAAX19pbnRlZ3JpdHkAPFkQABsAAABDAAAATgAAAEVycm9yIGNvbnZlcnRpbmcgdG8gc2VyZGVfanNvbjo6VmFsdWU6IADAWRAAJwAAAEVycm9yIHNlcmlhbGl6aW5nIHNvcnRlZCBKU09OOiAA8FkQAB8AAAA8WRAAGwAAAFwAAAAzAAAALQEAAAQAAAAEAAAAAwAAADxZEAAbAAAAXQAAADQAAAA8WRAAGwAAAFsAAAA0AAAARXJyb3IgcmV0cmlldmluZyBpbnRlZ3JpdHkgdmFsdWU8WRAAGwAAAHAAAABOAAAASW50ZWdyaXR5IGNoZWNrIGZhaWxlZDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5AAAAAAAABAAAAAQAAAAuAQAAAAAAAAQAAAAEAAAALwEAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAAAAAAAQAAAAEAAAAlAAAAEVycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yAAAAAAAAAQAAAAEAAAAwAQAAAAAAAAQAAAAEAAAAkQAAAFJJREJFcnJvcmNvZGVtZXNzYWdlUHJvcGVydHl0eXBlaXRlbXNtYXhJdGVtc21pbkl0ZW1zcHJvcGVydGllc21heExlbmd0aG1pbkxlbmd0aGRlZmF1bHQcXBAABAAAACBcEAAFAAAAJVwQAAgAAAAtXBAACAAAADVcEAAKAAAAP1wQAAkAAABIXBAACQAAAFFcEAAHAAAAc3RydWN0IFByb3BlcnR5TWluIGhpZ2hlciB0aGFuIG1heE1pbiBwcm9wZXJ0eSBub3QgdmFsaWRJdGVtcyBpcyBlbXB0eUludmFsaWQgcHJvcGVydHkgaXRlbXNJdGVtcyBwcm9wZXJ0eSBub3QgdmFsaWQxAQAAEAAAAAQAAAAyAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXNyYy9zY2hlbWEvcHJvcGVydHkucnMAAABHXRAAFgAAAJIAAAA5AAAAUHJvcGVydGllcyBlbXB0eVByb3BlcnR5IHR5cGUgaW52YWxpZHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV9jcmVhdGlvbnsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiA1MCwKICAgICAgICAibWluTGVuZ3RoIjogMQogICAgfQAAAEddEAAWAAAAHgIAAAUAAABHXRAAFgAAAB8CAAAFAAAAMwEAAAQAAAAEAAAAAwAAAEddEAAWAAAAHwIAACYAAABHXRAAFgAAAB4CAAAmAAAAR10QABYAAAAdAgAABQAAADQBAAAEAAAABAAAADUBAABHXRAAFgAAABsCAABPAAAAR10QABYAAAAaAgAAMwAAAHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV92YWxpZGF0aW9uYXNzZXJ0aW9uIGZhaWxlZDogcHJvcGVydHkuaXNfdmFsaWQoKS5pc19vaygpAABHXRAAFgAAACwCAAAFAAAAR10QABYAAAAqAgAATwAAAEddEAAWAAAAKQIAADMAAAByaWRiX3dhc206OnNjaGVtYTo6cHJvcGVydHk6OnRlc3RfaW52YWxpZF9wcm9wZXJ0eXsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiAxMCwKICAgICAgICAibWluTGVuZ3RoIjogMjAKICAgIH1hc3NlcnRpb24gZmFpbGVkOiBwcm9wZXJ0eS5pc192YWxpZCgpLmlzX2VycigpAABHXRAAFgAAADkCAAAFAAAAR10QABYAAAA3AgAATwAAAEddEAAWAAAANgIAADMAAABGYWlsZWQgdG8gc2V0IG91dGVyIG9iamVjdCBwcm9wZXJ0eUZhaWxlZCB0byBzZXQgaW5uZXIgb2JqZWN0IHByb3BlcnR5AAAFAAAAEgAAAA8AAAC4WxAAvVsQAM9bEABBcmMgY291bnRlciBvdmVyZmxvd4RgEAAUAAAAL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAAKBgEABJAAAAfwYAAA0AAAABAAAAAAAAAKBgEABJAAAAhQsAAA0AAAAAAAAA//////////8YYRAAQbDCwQAL2R1NaWdyYXRpb24AAAA3AQAAFAAAAAQAAAA4AQAAOQEAADkBAAA3AQAAFAAAAAQAAAA6AQAAOwEAADsBAABfX3ZlcnNpb25fX3ZlcnNpb24gc2hvdWxkIGJlIGEgbnVtYmVyTWlncmF0aW9uIE9iamVjdCBpcyB1bmRlZmluZWRNaWdyYXRpbmcgZnVuY3Rpb24gIHRvIHNjaGVtYSB2ZXJzaW9uIG5vdCBmb3VuZAAAAK5hEAATAAAAwWEQABwAAABFcnJvciBnZXR0aW5nIHRoZSBkb2N1bWVudCB2ZXJzaW9uLCBlcnIg8GEQACgAAABFcnJvciByZWNvdmVyaW5nIG1pZ3JhdGlvbiBmdW5jdGlvbiBmb3IgdmVyc2lvbiAgYhAAMAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbGF6eV9zdGF0aWMtMS40LjAvc3JjL2lubGluZV9sYXp5LnJzAAAAWGIQAGUAAAAeAAAAEAAAACRvciRvciBtdXN0IGJlIGFuIGFycmF5JGFuZCBtdXN0IGJlIGFuIGFycmF5RmFpbGVkIHRvIGdldCB0aGUgcXVlcnkgdmFsdWUsIGVyciAA/GIQACMAAABGYWlsZWQgdG8gZ2V0IHRoZSBkb2N1bWVudCBrZXksIGVyciAoYxAAJAAAACRndCRsdCRpblVuc3VwcG9ydGVkIG9wZXJhdG9yOiAAXWMQABYAAAAkaW4gdmFsdWUgbXVzdCBiZSBhbiBhcnJheURvY3VtZW50IHZhbHVlIGlzIG5vdCBhIG51bWJlckNvbmRpdGlvbiB2YWx1ZSBpcyBub3QgYSBudW1iZXIvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9nZW5lcmFsX3B1cnBvc2UvZGVjb2RlLnJzAADTYxAAcwAAAI0AAAAZAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZV9zdWZmaXgucnMAAFhkEAB6AAAAVAAAAAkAAABYZBAAegAAAB8AAAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnP0ZBAAXAAAAIoAAAAJAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZS5ycwBgZRAAcwAAADgAAAAmAAAAYGUQAHMAAABeAAAALgAAAGBlEABzAAAAYQAAAA0AAABgZRAAcwAAAGUAAAA4AAAAYGUQAHMAAAA9AAAAJwAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjIuMS9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9tb2QucnMkZhAAcAAAAJYAAAANAAAAJGYQAHAAAACYAAAAQAAAACRmEABwAAAAlwAAAA0AAAAkZhAAcAAAAJoAAAANAAAAJGYQAHAAAACeAAAADQAAACRmEABwAAAAnwAAAA0AAAAkZhAAcAAAAIcAAAAlAAAAJGYQAHAAAACIAAAAKwAAACRmEABwAAAAQAAAABsAAAAkZhAAcAAAAEIAAAAgAAAAAAAAAAEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYva2VjY2FrLTAuMS41L3NyYy9saWIucnNBIHJvdW5kX2NvdW50IGdyZWF0ZXIgdGhhbiBLRUNDQUtfRl9ST1VORF9DT1VOVCBpcyBub3Qgc3VwcG9ydGVkIQAAAPhnEABYAAAA7gAAAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguNC9zcmMvc29mdC9maXhzbGljZTMyLnJzAAAApGgQAGEAAACJBAAAEgAAAKRoEABhAAAAiQQAAD0AAACkaBAAYQAAABQFAAAiAAAApGgQAGEAAAAUBQAACQAAAEVycm9yOiAASGkQAAcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhbmRfY29yZS0wLjYuNC9zcmMvb3MucnMAAFhpEABaAAAAPwAAAA0AAABnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZXVuZXhwZWN0ZWQgc2l0dWF0aW9uU2VjUmFuZG9tQ29weUJ5dGVzOiBpT1MgU2VjdXJpdHkgZnJhbWV3b3JrIGZhaWx1cmVSdGxHZW5SYW5kb206IFdpbmRvd3Mgc3lzdGVtIGZ1bmN0aW9uIGZhaWx1cmVSRFJBTkQ6IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogQ1BVIGlzc3VlIGxpa2VseVJEUkFORDogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZFdlYiBDcnlwdG8gQVBJIGlzIHVuYXZhaWxhYmxlQ2FsbGluZyBXZWIgQVBJIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgZmFpbGVkcmFuZFNlY3VyZTogVnhXb3JrcyBSTkcgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZE5vZGUuanMgY3J5cHRvIENvbW1vbkpTIG1vZHVsZSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgTm9kZS5qcyBBUEkgY3J5cHRvLnJhbmRvbUZpbGxTeW5jIGZhaWxlZE5vZGUuanMgRVMgbW9kdWxlcyBhcmUgbm90IGRpcmVjdGx5IHN1cHBvcnRlZCwgc2VlIGh0dHBzOi8vZG9jcy5ycy9nZXRyYW5kb20jbm9kZWpzLWVzLW1vZHVsZS1zdXBwb3J0VW5rbm93biBFcnJvcjogEWwQAA8AAABPUyBFcnJvcjogAAAobBAACgAAAGNyeXB0bwAAxGkQAOtpEAARahAAJWoQAFdqEACEahAAs2oQANRqEADxahAAxGkQAMRpEAAeaxAAT2sQAHxrEACsaxAAJwAAACYAAAAUAAAAMgAAAC0AAAAvAAAAIQAAAB0AAAAtAAAAJwAAACcAAAAxAAAALQAAADAAAABlAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvcGFya2luZ19sb3QucnMAvGwQAGsAAABrAQAAFwAAALxsEABrAAAAhgEAABcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcmtpbmdfbG90X2NvcmUtMC45LjEwL3NyYy9wYXJraW5nX2xvdC5ycwBIbRAAawAAAEoBAAAMAAAAUGFya2luZyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AAMRtEAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAAD0bRAAcgAAABoAAAAJAAAA9G0QAHIAAAAeAAAACQAAAPRtEAByAAAAIgAAAAkAAAD0bRAAcgAAACYAAAAJAAAA9G0QAHIAAAAqAAAACQAAAAAAAAAIAAAABAAAAD0BAAByZWFkb25seXJlYWR3cml0ZXJlYWR3cml0ZWZsdXNoY2xlYW51cHZlcnNpb25jaGFuZ2VhdHRlbXB0ZWQgdG8gY29udmVydCBpbnZhbGlkIElkYlRyYW5zYWN0aW9uTW9kZSBpbnRvIEpTVmFsdWUvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dlYi1zeXMtMC4zLjY5L3NyYy9mZWF0dXJlcy9nZW5fSWRiVHJhbnNhY3Rpb25Nb2RlLnJzAAAAN28QAHYAAAAEAAAAAQAAAAAAAAAIAAAABAAAAD4BAAA/AQAAQAEAAEEBAABpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAAAA3G8QAA4AAADqbxAACwAAAAEAQZjgwQALwwEBAAAARQEAACBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyAQAAAAAAAAAgcBAALAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi4zL3NyYy9saWIucnNccBAAZAAAADUAAAAOAAAA///////////QcBAAQejhwQAL1gcvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAOhwEABPAAAAyAUAABQAAADocBAATwAAAMgFAAAhAAAA6HAQAE8AAAC8BQAAIQAAAOhwEABPAAAATAQAACQAAABva0ZBSUxpZ25vcmVkaWdub3JlZCwgAACFcRAACQAAAAAAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzAJxxEABnAAAAUQIAACoAAACccRAAZwAAAE4CAAAJAAAAnHEQAGcAAAArAgAAJwAAAJxxEABnAAAALwIAACAAAACccRAAZwAAACYCAAAuAAAAnHEQAGcAAAAlAgAAKgAAAJxxEABnAAAAYQIAAB4AAACccRAAZwAAAF0CAAAlAAAAAQAAgAAAAAAAAAAAnHEQAGcAAABtAgAAFgAAAJxxEABnAAAAdQIAADUAAAAKZmFpbHVyZXM6CmZhaWx1cmVzOgpGQUlMRUR0ZXN0IHJlc3VsdDogLiAgcGFzc2VkOyAgZmFpbGVkOyAgaWdub3JlZDsgIGZpbHRlcmVkIG91dArLchAADQAAANhyEAACAAAA2nIQAAkAAADjchAACQAAAOxyEAAKAAAA9nIQAA4AAAAgICAgNHMQAAQAAACccRAAZwAAAHwCAAAmAAAAIG91dHB1dDoKbm90ZTogIGRpZCBub3QgcGFuaWMgYXMgZXhwZWN0ZWQKCgBZcxAABgAAAF9zEAAcAAAAbm90ZTogcGFuaWMgZGlkIG5vdCBjb250YWluIGV4cGVjdGVkIHN0cmluZwogICAgICBwYW5pYyBtZXNzYWdlOiBgIiJgLAoAuHMQABcAAADPcxAABAAAAJxxEABnAAAAsAIAACcAAACccRAAZwAAALACAAAwAAAAIGV4cGVjdGVkIHN1YnN0cmluZzogYCIiYAoKAAR0EAAXAAAAG3QQAAQAAABkZWJ1Z2xvZ2luZm93YXJuZXJyb3JKUyBleGNlcHRpb24gdGhhdCB3YXMgdGhyb3duOgotLS0tICBvdXRwdXQgLS0tLQoAAABjdBAABQAAAGh0EAANAAAAnHEQAGcAAACiAgAAIgAAAJxxEABnAAAABgEAABIAAABKAQAABAAAAAQAAABLAQAATAEAAE0BAEHI6cEACw4BAAAATgEAAE8BAABQAQBB4OnBAAudBgEAAABRAQAAUgEAAFMBAACccRAAZwAAADMBAAAnAAAALS1pbmNsdWRlLWlnbm9yZWQtLXNraXAtLXNraXA9bW9yZSB0aGFuIG9uZSBmaWx0ZXIgYXJndW1lbnQgY2Fubm90IGJlIHBhc3NlZJxxEABnAAAAQgEAABEAAABmbGFnICBub3Qgc3VwcG9ydGVkAFx1EAAFAAAAYXUQAA4AAACccRAAZwAAAEABAAARAAAAQXJndW1lbnQgdG8gb3B0aW9uICdza2lwJyBtaXNzaW5nAAAAnHEQAGcAAAA5AQAAGgAAAJxxEABnAAAAOwEAABoAAACccRAAZwAAAC4BAAAoAAAAnHEQAGcAAAAtAQAALAAAAHRlc3R0ZXN0c3J1bm5pbmcgIAAA/XUQAAgAAAAFdhAAAQAAAGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY3JlYXRpbmcgYSB0ZXN0OiAYdhAAKAAAAJxxEABnAAAAYgEAABUAAABUAQAAWHYQAC9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAYHYQAE8AAADIBQAAFAAAAGB2EABPAAAAyAUAACEAAABgdhAATwAAALwFAAAhAAAAVwEAAAwAAAAEAAAAWAEAAFkBAABaAQAAYHYQAE8AAABMBAAAJAAAAHRlc3QgIC4uLiAAAAh3EAAFAAAADXcQAAUAAAA6IAAAAQAAAAAAAAAkdxAAAgAAAAoAAAABAAAAAAAAADh3EAABAAAAYHVud3JhcF90aHJvd2AgZmFpbGVkAAAAAAAAAAQAAAAEAAAAWwEAAFwBAABdAQAAJAAAAAQAAABeAQAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwCIdxAAZwAAAN0AAAAVAEGI8MEAC4IGAQAAAI4AAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAAAFZ4EABPAAAABAEAABoAAAB0ZXN0ICAuLi4gAAC4eBAABQAAAL14EAAFAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tdGVzdC0wLjMuNDIvc3JjL3J0L21vZC5ycwDUeBAAZwAAAG4BAAAbAAAAY2Fubm90IGFjY2VzcyBhIHNjb3BlZCB0aHJlYWQgbG9jYWwgdmFyaWFibGUgd2l0aG91dCBjYWxsaW5nIGBzZXRgIGZpcnN0L1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zY29wZWQtdGxzLTEuMC4xL3NyYy9saWIucnOUeRAAXAAAAKgAAAAJAAAAAAAAAAQAAAAEAAAAXwEAAEVycm9yAAAAAAAAAAQAAAAEAAAAYAEAAGEBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzACx6EABnAAAApgEAAB4AAAAAAAAABAAAAAQAAABgAQAAYQEAAAAAAAAEAAAABAAAAGABAABhAQAAAAAAAAQAAAAEAAAAYAEAAGEBAAAAAAAABAAAAAQAAABgAQAAYQEAAGIBAAAMAAAABAAAAGMBAABkAQAAWgEAQZT2wQALoQQBAAAAZQEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAFN7EABLAAAABgoAAA4AAAAsehAAZwAAAAkBAAAtAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTyexAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5JHwQADgAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzZHwQAEwAAACeAAAAMgAAAAAAAAAIAAAABAAAAGYBAABnAQAAaAEAAGkBAAAAAAAACAAAAAQAAABqAQAARGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZQBBwPrBAAuSAgEAAABrAQAAbAEAAGwBAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAFB9EABPAAAAyAUAABQAAABQfRAATwAAAMgFAAAhAAAAUH0QAE8AAAC8BQAAIQAAAFB9EABPAAAATAQAACQAAABvdXRwdXR0ZXN0ICAuLi4g5n0QAAUAAADrfRAABQAAADogAAABAAAAAAAAAAB+EAACAAAACgAAAAEAAAAAAAAAFH4QAAEAAABFcnJvcgAAAG4BAAAMAAAABAAAAG8BAABwAQAAcQEAAAoKU3RhY2s6CgoAQdz8wQALmQEBAAAAcgEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAJt+EABLAAAABgoAAA4AQYD+wQALtQ0BAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAATn8QAE8AAAAEAQAAGgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAAB3AQAABAAAAAQAAAB4AQAAeQEAAHoBAAAEAAAABAAAAHsBAAB8AQAAegEAAAQAAAAEAAAAfQEAAH4BAABGbk9uY2UgY2FsbGVkIG1vcmUgdGhhbiBvbmNlL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL3F1ZXVlLnJzAAAAPIAQAGkAAAAoAAAAKQAAADyAEABpAAAAJQAAAC4AAAA8gBAAaQAAAD4AAAAaAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwDYgBAAZwAAAKgAAAAPAAAA2IAQAGcAAACIAAAAJwAAANiAEABnAAAAsgAAACQAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC40Mi9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAAB/AQAAgAEAAIEBAACCAQAAcIEQAHUAAABmAAAAJQAAAHJldHVybiB0aGlzYHVud3JhcF90aHJvd2AgZmFpbGVkY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRKc1ZhbHVlKCkAWoIQAAgAAABighAAAQAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3RFcnJvci9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5yc0VPRiB3aGlsZSBwYXJzaW5nIGEgbGlzdEVPRiB3aGlsZSBwYXJzaW5nIGFuIG9iamVjdEVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nRU9GIHdoaWxlIHBhcnNpbmcgYSB2YWx1ZWV4cGVjdGVkIGA6YGV4cGVjdGVkIGAsYCBvciBgXWBleHBlY3RlZCBgLGAgb3IgYH1gZXhwZWN0ZWQgaWRlbnRleHBlY3RlZCB2YWx1ZWV4cGVjdGVkIGAiYGludmFsaWQgZXNjYXBlaW52YWxpZCBudW1iZXJudW1iZXIgb3V0IG9mIHJhbmdlaW52YWxpZCB1bmljb2RlIGNvZGUgcG9pbnRjb250cm9sIGNoYXJhY3RlciAoXHUwMDAwLVx1MDAxRikgZm91bmQgd2hpbGUgcGFyc2luZyBhIHN0cmluZ2tleSBtdXN0IGJlIGEgc3RyaW5naW52YWxpZCB2YWx1ZTogZXhwZWN0ZWQga2V5IHRvIGJlIGEgbnVtYmVyIGluIHF1b3Rlc2Zsb2F0IGtleSBtdXN0IGJlIGZpbml0ZSAoZ290IE5hTiBvciArLy1pbmYpbG9uZSBsZWFkaW5nIHN1cnJvZ2F0ZSBpbiBoZXggZXNjYXBldHJhaWxpbmcgY29tbWF0cmFpbGluZyBjaGFyYWN0ZXJzdW5leHBlY3RlZCBlbmQgb2YgaGV4IGVzY2FwZXJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZAAAkQEAAAwAAAAEAAAAkgEAAJMBAACUAQAARXJyb3IoLCBsaW5lOiAsIGNvbHVtbjogKQAAAHyFEAAGAAAAgoUQAAgAAACKhRAACgAAAJSFEAABAEHAi8IAC5sLAQAAAJUBAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AOOCEABLAAAABgoAAA4AAACWAQAADAAAAAQAAACXAQAAmAEAAJQBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjEzNC9zcmMvcmVhZC5ycwAohhAAXwAAAKABAABFAAAAKIYQAF8AAAClAQAAPQAAACiGEABfAAAArQEAABoAAAAohhAAXwAAAPoBAAATAAAAKIYQAF8AAAD/AQAAMwAAACiGEABfAAAAAwIAAD4AAAAohhAAXwAAAAkCAAA6AAAAKIYQAF8AAABoAgAAGQAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAQACAAMABAAFAAYABwAIAAkA//////////////////8KAAsADAANAA4ADwD/////////////////////////////////////////////////////////////////////CgALAAwADQAOAA8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAQACAAMABAAFAAYABwAIAAkAD//////////////////6AAsADAANAA4ADwAP////////////////////////////////////////////////////////////////////+gALAAwADQAOAA8AD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9hbnkgdmFsaWQgSlNPTiB2YWx1ZWEgc3RyaW5nIGtleTAxMjM0NTY3ODlhYmNkZWZ1dXV1dXV1dWJ0bnVmcnV1dXV1dXV1dXV1dXV1dXV1dQAAIgBBlJfCAAsB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bHVlT3B0aW9uIHZhbHVlbmV3dHlwZSBzdHJ1Y3RzZXF1ZW5jZW1hcGVudW11bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnRleHBsaWNpdCBwYW5pYy9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtMS4wLjIxNi9zcmMvZGUvbW9kLnJzAL/BEABcAAAA6wgAABIAAADPwBAAAQAAAM/AEAABAAAAYCBvciBgAADPwBAAAQAAADzCEAAGAAAAz8AQAAEAAABvbmUgb2YgLCAAAAABAAAAAAAAAC4waTMyAAAAqwEAAAwAAAAEAAAArAEAAK0BAACuAQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAJDCEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAACQwhAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3IAAQAAAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZp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OiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAWNYQACAAAAB41hAAEgAAAAAAAAAEAAAABAAAAMYBAAA9PSE9bWF0Y2hlc2Fzc2VydGlvbiBgbGVmdCAgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IAogcmlnaHQ6IAC31hAAEAAAAMfWEAAXAAAA3tYQAAkAAAAgcmlnaHRgIGZhaWxlZDogCiAgbGVmdDogAAAAt9YQABAAAAAA1xAAEAAAABDXEAAJAAAA3tYQAAkAAAA6IAAAAQAAAAAAAAA81xAAAgAAAAAAAAAMAAAABAAAAMcBAADIAQAAyQEAACAgICAgeyAsICB7CiwKfSB9KCgKLApdY29yZS9zcmMvZm10L251bS5ycwAAf9cQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY29yZS9zcmMvZm10L21vZC5yc2ZhbHNldHJ1ZQAArtgQABMAAACWCQAAJgAAAK7YEAATAAAAnwkAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVy7NgQAEwAAABjb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAQNkQACcAAABbAwAABQAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCB42RAAEgAAAIrZEAAiAAAAcmFuZ2UgZW5kIGluZGV4ILzZEAAQAAAAitkQACIAAABzbGljZSBpbmRleCBzdGFydHMg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", "base64"); - -// src/index.ts -init_ridb_wasm(); -var internal; -var StorageType = /* @__PURE__ */ ((StorageType2) => { - StorageType2["InMemory"] = "InMemory"; - StorageType2["IndexDB"] = "IndexDB"; - return StorageType2; -})(StorageType || {}); -var RIDB = class _RIDB { - /** - * Creates an instance of RIDB. - * @param options - */ - constructor(options) { - __publicField(this, "schemas"); - __publicField(this, "migrations"); - __publicField(this, "plugins", []); - __publicField(this, "_db"); - __publicField(this, "dbName"); - const { - dbName, - schemas, - migrations = {}, - plugins = [] - } = options; - this.schemas = schemas; - this.plugins = plugins; - this.migrations = migrations; - this.dbName = dbName; - } - getStorageType(storageType) { - return storageType === "InMemory" /* InMemory */ ? internal.InMemory : internal.IndexDB; - } - /** - * Gets the database instance. Throws an error if the database has not been started. - * @throws Will throw an error if the database is not started. - * @private - */ - get db() { - if (!this._db) { - throw new Error("Start the database first"); - } - return this._db; - } - get started() { - var _a, _b; - return (_b = (_a = this._db) == null ? void 0 : _a.started) != null ? _b : false; - } - /** - * Gets the collections from the database. - * @returns The collections object. - */ - get collections() { - return this.db.collections; - } - /** - * Loads the RIDB Rust module. - * @returns {Promise} A promise that resolves to the RIDB Rust module. - * @private - */ - static load() { - return __async(this, null, function* () { - internal != null ? internal : internal = yield Promise.resolve().then(() => (init_ridb_wasm(), ridb_wasm_exports)).then((module2) => __async(this, null, function* () { - const wasmInstance = module2.initSync(ridb_wasm_bg_default); - yield module2.default(wasmInstance); - return module2; - })); - return internal; - }); - } - /** - * Starts the database. - * @returns {Promise>} A promise that resolves to the database instance. - * @param options - */ - start(options) { - return __async(this, null, function* () { - var _a; - if (!this._db) { - const { storageType, password } = options != null ? options : {}; - const { Database: Database2 } = yield _RIDB.load(); - const StorageClass = typeof storageType === "string" ? this.getStorageType(storageType) : storageType != null ? storageType : void 0; - if (StorageClass && !StorageClass.create) { - throw new Error("Your storage does not have an async create function, please check documentation"); - } - const storage = StorageClass ? yield StorageClass.create(this.dbName, this.schemas, options) : void 0; - (_a = this._db) != null ? _a : this._db = yield Database2.create( - this.dbName, - this.schemas, - this.migrations, - this.plugins, - { - apply: (plugins = []) => plugins.map((Plugin) => new Plugin()) - }, - password, - storage - ); - } else { - yield this.db.start(); - } - return this.db; - }); - } - close() { - return __async(this, null, function* () { - yield this.db.close(); - this._db = void 0; - debugger; - }); - } -}; -var SchemaFieldType = { - string: "string", - number: "number", - boolean: "boolean", - array: "array", - object: "object" -}; diff --git a/packages/ridb/build/cjs/index.d.ts b/packages/ridb/build/cjs/index.d.ts index f2a8b65..92f0507 100644 --- a/packages/ridb/build/cjs/index.d.ts +++ b/packages/ridb/build/cjs/index.d.ts @@ -1,440 +1,7 @@ // Generated by dts-bundle-generator v9.5.1 -/** -* Represents the type of operation to be performed on the collection. -*/ -export enum OpType { - /** - * Create operation. - */ - CREATE = 0, - /** - * Update operation. - */ - UPDATE = 1, - /** - * Delete operation. - */ - DELETE = 2, - /** - * Query Operation. - */ - QUERY = 3, - /** - * Count Operation. - */ - COUNT = 4 -} -export type Operators = { - $gte?: number; - $gt?: number; - $lt?: number; - $lte?: number; -}; -export type InOperator = { - $in?: T[]; -}; -export type OperatorOrType = T extends number ? T | Operators | InOperator : T | InOperator; -export type LogicalOperators = { - $and?: Partial>[]; - $or?: Partial>[]; -}; -export type QueryType = Partial<{ - [K in keyof T["properties"]]: OperatorOrType>; -}> & LogicalOperators | LogicalOperators[]; -export class Query { - constructor(query: QueryType, schema: Schema); - readonly query: QueryType; -} -//test -export type BaseStorageOptions = { - [name: string]: string | boolean | number; -}; -export class BaseStorage extends StorageInternal { - static create(dbName: string, schemas: SchemasCreate, options?: BaseStorageOptions): Promise>; - constructor(dbName: string, schemas: Schemas, options?: BaseStorageOptions); - readonly dbName: string; - readonly schemas: Record>; - readonly options: BaseStorageOptions; - readonly core: CoreStorage; - start(): Promise; - close(): Promise; - count(colectionName: keyof Schemas, query: QueryType): Promise; - findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; - find(collectionName: keyof Schemas, query: QueryType): Promise[]>; - write(op: Operation): Promise>; - getOption(name: string): string | boolean | number | undefined; - getSchema(name: string): Schema; -} -/** - * Represents the type definition for a schema. - */ -export type SchemaType = { - /** - * The version of the schema. - */ - readonly version: number; - /** - * The primary key of the schema. - */ - readonly primaryKey: string; - /** - * The type of the schema. - */ - readonly type: string; - /** - * An optional array of required fields. - */ - readonly required?: string[]; - /** - * An optional array of indexes. - */ - readonly indexes?: string[]; - readonly encrypted?: string[]; - /** - * The properties defined in the schema. - */ - readonly properties: { - [name: string]: Property; - }; -}; -/** - * Represents a schema, including its definition and related methods. - * - * @template T - The schema type. - */ -export class Schema { - /** - * The schema definition. - */ - schema: Schema; - /** - * Creates a new `Schema` instance from the provided definition. - * - * @template TS - The schema type. - * @param {TS} defi, Debugnition - The schema definition. - * @returns {Schema} The created `Schema` instance. - */ - static create(definition: TS): Schema; - /** - * The version of the schema. - */ - readonly version: number; - /** - * The primary key of the schema. - */ - readonly primaryKey: string; - /** - * The type of the schema. - */ - readonly type: string; - /** - * An optional array of indexes. - */ - readonly indexes?: string[]; - readonly required?: string[]; - readonly encrypted?: string[]; - /** - * The properties defined in the schema. - */ - readonly properties: { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: T["properties"][K]; - } & { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: T["properties"][K]; - }; - /** - * Converts the schema to a JSON representation. - * - * @returns {SchemaType} The JSON representation of the schema. - */ - toJSON(): SchemaType; -} -/** - * Represents a database containing collections of documents. - * RIDB extends from this class and is used to expose collections. - * - * So if you specify: - * ```typescript - * const db = new RIDB( - * { - * schemas: { - * demo: { - * version: 0, - * primaryKey: 'id', - * type: SchemaFieldType.object, - * properties: { - * id: { - * type: SchemaFieldType.string, - * maxLength: 60 - * } - * } - * } - * } as const - * } - * ) - * ``` - * - * The collection will be available as `db.collections.demo` and all the methods for the collection (find, count, findById, update, create, delete) will be available. - * - * @template T - A record of schema types. - */ -export class Database { - /** - * Creates a new `Database` instance with the provided schemas and storage module. - * - * @template TS - A record of schema types. - * @param {TS} schemas - The schemas to use for the collections. - * @param migrations - * @param plugins - * @param options - * @param password - * @returns {Promise>} A promise that resolves to the created `Database` instance. - */ - static create(db_name: string, schemas: TS, migrations: MigrationPathsForSchemas | MigrationPathsForSchema, plugins: Array, options: RIDBModule, password?: string, storage?: BaseStorage): Promise>; - /** - * The collections in the database. - * - * This is a read-only property where the key is the name of the collection and the value is a `Collection` instance. - */ - readonly collections: { - [name in keyof T]: Collection>; - }; - readonly started: boolean; - /** - * Starts the database. - * - * @returns {Promise} A promise that resolves when the database is started. - */ - start(): Promise; - /** - * Closes the database. - * - * @returns {Promise} A promise that resolves when the database is closed. - */ - close(): Promise; -} -/** - * Represents a function type for creating storage with the provided schema type records. - * - * @template T - The schema type record. - * @param {T} records - The schema type records. - * @returns {Promise} A promise that resolves to the created internals record. - */ -export type CreateStorage = (records: T) => Promise>; -/** - * Represents a storage module with a method for creating storage. - */ -export type RIDBModule = { - /** - * Plugin constructors array - */ - apply: (plugins: Array) => Array; -}; -/** - * Represents an operation to be performed on a collection. - * - * @template T - The schema type of the collection. - */ -export type Operation = { - /** - * The name of the collection on which the operation will be performed. - */ - collection: string; - /** - * The type of operation to be performed (e.g., CREATE, UPDATE, DELETE). - */ - opType: OpType; - /** - * The data involved in the operation, conforming to the schema type. - */ - data: Doc; - /** - * An array of indexes related to the operation. - */ - indexes: Array; -}; -export type Hook = (schema: Schema, migration: MigrationPathsForSchema, doc: Doc) => Doc; -export type BasePluginOptions = { - docCreateHook?: Hook; - docRecoverHook?: Hook; -}; -export class BasePlugin implements BasePluginOptions { - docCreateHook?: Hook; - docRecoverHook?: Hook; -} -/** - * Represents a property within a schema, including various constraints and nested properties. - */ -export class Property { - /** - * The type of the property. - */ - readonly type: string; - /** - * The version of the property, if applicable. - */ - readonly version?: number; - /** - * The primary key of the property, if applicable. - */ - readonly primaryKey?: string; - /** - * An optional array of nested properties for array-type properties. - */ - readonly items?: Property[]; - /** - * The maximum number of items for array-type properties, if applicable. - */ - readonly maxItems?: number; - /** - * The minimum number of items for array-type properties, if applicable. - */ - readonly minItems?: number; - /** - * The maximum length for string-type properties, if applicable. - */ - readonly maxLength?: number; - /** - * The minimum length for string-type properties, if applicable. - */ - readonly minLength?: number; - /** - * An optional array of required fields for object-type properties. - */ - readonly required?: boolean; - /** - * An optional default value for the property. - */ - readonly default?: any; - /** - * An optional map of nested properties for object-type properties. - */ - readonly properties?: { - [name: string]: Property; - }; -} -export type InternalsRecord = { - [name: string]: BaseStorage; -}; -/** - * ExtractType is a utility type that maps a string representing a basic data type to the actual TypeScript type. - * - * @template T - A string literal type representing the basic data type ('string', 'number', 'boolean', 'object', 'array'). - * - * @example - * type StringType = ExtractType<'string'>; // StringType is string - * type NumberType = ExtractType<'number'>; // NumberType is number - * type BooleanType = ExtractType<'boolean'>; // BooleanType is boolean - * type ObjectType = ExtractType<'object'>; // ObjectType is object - * type ArrayType = ExtractType<'array'>; // ArrayType is Array - */ -export type ExtractType = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "object" ? object : T extends "array" ? Array : never; -/** - * Doc is a utility type that transforms a schema type into a document type where each property is mapped to its extracted type. - * - * @template T - A schema type with a 'properties' field where each property's type is represented as a string. - * - * type Document = Doc; // Document is { name: string; age: number; } - */ -export type Doc = { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: ExtractType; -} & { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: ExtractType; -} & { - __version?: number; -}; -/** - * Collection is a class that represents a collection of documents in a database. - * @template T - A schema type defining the structure of the documents in the collection. - */ -export class Collection { - /** - * Finds all documents in the collection. - * - * @returns A promise that resolves to an array of documents. - */ - find(query: QueryType): Promise[]>; - /** - * count all documents in the collection. - * - * @returns A promise that resolves to an array of documents. - */ - count(query: QueryType): Promise; - /** - * Finds a single document in the collection by its ID. - * - * @param id - The ID of the document to find. - * @returns A promise that resolves to the found document. - */ - findById(id: string): Promise>; - /** - * Updates a document in the collection by its ID. - * - * @param id - The ID of the document to update. - * @param document - A partial document containing the fields to update. - * @returns A promise that resolves when the update is complete. - */ - update(document: Partial>): Promise; - /** - * Creates a new document in the collection. - * - * @param document - The document to create. - * @returns A promise that resolves to the created document. - */ - create(document: Doc): Promise>; - /** - * Deletes a document in the collection by its ID. - * - * @param id - The ID of the document to delete. - * @returns A promise that resolves when the deletion is complete. - */ - delete(id: string): Promise; -} -/** - * Represents a record of schema types, where each key is a string and the value is a `SchemaType`. - */ -export type SchemaTypeRecord = { - [name: string]: SchemaType; -}; -export abstract class StorageInternal { - constructor(name: string, schemas: Schemas); - abstract start(): Promise; - abstract close(): Promise; - abstract count(colectionName: keyof Schemas, query: QueryType): Promise; - abstract findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; - abstract find(collectionName: keyof Schemas, query: QueryType): Promise[]>; - abstract write(op: Operation): Promise>; -} -declare class CoreStorage { - /** - * @param {any} document - * @param {Query} query - * @returns {boolean} - */ - matchesQuery(document: any, query: Query): boolean; -} -export type EnumerateUpTo = Acc["length"] extends N ? Acc[number] : EnumerateUpTo; -export type EnumerateFrom1To = Exclude, 0> | (N extends 0 ? never : N); -export type IsVersionGreaterThan0 = V extends 0 ? false : true; -export type AnyVersionGreaterThan1> = true extends { - [K in keyof T]: IsVersionGreaterThan0; -}[keyof T] ? true : false; -export type MigrationFunction = (doc: Doc) => Doc; -export type MigrationPathsForSchema = T["version"] extends 0 ? {} : { - [K in EnumerateFrom1To]: MigrationFunction; -}; -export type MigrationPathsForSchemas = { - [K in keyof T]: MigrationPathsForSchema; -}; -export type MigrationsParameter = AnyVersionGreaterThan1 extends true ? { - migrations: MigrationPathsForSchemas; -} : { - migrations?: never; -}; +import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Collection, CreateStorage, Database, Doc, EnumerateFrom1To, EnumerateUpTo, ExtractType, Hook, InOperator, InternalsRecord, IsVersionGreaterThan0, LogicalOperators, MigrationFunction, MigrationPathsForSchema, MigrationPathsForSchemas, MigrationsParameter, OpType, Operation, OperatorOrType, Operators, Property, Query, QueryType, RIDBModule, Schema, SchemaType, SchemaTypeRecord, StorageInternal } from '@trust0/ridb-wasm'; + /** * Represents a RIDB (Rust IndexedDB) instance. * This is the main class exposed by the RIDB Storage sdk and is used to create a database instance. @@ -583,4 +150,39 @@ export declare const SchemaFieldType: { object: "object"; }; +export { + AnyVersionGreaterThan1, + BasePlugin, + BasePluginOptions, + BaseStorage, + Collection, + CreateStorage, + Database, + Doc, + EnumerateFrom1To, + EnumerateUpTo, + ExtractType, + Hook, + InOperator, + InternalsRecord, + IsVersionGreaterThan0, + LogicalOperators, + MigrationFunction, + MigrationPathsForSchema, + MigrationPathsForSchemas, + MigrationsParameter, + OpType, + Operation, + OperatorOrType, + Operators, + Property, + Query, + QueryType, + RIDBModule, + Schema, + SchemaType, + SchemaTypeRecord, + StorageInternal, +}; + export {}; diff --git a/packages/ridb/build/esm/index.d.ts b/packages/ridb/build/esm/index.d.ts index f2a8b65..92f0507 100644 --- a/packages/ridb/build/esm/index.d.ts +++ b/packages/ridb/build/esm/index.d.ts @@ -1,440 +1,7 @@ // Generated by dts-bundle-generator v9.5.1 -/** -* Represents the type of operation to be performed on the collection. -*/ -export enum OpType { - /** - * Create operation. - */ - CREATE = 0, - /** - * Update operation. - */ - UPDATE = 1, - /** - * Delete operation. - */ - DELETE = 2, - /** - * Query Operation. - */ - QUERY = 3, - /** - * Count Operation. - */ - COUNT = 4 -} -export type Operators = { - $gte?: number; - $gt?: number; - $lt?: number; - $lte?: number; -}; -export type InOperator = { - $in?: T[]; -}; -export type OperatorOrType = T extends number ? T | Operators | InOperator : T | InOperator; -export type LogicalOperators = { - $and?: Partial>[]; - $or?: Partial>[]; -}; -export type QueryType = Partial<{ - [K in keyof T["properties"]]: OperatorOrType>; -}> & LogicalOperators | LogicalOperators[]; -export class Query { - constructor(query: QueryType, schema: Schema); - readonly query: QueryType; -} -//test -export type BaseStorageOptions = { - [name: string]: string | boolean | number; -}; -export class BaseStorage extends StorageInternal { - static create(dbName: string, schemas: SchemasCreate, options?: BaseStorageOptions): Promise>; - constructor(dbName: string, schemas: Schemas, options?: BaseStorageOptions); - readonly dbName: string; - readonly schemas: Record>; - readonly options: BaseStorageOptions; - readonly core: CoreStorage; - start(): Promise; - close(): Promise; - count(colectionName: keyof Schemas, query: QueryType): Promise; - findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; - find(collectionName: keyof Schemas, query: QueryType): Promise[]>; - write(op: Operation): Promise>; - getOption(name: string): string | boolean | number | undefined; - getSchema(name: string): Schema; -} -/** - * Represents the type definition for a schema. - */ -export type SchemaType = { - /** - * The version of the schema. - */ - readonly version: number; - /** - * The primary key of the schema. - */ - readonly primaryKey: string; - /** - * The type of the schema. - */ - readonly type: string; - /** - * An optional array of required fields. - */ - readonly required?: string[]; - /** - * An optional array of indexes. - */ - readonly indexes?: string[]; - readonly encrypted?: string[]; - /** - * The properties defined in the schema. - */ - readonly properties: { - [name: string]: Property; - }; -}; -/** - * Represents a schema, including its definition and related methods. - * - * @template T - The schema type. - */ -export class Schema { - /** - * The schema definition. - */ - schema: Schema; - /** - * Creates a new `Schema` instance from the provided definition. - * - * @template TS - The schema type. - * @param {TS} defi, Debugnition - The schema definition. - * @returns {Schema} The created `Schema` instance. - */ - static create(definition: TS): Schema; - /** - * The version of the schema. - */ - readonly version: number; - /** - * The primary key of the schema. - */ - readonly primaryKey: string; - /** - * The type of the schema. - */ - readonly type: string; - /** - * An optional array of indexes. - */ - readonly indexes?: string[]; - readonly required?: string[]; - readonly encrypted?: string[]; - /** - * The properties defined in the schema. - */ - readonly properties: { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: T["properties"][K]; - } & { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: T["properties"][K]; - }; - /** - * Converts the schema to a JSON representation. - * - * @returns {SchemaType} The JSON representation of the schema. - */ - toJSON(): SchemaType; -} -/** - * Represents a database containing collections of documents. - * RIDB extends from this class and is used to expose collections. - * - * So if you specify: - * ```typescript - * const db = new RIDB( - * { - * schemas: { - * demo: { - * version: 0, - * primaryKey: 'id', - * type: SchemaFieldType.object, - * properties: { - * id: { - * type: SchemaFieldType.string, - * maxLength: 60 - * } - * } - * } - * } as const - * } - * ) - * ``` - * - * The collection will be available as `db.collections.demo` and all the methods for the collection (find, count, findById, update, create, delete) will be available. - * - * @template T - A record of schema types. - */ -export class Database { - /** - * Creates a new `Database` instance with the provided schemas and storage module. - * - * @template TS - A record of schema types. - * @param {TS} schemas - The schemas to use for the collections. - * @param migrations - * @param plugins - * @param options - * @param password - * @returns {Promise>} A promise that resolves to the created `Database` instance. - */ - static create(db_name: string, schemas: TS, migrations: MigrationPathsForSchemas | MigrationPathsForSchema, plugins: Array, options: RIDBModule, password?: string, storage?: BaseStorage): Promise>; - /** - * The collections in the database. - * - * This is a read-only property where the key is the name of the collection and the value is a `Collection` instance. - */ - readonly collections: { - [name in keyof T]: Collection>; - }; - readonly started: boolean; - /** - * Starts the database. - * - * @returns {Promise} A promise that resolves when the database is started. - */ - start(): Promise; - /** - * Closes the database. - * - * @returns {Promise} A promise that resolves when the database is closed. - */ - close(): Promise; -} -/** - * Represents a function type for creating storage with the provided schema type records. - * - * @template T - The schema type record. - * @param {T} records - The schema type records. - * @returns {Promise} A promise that resolves to the created internals record. - */ -export type CreateStorage = (records: T) => Promise>; -/** - * Represents a storage module with a method for creating storage. - */ -export type RIDBModule = { - /** - * Plugin constructors array - */ - apply: (plugins: Array) => Array; -}; -/** - * Represents an operation to be performed on a collection. - * - * @template T - The schema type of the collection. - */ -export type Operation = { - /** - * The name of the collection on which the operation will be performed. - */ - collection: string; - /** - * The type of operation to be performed (e.g., CREATE, UPDATE, DELETE). - */ - opType: OpType; - /** - * The data involved in the operation, conforming to the schema type. - */ - data: Doc; - /** - * An array of indexes related to the operation. - */ - indexes: Array; -}; -export type Hook = (schema: Schema, migration: MigrationPathsForSchema, doc: Doc) => Doc; -export type BasePluginOptions = { - docCreateHook?: Hook; - docRecoverHook?: Hook; -}; -export class BasePlugin implements BasePluginOptions { - docCreateHook?: Hook; - docRecoverHook?: Hook; -} -/** - * Represents a property within a schema, including various constraints and nested properties. - */ -export class Property { - /** - * The type of the property. - */ - readonly type: string; - /** - * The version of the property, if applicable. - */ - readonly version?: number; - /** - * The primary key of the property, if applicable. - */ - readonly primaryKey?: string; - /** - * An optional array of nested properties for array-type properties. - */ - readonly items?: Property[]; - /** - * The maximum number of items for array-type properties, if applicable. - */ - readonly maxItems?: number; - /** - * The minimum number of items for array-type properties, if applicable. - */ - readonly minItems?: number; - /** - * The maximum length for string-type properties, if applicable. - */ - readonly maxLength?: number; - /** - * The minimum length for string-type properties, if applicable. - */ - readonly minLength?: number; - /** - * An optional array of required fields for object-type properties. - */ - readonly required?: boolean; - /** - * An optional default value for the property. - */ - readonly default?: any; - /** - * An optional map of nested properties for object-type properties. - */ - readonly properties?: { - [name: string]: Property; - }; -} -export type InternalsRecord = { - [name: string]: BaseStorage; -}; -/** - * ExtractType is a utility type that maps a string representing a basic data type to the actual TypeScript type. - * - * @template T - A string literal type representing the basic data type ('string', 'number', 'boolean', 'object', 'array'). - * - * @example - * type StringType = ExtractType<'string'>; // StringType is string - * type NumberType = ExtractType<'number'>; // NumberType is number - * type BooleanType = ExtractType<'boolean'>; // BooleanType is boolean - * type ObjectType = ExtractType<'object'>; // ObjectType is object - * type ArrayType = ExtractType<'array'>; // ArrayType is Array - */ -export type ExtractType = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "object" ? object : T extends "array" ? Array : never; -/** - * Doc is a utility type that transforms a schema type into a document type where each property is mapped to its extracted type. - * - * @template T - A schema type with a 'properties' field where each property's type is represented as a string. - * - * type Document = Doc; // Document is { name: string; age: number; } - */ -export type Doc = { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: ExtractType; -} & { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: ExtractType; -} & { - __version?: number; -}; -/** - * Collection is a class that represents a collection of documents in a database. - * @template T - A schema type defining the structure of the documents in the collection. - */ -export class Collection { - /** - * Finds all documents in the collection. - * - * @returns A promise that resolves to an array of documents. - */ - find(query: QueryType): Promise[]>; - /** - * count all documents in the collection. - * - * @returns A promise that resolves to an array of documents. - */ - count(query: QueryType): Promise; - /** - * Finds a single document in the collection by its ID. - * - * @param id - The ID of the document to find. - * @returns A promise that resolves to the found document. - */ - findById(id: string): Promise>; - /** - * Updates a document in the collection by its ID. - * - * @param id - The ID of the document to update. - * @param document - A partial document containing the fields to update. - * @returns A promise that resolves when the update is complete. - */ - update(document: Partial>): Promise; - /** - * Creates a new document in the collection. - * - * @param document - The document to create. - * @returns A promise that resolves to the created document. - */ - create(document: Doc): Promise>; - /** - * Deletes a document in the collection by its ID. - * - * @param id - The ID of the document to delete. - * @returns A promise that resolves when the deletion is complete. - */ - delete(id: string): Promise; -} -/** - * Represents a record of schema types, where each key is a string and the value is a `SchemaType`. - */ -export type SchemaTypeRecord = { - [name: string]: SchemaType; -}; -export abstract class StorageInternal { - constructor(name: string, schemas: Schemas); - abstract start(): Promise; - abstract close(): Promise; - abstract count(colectionName: keyof Schemas, query: QueryType): Promise; - abstract findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; - abstract find(collectionName: keyof Schemas, query: QueryType): Promise[]>; - abstract write(op: Operation): Promise>; -} -declare class CoreStorage { - /** - * @param {any} document - * @param {Query} query - * @returns {boolean} - */ - matchesQuery(document: any, query: Query): boolean; -} -export type EnumerateUpTo = Acc["length"] extends N ? Acc[number] : EnumerateUpTo; -export type EnumerateFrom1To = Exclude, 0> | (N extends 0 ? never : N); -export type IsVersionGreaterThan0 = V extends 0 ? false : true; -export type AnyVersionGreaterThan1> = true extends { - [K in keyof T]: IsVersionGreaterThan0; -}[keyof T] ? true : false; -export type MigrationFunction = (doc: Doc) => Doc; -export type MigrationPathsForSchema = T["version"] extends 0 ? {} : { - [K in EnumerateFrom1To]: MigrationFunction; -}; -export type MigrationPathsForSchemas = { - [K in keyof T]: MigrationPathsForSchema; -}; -export type MigrationsParameter = AnyVersionGreaterThan1 extends true ? { - migrations: MigrationPathsForSchemas; -} : { - migrations?: never; -}; +import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Collection, CreateStorage, Database, Doc, EnumerateFrom1To, EnumerateUpTo, ExtractType, Hook, InOperator, InternalsRecord, IsVersionGreaterThan0, LogicalOperators, MigrationFunction, MigrationPathsForSchema, MigrationPathsForSchemas, MigrationsParameter, OpType, Operation, OperatorOrType, Operators, Property, Query, QueryType, RIDBModule, Schema, SchemaType, SchemaTypeRecord, StorageInternal } from '@trust0/ridb-wasm'; + /** * Represents a RIDB (Rust IndexedDB) instance. * This is the main class exposed by the RIDB Storage sdk and is used to create a database instance. @@ -583,4 +150,39 @@ export declare const SchemaFieldType: { object: "object"; }; +export { + AnyVersionGreaterThan1, + BasePlugin, + BasePluginOptions, + BaseStorage, + Collection, + CreateStorage, + Database, + Doc, + EnumerateFrom1To, + EnumerateUpTo, + ExtractType, + Hook, + InOperator, + InternalsRecord, + IsVersionGreaterThan0, + LogicalOperators, + MigrationFunction, + MigrationPathsForSchema, + MigrationPathsForSchemas, + MigrationsParameter, + OpType, + Operation, + OperatorOrType, + Operators, + Property, + Query, + QueryType, + RIDBModule, + Schema, + SchemaType, + SchemaTypeRecord, + StorageInternal, +}; + export {}; diff --git a/packages/ridb/build/esm/index.mjs b/packages/ridb/build/esm/index.mjs deleted file mode 100644 index 807d990..0000000 --- a/packages/ridb/build/esm/index.mjs +++ /dev/null @@ -1,2684 +0,0 @@ - -if (typeof Buffer === 'undefined') { - global.Buffer = require('buffer').Buffer; -} -var __defProp = Object.defineProperty; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; - -// ../../../ridb-wasm/pkg/ridb_wasm.js -var ridb_wasm_exports = {}; -__export(ridb_wasm_exports, { - BasePlugin: () => BasePlugin, - BaseStorage: () => BaseStorage, - Collection: () => Collection, - CoreStorage: () => CoreStorage, - Database: () => Database, - InMemory: () => InMemory, - IndexDB: () => IndexDB, - OpType: () => OpType, - Operation: () => Operation, - Property: () => Property, - Query: () => Query, - Schema: () => Schema, - WasmBindgenTestContext: () => WasmBindgenTestContext, - __wbgtest_console_debug: () => __wbgtest_console_debug, - __wbgtest_console_error: () => __wbgtest_console_error, - __wbgtest_console_info: () => __wbgtest_console_info, - __wbgtest_console_log: () => __wbgtest_console_log, - __wbgtest_console_warn: () => __wbgtest_console_warn, - default: () => ridb_wasm_default, - initSync: () => initSync, - is_debug_mode: () => is_debug_mode, - main_js: () => main_js -}); -function getObject(idx) { - return heap[idx]; -} -function dropObject(idx) { - if (idx < 132) return; - heap[idx] = heap_next; - heap_next = idx; -} -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - heap[idx] = obj; - return idx; -} -function getUint8Memory0() { - if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === void 0) { - const buf = cachedTextEncoder.encode(arg); - const ptr2 = malloc(buf.length, 1) >>> 0; - getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr2; - } - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - const mem = getUint8Memory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 127) break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; - } - WASM_VECTOR_LEN = offset; - return ptr; -} -function isLikeNone(x) { - return x === void 0 || x === null; -} -function getInt32Memory0() { - if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; -} -function getFloat64Memory0() { - if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) { - cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); - } - return cachedFloat64Memory0; -} -function getBigInt64Memory0() { - if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) { - cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); - } - return cachedBigInt64Memory0; -} -function debugString(val) { - const type = typeof val; - if (type == "number" || type == "boolean" || val == null) { - return `${val}`; - } - if (type == "string") { - return `"${val}"`; - } - if (type == "symbol") { - const description = val.description; - if (description == null) { - return "Symbol"; - } else { - return `Symbol(${description})`; - } - } - if (type == "function") { - const name = val.name; - if (typeof name == "string" && name.length > 0) { - return `Function(${name})`; - } else { - return "Function"; - } - } - if (Array.isArray(val)) { - const length = val.length; - let debug = "["; - if (length > 0) { - debug += debugString(val[0]); - } - for (let i = 1; i < length; i++) { - debug += ", " + debugString(val[i]); - } - debug += "]"; - return debug; - } - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches.length > 1) { - className = builtInMatches[1]; - } else { - return toString.call(val); - } - if (className == "Object") { - try { - return "Object(" + JSON.stringify(val) + ")"; - } catch (_) { - return "Object"; - } - } - if (val instanceof Error) { - return `${val.name}: ${val.message} -${val.stack}`; - } - return className; -} -function makeMutClosure(arg0, arg1, dtor, f) { - const state = { a: arg0, b: arg1, cnt: 1, dtor }; - const real = (...args) => { - state.cnt++; - const a = state.a; - state.a = 0; - try { - return f(a, state.b, ...args); - } finally { - if (--state.cnt === 0) { - wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); - CLOSURE_DTORS.unregister(state); - } else { - state.a = a; - } - } - }; - real.original = state; - CLOSURE_DTORS.register(real, state, state); - return real; -} -function __wbg_adapter_56(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h30fcf24f930ac73b(arg0, arg1, addHeapObject(arg2)); -} -function __wbg_adapter_59(arg0, arg1, arg2) { - const ret = wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0343af3ff210bc6c(arg0, arg1, addHeapObject(arg2)); - return takeObject(ret); -} -function makeClosure(arg0, arg1, dtor, f) { - const state = { a: arg0, b: arg1, cnt: 1, dtor }; - const real = (...args) => { - state.cnt++; - try { - return f(state.a, state.b, ...args); - } finally { - if (--state.cnt === 0) { - wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); - state.a = 0; - CLOSURE_DTORS.unregister(state); - } - } - }; - real.original = state; - CLOSURE_DTORS.register(real, state, state); - return real; -} -function __wbg_adapter_62(arg0, arg1, arg2, arg3, arg4) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm._dyn_core__ops__function__Fn__A_B_C___Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h083305484f53f562(retptr, arg0, arg1, addHeapObject(arg2), addHeapObject(arg3), addHeapObject(arg4)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } -} -function __wbg_adapter_67(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd0b7b7031e33a384(arg0, arg1, addHeapObject(arg2)); -} -function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } - return instance.ptr; -} -function getUint32Memory0() { - if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { - cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); - } - return cachedUint32Memory0; -} -function getArrayJsValueFromWasm0(ptr, len) { - ptr = ptr >>> 0; - const mem = getUint32Memory0(); - const slice = mem.subarray(ptr / 4, ptr / 4 + len); - const result = []; - for (let i = 0; i < slice.length; i++) { - result.push(takeObject(slice[i])); - } - return result; -} -function passArrayJsValueToWasm0(array, malloc) { - const ptr = malloc(array.length * 4, 4) >>> 0; - const mem = getUint32Memory0(); - for (let i = 0; i < array.length; i++) { - mem[ptr / 4 + i] = addHeapObject(array[i]); - } - WASM_VECTOR_LEN = array.length; - return ptr; -} -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)); - } -} -function main_js() { - wasm.main_js(); -} -function is_debug_mode() { - const ret = wasm.is_debug_mode(); - return ret !== 0; -} -function addBorrowedObject(obj) { - if (stack_pointer == 1) throw new Error("out of js stack"); - heap[--stack_pointer] = obj; - return stack_pointer; -} -function __wbgtest_console_log(args) { - try { - wasm.__wbgtest_console_log(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_debug(args) { - try { - wasm.__wbgtest_console_debug(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_info(args) { - try { - wasm.__wbgtest_console_info(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_warn(args) { - try { - wasm.__wbgtest_console_warn(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbgtest_console_error(args) { - try { - wasm.__wbgtest_console_error(addBorrowedObject(args)); - } finally { - heap[stack_pointer++] = void 0; - } -} -function __wbg_adapter_253(arg0, arg1) { - wasm.wasm_bindgen__convert__closures__invoke0_mut__h831654003a8114c2(arg0, arg1); -} -function __wbg_adapter_296(arg0, arg1, arg2, arg3, arg4) { - wasm.wasm_bindgen__convert__closures__invoke3_mut__h79ad1c6e6a197be2(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); -} -function __wbg_adapter_347(arg0, arg1, arg2, arg3) { - wasm.wasm_bindgen__convert__closures__invoke2_mut__h33b30c564f43a8a5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); -} -async function __wbg_load(module2, imports) { - if (typeof Response === "function" && module2 instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return await WebAssembly.instantiateStreaming(module2, imports); - } catch (e) { - if (module2.headers.get("Content-Type") != "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } else { - throw e; - } - } - } - const bytes = await module2.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module2, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module: module2 }; - } else { - return instance; - } - } -} -function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_undefined = function(arg0) { - const ret = getObject(arg0) === void 0; - return ret; - }; - imports.wbg.__wbindgen_is_null = function(arg0) { - const ret = getObject(arg0) === null; - return ret; - }; - imports.wbg.__wbg_inmemory_new = function(arg0) { - const ret = InMemory.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_findDocumentById_3c953e7cb816631f = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).findDocumentById(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_write_5ed217718c943bb6 = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).write(Operation.__wrap(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_indexdb_new = function(arg0) { - const ret = IndexDB.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_close_9079d609f51f315b = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).close(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_number_new = function(arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_string_get = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof obj === "string" ? obj : void 0; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbindgen_number_get = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof obj === "number" ? obj : void 0; - getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbg_count_56b737f3e1f9808b = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).count(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_start_8e90ba4b9a66ad6d = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).start(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_apply_5cc20a9c59aa42cc = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg1).apply(takeObject(arg2)); - const ptr1 = passArrayJsValueToWasm0(ret, wasm.__wbindgen_malloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }, arguments); - }; - imports.wbg.__wbg_database_new = function(arg0) { - const ret = Database.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_find_4fb73c61983f3303 = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).find(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_collection_new = function(arg0) { - const ret = Collection.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_function = function(arg0) { - const ret = typeof getObject(arg0) === "function"; - return ret; - }; - imports.wbg.__wbindgen_is_string = function(arg0) { - const ret = typeof getObject(arg0) === "string"; - return ret; - }; - imports.wbg.__wbindgen_is_array = function(arg0) { - const ret = Array.isArray(getObject(arg0)); - return ret; - }; - imports.wbg.__wbindgen_is_object = function(arg0) { - const val = getObject(arg0); - const ret = typeof val === "object" && val !== null; - return ret; - }; - imports.wbg.__wbindgen_is_falsy = function(arg0) { - const ret = !getObject(arg0); - return ret; - }; - imports.wbg.__wbindgen_is_bigint = function(arg0) { - const ret = typeof getObject(arg0) === "bigint"; - return ret; - }; - imports.wbg.__wbindgen_error_new = function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_boolean_get = function(arg0) { - const v = getObject(arg0); - const ret = typeof v === "boolean" ? v ? 1 : 0 : 2; - return ret; - }; - imports.wbg.__wbindgen_in = function(arg0, arg1) { - const ret = getObject(arg0) in getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_bigint_from_i64 = function(arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { - const ret = getObject(arg0) === getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_bigint_from_u64 = function(arg0) { - const ret = BigInt.asUintN(64, arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_cb_drop = function(arg0) { - const obj = takeObject(arg0).original; - if (obj.cnt-- == 1) { - obj.a = 0; - return true; - } - const ret = false; - return ret; - }; - imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) { - const ret = getObject(arg0).crypto; - return addHeapObject(ret); - }; - imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) { - const ret = getObject(arg0).process; - return addHeapObject(ret); - }; - imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) { - const ret = getObject(arg0).versions; - return addHeapObject(ret); - }; - imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) { - const ret = getObject(arg0).node; - return addHeapObject(ret); - }; - imports.wbg.__wbg_require_cca90b1a94a0255b = function() { - return handleError(function() { - const ret = module.require; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) { - const ret = getObject(arg0).msCrypto; - return addHeapObject(ret); - }; - imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { - return handleError(function(arg0, arg1) { - getObject(arg0).randomFillSync(takeObject(arg1)); - }, arguments); - }; - imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { - return handleError(function(arg0, arg1) { - getObject(arg0).getRandomValues(getObject(arg1)); - }, arguments); - }; - imports.wbg.__wbg_instanceof_Window_f401953a2cf86220 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Window; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_localStorage_e381d34d0c40c761 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).localStorage; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_indexedDB_7c51d9056667f4e0 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).indexedDB; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_open_f0d7259fd7e689ce = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), arg3 >>> 0); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_getItem_164e8e5265095b87 = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }, arguments); - }; - imports.wbg.__wbg_error_8e3928cfb8a43e2b = function(arg0) { - console.error(getObject(arg0)); - }; - imports.wbg.__wbg_log_5bb5f88f245d7762 = function(arg0) { - console.log(getObject(arg0)); - }; - imports.wbg.__wbg_length_9ae5daf9a690cba9 = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_contains_c65b44400b549286 = function(arg0, arg1, arg2) { - const ret = getObject(arg0).contains(getStringFromWasm0(arg1, arg2)); - return ret; - }; - imports.wbg.__wbg_get_910bbb94abdcf488 = function(arg0, arg1, arg2) { - const ret = getObject(arg1)[arg2 >>> 0]; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_target_2fc177e386c8b7b0 = function(arg0) { - const ret = getObject(arg0).target; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_IdbOpenDbRequest_3f4a166bc0340578 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof IDBOpenDBRequest; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_setonupgradeneeded_ad7645373c7d5e1b = function(arg0, arg1) { - getObject(arg0).onupgradeneeded = getObject(arg1); - }; - imports.wbg.__wbg_instanceof_IdbRequest_93249da04f5370b6 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof IDBRequest; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_result_6cedf5f78600a79c = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).result; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_error_685b20024dc2d6ca = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).error; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_setonsuccess_632ce0a1460455c2 = function(arg0, arg1) { - getObject(arg0).onsuccess = getObject(arg1); - }; - imports.wbg.__wbg_setonerror_8479b33e7568a904 = function(arg0, arg1) { - getObject(arg0).onerror = getObject(arg1); - }; - imports.wbg.__wbg_setoncomplete_d8e4236665cbf1e2 = function(arg0, arg1) { - getObject(arg0).oncomplete = getObject(arg1); - }; - imports.wbg.__wbg_setonerror_da071ec94e148397 = function(arg0, arg1) { - getObject(arg0).onerror = getObject(arg1); - }; - imports.wbg.__wbg_objectStore_da468793bd9df17b = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).objectStore(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_instanceof_IdbDatabase_db671cf2454a9542 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof IDBDatabase; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_objectStoreNames_588b5924274239fd = function(arg0) { - const ret = getObject(arg0).objectStoreNames; - return addHeapObject(ret); - }; - imports.wbg.__wbg_close_6bfe4ca2fe67cb67 = function(arg0) { - getObject(arg0).close(); - }; - imports.wbg.__wbg_createObjectStore_882f2f6b1b1ef040 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).createObjectStore(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_transaction_c32bb10c9c692f4b = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_transaction_1e282a79e9bb7387 = function() { - return handleError(function(arg0, arg1, arg2, arg3) { - const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2), takeObject(arg3)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_delete_f60bba7d0ae59a4f = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).delete(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_get_5361b64cac0d0826 = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).get(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_getAll_2782e438df699384 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).getAll(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_put_22792e17580ca18b = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).put(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) { - const ret = getObject(arg0) == getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_as_number = function(arg0) { - const ret = +getObject(arg0); - return ret; - }; - imports.wbg.__wbg_String_389b54bd9d25375f = function(arg0, arg1) { - const ret = String(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_getwithrefkey_4a92a5eca60879b9 = function(arg0, arg1) { - const ret = getObject(arg0)[getObject(arg1)]; - return addHeapObject(ret); - }; - imports.wbg.__wbg_set_9182712abebf82ef = function(arg0, arg1, arg2) { - getObject(arg0)[takeObject(arg1)] = takeObject(arg2); - }; - imports.wbg.__wbg_log_28eee4e6432efd24 = function(arg0, arg1) { - console.log(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbg_String_55b8bdc4bc243677 = function(arg0, arg1) { - const ret = String(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_getElementById_8458f2a6c28467dc = function(arg0, arg1, arg2) { - const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_settextcontent_fc3ff485b96fcb1d = function(arg0, arg1, arg2) { - getObject(arg0).textContent = getStringFromWasm0(arg1, arg2); - }; - imports.wbg.__wbg_wbgtestinvoke_8c20f4132af2bded = function() { - return handleError(function(arg0, arg1) { - try { - var state0 = { a: arg0, b: arg1 }; - var cb0 = () => { - const a = state0.a; - state0.a = 0; - try { - return __wbg_adapter_253(a, state0.b); - } finally { - state0.a = a; - } - }; - __wbg_test_invoke(cb0); - } finally { - state0.a = state0.b = 0; - } - }, arguments); - }; - imports.wbg.__wbg_wbgtestoutputwriteln_4db3bd64914ec955 = function(arg0) { - __wbg_test_output_writeln(takeObject(arg0)); - }; - imports.wbg.__wbg_stack_436273c21658169b = function(arg0) { - const ret = getObject(arg0).stack; - return addHeapObject(ret); - }; - imports.wbg.__wbg_static_accessor_document_d4b6ae7f5578480f = function() { - const ret = document; - return addHeapObject(ret); - }; - imports.wbg.__wbg_stack_17c77e9f5bfe6714 = function(arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_self_55106357ec10ecd4 = function(arg0) { - const ret = getObject(arg0).self; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_constructor_fd0d22d60b7dfd72 = function(arg0) { - const ret = getObject(arg0).constructor; - return addHeapObject(ret); - }; - imports.wbg.__wbg_name_7f439d24ff7ba1d3 = function(arg0, arg1) { - const ret = getObject(arg1).name; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_textcontent_67e4e811cbdf00fc = function(arg0, arg1) { - const ret = getObject(arg1).textContent; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_stack_44743fb7d71926a0 = function(arg0) { - const ret = getObject(arg0).stack; - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_abda76e883ba8a5f = function() { - const ret = new Error(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } - }; - imports.wbg.__wbg_queueMicrotask_3cbae2ec6b6cd3d6 = function(arg0) { - const ret = getObject(arg0).queueMicrotask; - return addHeapObject(ret); - }; - imports.wbg.__wbg_queueMicrotask_481971b0d87f3dd4 = function(arg0) { - queueMicrotask(getObject(arg0)); - }; - imports.wbg.__wbg_get_bd8e338fbd5f5cc8 = function(arg0, arg1) { - const ret = getObject(arg0)[arg1 >>> 0]; - return addHeapObject(ret); - }; - imports.wbg.__wbg_length_cd7af8117672b8b8 = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_new_16b304a2cfa7ff4a = function() { - const ret = new Array(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_newnoargs_e258087cd0daa0ea = function(arg0, arg1) { - const ret = new Function(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_d9bc3a0147634640 = function() { - const ret = /* @__PURE__ */ new Map(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_next_40fc327bfc8770e6 = function(arg0) { - const ret = getObject(arg0).next; - return addHeapObject(ret); - }; - imports.wbg.__wbg_next_196c84450b364254 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).next(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_done_298b57d23c0fc80c = function(arg0) { - const ret = getObject(arg0).done; - return ret; - }; - imports.wbg.__wbg_value_d93c65011f51a456 = function(arg0) { - const ret = getObject(arg0).value; - return addHeapObject(ret); - }; - imports.wbg.__wbg_iterator_2cee6dadfd956dfa = function() { - const ret = Symbol.iterator; - return addHeapObject(ret); - }; - imports.wbg.__wbg_get_e3c254076557e348 = function() { - return handleError(function(arg0, arg1) { - const ret = Reflect.get(getObject(arg0), getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_call_27c0f87801dedf93 = function() { - return handleError(function(arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_new_72fb9a18b5ae2624 = function() { - const ret = new Object(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_self_ce0dbfc45cf2f5be = function() { - return handleError(function() { - const ret = self.self; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_window_c6fb939a7f436783 = function() { - return handleError(function() { - const ret = window.window; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_globalThis_d1e6af4856ba331b = function() { - return handleError(function() { - const ret = globalThis.globalThis; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_global_207b558942527489 = function() { - return handleError(function() { - const ret = global.global; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_set_d4638f722068f043 = function(arg0, arg1, arg2) { - getObject(arg0)[arg1 >>> 0] = takeObject(arg2); - }; - imports.wbg.__wbg_from_89e3fc3ba5e6fb48 = function(arg0) { - const ret = Array.from(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_forEach_2be8de7347d63332 = function(arg0, arg1, arg2) { - try { - var state0 = { a: arg1, b: arg2 }; - var cb0 = (arg02, arg12, arg22) => { - const a = state0.a; - state0.a = 0; - try { - return __wbg_adapter_296(a, state0.b, arg02, arg12, arg22); - } finally { - state0.a = a; - } - }; - getObject(arg0).forEach(cb0); - } finally { - state0.a = state0.b = 0; - } - }; - imports.wbg.__wbg_isArray_2ab64d95e09ea0ae = function(arg0) { - const ret = Array.isArray(getObject(arg0)); - return ret; - }; - imports.wbg.__wbg_of_4a2b313a453ec059 = function(arg0) { - const ret = Array.of(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_push_a5b05aedc7234f9f = function(arg0, arg1) { - const ret = getObject(arg0).push(getObject(arg1)); - return ret; - }; - imports.wbg.__wbg_instanceof_ArrayBuffer_836825be07d4c9d2 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof ArrayBuffer; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_new_28c511d9baebfa89 = function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_message_5bf28016c2b49cfb = function(arg0) { - const ret = getObject(arg0).message; - return addHeapObject(ret); - }; - imports.wbg.__wbg_name_e7429f0dda6079e2 = function(arg0) { - const ret = getObject(arg0).name; - return addHeapObject(ret); - }; - imports.wbg.__wbg_call_b3ca7c6051f9bec1 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_call_938992c832f74314 = function() { - return handleError(function(arg0, arg1, arg2, arg3, arg4) { - const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3), getObject(arg4)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_set_8417257aaedc936b = function(arg0, arg1, arg2) { - const ret = getObject(arg0).set(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_isSafeInteger_f7b04ef02296c4d2 = function(arg0) { - const ret = Number.isSafeInteger(getObject(arg0)); - return ret; - }; - imports.wbg.__wbg_entries_95cc2c823b285a09 = function(arg0) { - const ret = Object.entries(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_is_010fdc0f4ab96916 = function(arg0, arg1) { - const ret = Object.is(getObject(arg0), getObject(arg1)); - return ret; - }; - imports.wbg.__wbg_keys_91e412b4b222659f = function(arg0) { - const ret = Object.keys(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_81740750da40724f = function(arg0, arg1) { - try { - var state0 = { a: arg0, b: arg1 }; - var cb0 = (arg02, arg12) => { - const a = state0.a; - state0.a = 0; - try { - return __wbg_adapter_347(a, state0.b, arg02, arg12); - } finally { - state0.a = a; - } - }; - const ret = new Promise(cb0); - return addHeapObject(ret); - } finally { - state0.a = state0.b = 0; - } - }; - imports.wbg.__wbg_resolve_b0083a7967828ec8 = function(arg0) { - const ret = Promise.resolve(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_then_0c86a60e8fcfe9f6 = function(arg0, arg1) { - const ret = getObject(arg0).then(getObject(arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_then_a73caa9a87991566 = function(arg0, arg1, arg2) { - const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); - }; - imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); - }; - imports.wbg.__wbg_length_c20a40f15020d68a = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Uint8Array; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_newwithlength_e9b4878cebadb3d3 = function(arg0) { - const ret = new Uint8Array(arg0 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_subarray_a1f73cd4b5b42fe1 = function(arg0, arg1, arg2) { - const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_apply_0a5aa603881e6d79 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = Reflect.apply(getObject(arg0), getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_deleteProperty_13e721a56f19e842 = function() { - return handleError(function(arg0, arg1) { - const ret = Reflect.deleteProperty(getObject(arg0), getObject(arg1)); - return ret; - }, arguments); - }; - imports.wbg.__wbg_set_1f9b04f170055d33 = function() { - return handleError(function(arg0, arg1, arg2) { - const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); - return ret; - }, arguments); - }; - imports.wbg.__wbg_parse_66d1801634e099ac = function() { - return handleError(function(arg0, arg1) { - const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_stringify_8887fe74e1c50d81 = function() { - return handleError(function(arg0) { - const ret = JSON.stringify(getObject(arg0)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { - const v = getObject(arg1); - const ret = typeof v === "bigint" ? v : void 0; - getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { - const ret = debugString(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbindgen_memory = function() { - const ret = wasm.memory; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper537 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper539 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_59); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper541 = function(arg0, arg1, arg2) { - const ret = makeClosure(arg0, arg1, 220, __wbg_adapter_62); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper543 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 220, __wbg_adapter_56); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_closure_wrapper1352 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 373, __wbg_adapter_67); - return addHeapObject(ret); - }; - return imports; -} -function __wbg_init_memory(imports, maybe_memory) { -} -function __wbg_finalize_init(instance, module2) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module2; - cachedBigInt64Memory0 = null; - cachedFloat64Memory0 = null; - cachedInt32Memory0 = null; - cachedUint32Memory0 = null; - cachedUint8Memory0 = null; - wasm.__wbindgen_start(); - return wasm; -} -function initSync(module2) { - if (wasm !== void 0) return wasm; - const imports = __wbg_get_imports(); - __wbg_init_memory(imports); - if (!(module2 instanceof WebAssembly.Module)) { - module2 = new WebAssembly.Module(module2); - } - const instance = new WebAssembly.Instance(module2, imports); - return __wbg_finalize_init(instance, module2); -} -async function __wbg_init(input) { - if (wasm !== void 0) return wasm; - const imports = __wbg_get_imports(); - if (typeof input === "string" || typeof Request === "function" && input instanceof Request || typeof URL === "function" && input instanceof URL) { - input = fetch(input); - } - __wbg_init_memory(imports); - const { instance, module: module2 } = await __wbg_load(await input, imports); - return __wbg_finalize_init(instance, module2); -} -var wasm, heap, heap_next, cachedTextDecoder, cachedUint8Memory0, WASM_VECTOR_LEN, cachedTextEncoder, encodeString, cachedInt32Memory0, cachedFloat64Memory0, cachedBigInt64Memory0, CLOSURE_DTORS, cachedUint32Memory0, stack_pointer, OpType, BasePluginFinalization, BasePlugin, BaseStorageFinalization, BaseStorage, CollectionFinalization, Collection, CoreStorageFinalization, CoreStorage, DatabaseFinalization, Database, InMemoryFinalization, InMemory, IndexDBFinalization, IndexDB, OperationFinalization, Operation, PropertyFinalization, Property, QueryFinalization, Query, SchemaFinalization, Schema, WasmBindgenTestContextFinalization, WasmBindgenTestContext, ridb_wasm_default; -var init_ridb_wasm = __esm({ - "../../../ridb-wasm/pkg/ridb_wasm.js"() { - heap = new Array(128).fill(void 0); - heap.push(void 0, null, true, false); - heap_next = heap.length; - cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => { - throw Error("TextDecoder not available"); - } }; - if (typeof TextDecoder !== "undefined") { - cachedTextDecoder.decode(); - } - cachedUint8Memory0 = null; - WASM_VECTOR_LEN = 0; - cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => { - throw Error("TextEncoder not available"); - } }; - encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) { - return cachedTextEncoder.encodeInto(arg, view); - } : function(arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - }; - cachedInt32Memory0 = null; - cachedFloat64Memory0 = null; - cachedBigInt64Memory0 = null; - CLOSURE_DTORS = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((state) => { - wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); - }); - cachedUint32Memory0 = null; - stack_pointer = 128; - OpType = Object.freeze({ - /** - * Create operation. - */ - CREATE: 0, - "0": "CREATE", - /** - * Update operation. - */ - UPDATE: 1, - "1": "UPDATE", - /** - * Delete operation. - */ - DELETE: 2, - "2": "DELETE", - /** - * Query Operation. - */ - QUERY: 3, - "3": "QUERY", - /** - * Count Operation. - */ - COUNT: 4, - "4": "COUNT" - }); - BasePluginFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_baseplugin_free(ptr >>> 0)); - BasePlugin = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - BasePluginFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_baseplugin_free(ptr); - } - /** - * @param {string} name - */ - constructor(name) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.baseplugin_new(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - this.__wbg_ptr = r0 >>> 0; - return this; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {any} - */ - get name() { - const ret = wasm.baseplugin_name(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {any} - */ - get docCreateHook() { - const ret = wasm.baseplugin_get_doc_create_hook(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {any} - */ - get docRecoverHook() { - const ret = wasm.baseplugin_get_doc_recover_hook(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @param {any} hook - */ - set docCreateHook(hook) { - wasm.baseplugin_set_doc_create_hook(this.__wbg_ptr, addHeapObject(hook)); - } - /** - * @param {any} hook - */ - set docRecoverHook(hook) { - wasm.baseplugin_set_doc_recover_hook(this.__wbg_ptr, addHeapObject(hook)); - } - }; - BaseStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_basestorage_free(ptr >>> 0)); - BaseStorage = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - BaseStorageFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_basestorage_free(ptr); - } - /** - * Creates a new `BaseStorage` instance with the provided name and schema type. - * - * # Arguments - * - * * `name` - The name of the storage. - * * `schema_type` - The schema type in `JsValue` format. - * - * # Returns - * - * * `Result` - A result containing the new `BaseStorage` instance or an error. - * @param {string} name - * @param {object} schemas_js - * @param {object | undefined} [options] - */ - constructor(name, schemas_js, options) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.basestorage_new(retptr, ptr0, len0, addHeapObject(schemas_js), isLikeNone(options) ? 0 : addHeapObject(options)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - this.__wbg_ptr = r0 >>> 0; - return this; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {string} name - * @returns {any} - */ - getOption(name) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.basestorage_getOption(retptr, this.__wbg_ptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {string} name - * @returns {Schema} - */ - getSchema(name) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.basestorage_getSchema(retptr, this.__wbg_ptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return Schema.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {CoreStorage} - */ - get core() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.basestorage_core(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CoreStorage.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - CollectionFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_collection_free(ptr >>> 0)); - Collection = class _Collection { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Collection.prototype); - obj.__wbg_ptr = ptr; - CollectionFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - CollectionFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_collection_free(ptr); - } - /** - * @returns {string} - */ - get name() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.collection_name(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * @returns {Schema} - */ - get schema() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.collection_schema(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return Schema.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Finds and returns all documents in the collection. - * - * This function is asynchronous and returns a `Schema` representing - * the documents found in the collection. - * @param {any} query - * @returns {Promise} - */ - find(query) { - const ret = wasm.collection_find(this.__wbg_ptr, addHeapObject(query)); - return takeObject(ret); - } - /** - * counts and returns all documents in the collection. - * - * This function is asynchronous and returns a `Schema` representing - * the documents found in the collection. - * @param {any} query - * @returns {Promise} - */ - count(query) { - const ret = wasm.collection_count(this.__wbg_ptr, addHeapObject(query)); - return takeObject(ret); - } - /** - * Finds and returns a single document in the collection by its ID. - * - * This function is asynchronous. - * @param {any} primary_key - * @returns {Promise} - */ - findById(primary_key) { - const ret = wasm.collection_findById(this.__wbg_ptr, addHeapObject(primary_key)); - return takeObject(ret); - } - /** - * Updates a document in the collection with the given data. - * - * This function is asynchronous and returns a `Result` indicating success or failure. - * - * # Arguments - * - * * `document` - A `JsValue` representing the partial document to update. - * @param {any} document - * @returns {Promise} - */ - update(document2) { - const ret = wasm.collection_update(this.__wbg_ptr, addHeapObject(document2)); - return takeObject(ret); - } - /** - * Creates a new document in the collection. - * - * This function is asynchronous and returns a `Result` indicating success or failure. - * - * # Arguments - * - * * `document` - A `JsValue` representing the document to create. - * @param {any} document - * @returns {Promise} - */ - create(document2) { - const ret = wasm.collection_create(this.__wbg_ptr, addHeapObject(document2)); - return takeObject(ret); - } - /** - * Deletes a document from the collection by its ID. - * - * This function is asynchronous. - * @param {any} primary_key - * @returns {Promise} - */ - delete(primary_key) { - const ret = wasm.collection_delete(this.__wbg_ptr, addHeapObject(primary_key)); - return takeObject(ret); - } - }; - CoreStorageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_corestorage_free(ptr >>> 0)); - CoreStorage = class _CoreStorage { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_CoreStorage.prototype); - obj.__wbg_ptr = ptr; - CoreStorageFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - CoreStorageFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_corestorage_free(ptr); - } - /** - */ - constructor() { - const ret = wasm.corestorage_new(); - this.__wbg_ptr = ret >>> 0; - return this; - } - /** - * @param {any} document - * @param {Query} query - * @returns {boolean} - */ - matchesQuery(document2, query) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(query, Query); - wasm.corestorage_matchesQuery(retptr, this.__wbg_ptr, addBorrowedObject(document2), query.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - heap[stack_pointer++] = void 0; - } - } - }; - DatabaseFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_database_free(ptr >>> 0)); - Database = class _Database { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Database.prototype); - obj.__wbg_ptr = ptr; - DatabaseFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - DatabaseFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_database_free(ptr); - } - /** - * @returns {Promise} - */ - start() { - const ret = wasm.database_start(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - close() { - const ptr = this.__destroy_into_raw(); - const ret = wasm.database_close(ptr); - return takeObject(ret); - } - /** - * @returns {boolean} - */ - get started() { - const ret = wasm.database_started(this.__wbg_ptr); - return ret !== 0; - } - /** - * Retrieves the collections in the database. - * - * This function returns an `Object` containing the collections. - * - * # Returns - * - * * `Result` - A result containing an `Object` with the collections or an error. - * @returns {object} - */ - get collections() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.database_collections(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {string} db_name - * @param {object} schemas_js - * @param {object} migrations_js - * @param {Array} plugins - * @param {any} module - * @param {string | undefined} [password] - * @param {any | undefined} [storage] - * @returns {Promise} - */ - static create(db_name, schemas_js, migrations_js, plugins, module2, password, storage) { - const ptr0 = passStringToWasm0(db_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - var ptr1 = isLikeNone(password) ? 0 : passStringToWasm0(password, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - const ret = wasm.database_create(ptr0, len0, addHeapObject(schemas_js), addHeapObject(migrations_js), addHeapObject(plugins), addHeapObject(module2), ptr1, len1, isLikeNone(storage) ? 0 : addHeapObject(storage)); - return takeObject(ret); - } - }; - InMemoryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_inmemory_free(ptr >>> 0)); - InMemory = class _InMemory { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_InMemory.prototype); - obj.__wbg_ptr = ptr; - InMemoryFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - InMemoryFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_inmemory_free(ptr); - } - /** - * @param {string} name - * @param {object} schemas_js - * @returns {Promise} - */ - static create(name, schemas_js) { - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_create(ptr0, len0, addHeapObject(schemas_js)); - return takeObject(ret); - } - /** - * @returns {any} - */ - get by_index() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.inmemory_by_index(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Operation} op - * @returns {Promise} - */ - write(op) { - _assertClass(op, Operation); - const ret = wasm.inmemory_write(this.__wbg_ptr, op.__wbg_ptr); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - find(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} primary_key - * @returns {Promise} - */ - findDocumentById(collection_name, primary_key) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - count(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.inmemory_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - close() { - const ret = wasm.inmemory_close(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - start() { - const ret = wasm.inmemory_start(this.__wbg_ptr); - return takeObject(ret); - } - }; - IndexDBFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_indexdb_free(ptr >>> 0)); - IndexDB = class _IndexDB { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_IndexDB.prototype); - obj.__wbg_ptr = ptr; - IndexDBFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - IndexDBFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_indexdb_free(ptr); - } - /** - * @param {string} name - * @param {object} schemas_js - * @returns {Promise} - */ - static create(name, schemas_js) { - const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_create(ptr0, len0, addHeapObject(schemas_js)); - return takeObject(ret); - } - /** - * @param {Operation} op - * @returns {Promise} - */ - write(op) { - _assertClass(op, Operation); - const ret = wasm.indexdb_write(this.__wbg_ptr, op.__wbg_ptr); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - find(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_find(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} primary_key - * @returns {Promise} - */ - findDocumentById(collection_name, primary_key) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_findDocumentById(this.__wbg_ptr, ptr0, len0, addHeapObject(primary_key)); - return takeObject(ret); - } - /** - * @param {string} collection_name - * @param {any} query - * @returns {Promise} - */ - count(collection_name, query) { - const ptr0 = passStringToWasm0(collection_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.indexdb_count(this.__wbg_ptr, ptr0, len0, addHeapObject(query)); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - close() { - const ret = wasm.indexdb_close(this.__wbg_ptr); - return takeObject(ret); - } - /** - * @returns {Promise} - */ - start() { - const ret = wasm.indexdb_start(this.__wbg_ptr); - return takeObject(ret); - } - }; - OperationFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_operation_free(ptr >>> 0)); - Operation = class _Operation { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Operation.prototype); - obj.__wbg_ptr = ptr; - OperationFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - OperationFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_operation_free(ptr); - } - /** - * Retrieves the name of the collection. - * - * # Returns - * - * * `String` - The name of the collection. - * @returns {string} - */ - get collection() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.operation_collection(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * Retrieves the type of operation. - * - * # Returns - * - * * `OpType` - The type of operation. - * @returns {OpType} - */ - get opType() { - const ret = wasm.operation_opType(this.__wbg_ptr); - return ret; - } - /** - * Retrieves the data involved in the operation. - * - * # Returns - * - * * `JsValue` - The data involved in the operation. - * @returns {any} - */ - get data() { - const ret = wasm.operation_data(this.__wbg_ptr); - return takeObject(ret); - } - /** - * Retrieves the indexes related to the operation. - * - * # Returns - * - * * `Result` - A result containing the indexes as a `JsValue` or an error. - * @returns {any} - */ - get indexes() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.operation_indexes(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - PropertyFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_property_free(ptr >>> 0)); - Property = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - PropertyFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_property_free(ptr); - } - /** - * Checks is the schema is valid. - * - * # Returns - * - * Throws exception if not valid - * @returns {boolean} - */ - is_valid() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_is_valid(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the type of the property. - * - * # Returns - * - * * `PropertyType` - The type of the property. - * @returns {any} - */ - get type() { - const ret = wasm.property_type(this.__wbg_ptr); - return takeObject(ret); - } - /** - * Retrieves the items of the property. - * - * # Returns - * - * * `Result` - A result containing the items as a `JsValue` or an error. - * @returns {any} - */ - get items() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_items(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the maximum number of items of the property. - * - * # Returns - * - * * `Result` - A result containing the maximum number of items as a `JsValue` or an error. - * @returns {any} - */ - get maxItems() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_maxItems(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the minimum number of items of the property. - * - * # Returns - * - * * `Result` - A result containing the minimum number of items as a `JsValue` or an error. - * @returns {any} - */ - get minItems() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_minItems(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the maximum length of the property. - * - * # Returns - * - * * `Result` - A result containing the maximum length as a `JsValue` or an error. - * @returns {any} - */ - get maxLength() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_maxLength(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the minimum length of the property. - * - * # Returns - * - * * `Result` - A result containing the minimum length as a `JsValue` or an error. - * @returns {any} - */ - get minLength() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_minLength(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the nested properties of the property. - * - * # Returns - * - * * `Result` - A result containing the nested properties as a `JsValue` or an error. - * @returns {any} - */ - get properties() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.property_properties(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - QueryFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_query_free(ptr >>> 0)); - Query = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - QueryFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_query_free(ptr); - } - /** - * @param {any} query - * @param {Schema} schema - */ - constructor(query, schema) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(schema, Schema); - var ptr0 = schema.__destroy_into_raw(); - wasm.query_new(retptr, addHeapObject(query), ptr0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - this.__wbg_ptr = r0 >>> 0; - return this; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {any} - */ - get query() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.query_query(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {any} - */ - parse() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.query_parse(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - SchemaFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_schema_free(ptr >>> 0)); - Schema = class _Schema { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_Schema.prototype); - obj.__wbg_ptr = ptr; - SchemaFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - SchemaFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_schema_free(ptr); - } - /** - * @param {any} document - */ - validate_schema(document2) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_validate_schema(retptr, this.__wbg_ptr, addHeapObject(document2)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - if (r1) { - throw takeObject(r0); - } - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {boolean} - */ - is_valid() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_is_valid(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Creates a new `Schema` instance from a given `JsValue`. - * - * # Arguments - * - * * `schema` - A `JsValue` representing the schema. - * - * # Returns - * - * * `Result` - A result containing the new `Schema` instance or an error. - * @param {any} schema - * @returns {Schema} - */ - static create(schema) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_create(retptr, addHeapObject(schema)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return _Schema.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the version of the schema. - * - * # Returns - * - * * `i32` - The version of the schema. - * @returns {number} - */ - get version() { - const ret = wasm.schema_version(this.__wbg_ptr); - return ret; - } - /** - * Retrieves the primary key of the schema. - * - * # Returns - * - * * `String` - The primary key of the schema. - * @returns {string} - */ - get primaryKey() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_primaryKey(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * Retrieves the type of the schema. - * - * # Returns - * - * * `String` - The type of the schema. - * @returns {string} - */ - get type() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_type(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * Retrieves the indexes of the schema, if any. - * - * # Returns - * - * * `Option>` - The indexes of the schema, if any. - * @returns {(string)[] | undefined} - */ - get indexes() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_indexes(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - let v1; - if (r0 !== 0) { - v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4, 4); - } - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {(string)[] | undefined} - */ - get required() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_required(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - let v1; - if (r0 !== 0) { - v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4, 4); - } - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {(string)[] | undefined} - */ - get encrypted() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_encrypted(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - let v1; - if (r0 !== 0) { - v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4, 4); - } - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Retrieves the properties of the schema. - * - * # Returns - * - * * `Result` - A result containing the properties as a `JsValue` or an error. - * @returns {any} - */ - get properties() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.schema_properties(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - }; - WasmBindgenTestContextFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { - }, unregister: () => { - } } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmbindgentestcontext_free(ptr >>> 0)); - WasmBindgenTestContext = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - WasmBindgenTestContextFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_wasmbindgentestcontext_free(ptr); - } - /** - * Creates a new context ready to run tests. - * - * A `Context` is the main structure through which test execution is - * coordinated, and this will collect output and results for all executed - * tests. - */ - constructor() { - const ret = wasm.wasmbindgentestcontext_new(); - this.__wbg_ptr = ret >>> 0; - return this; - } - /** - * Inform this context about runtime arguments passed to the test - * harness. - * @param {any[]} args - */ - args(args) { - const ptr0 = passArrayJsValueToWasm0(args, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.wasmbindgentestcontext_args(this.__wbg_ptr, ptr0, len0); - } - /** - * Executes a list of tests, returning a promise representing their - * eventual completion. - * - * This is the main entry point for executing tests. All the tests passed - * in are the JS `Function` object that was plucked off the - * `WebAssembly.Instance` exports list. - * - * The promise returned resolves to either `true` if all tests passed or - * `false` if at least one test failed. - * @param {any[]} tests - * @returns {Promise} - */ - run(tests) { - const ptr0 = passArrayJsValueToWasm0(tests, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.wasmbindgentestcontext_run(this.__wbg_ptr, ptr0, len0); - return takeObject(ret); - } - }; - ridb_wasm_default = __wbg_init; - } -}); - -// wasm:/Users/ribo/Projects/personal/ridb-rust/packages/ridb/node_modules/@trust0/ridb-wasm/ridb_wasm_bg.wasm -var ridb_wasm_bg_default = Buffer.from("AGFzbQEAAAABgwIjYAF/AGACf38Bf2ACf38AYAN/f38AYAF/AX9gA39/fwF/YAR/f39/AGAFf39/f38AYAABf2AEf39/fwF/YAAAYAV/f39/fwF/YAZ/f39/f38AYAd/f39/f39/AGAFf39/fn8AYAF+AX9gBn9/f39/fwF/YAV/f35/fwBgAXwBf2ABfwF8YAJ/fwF+YAN/f38BfmACfn8AYAl/f39/f39+fn4AYAd/f39/f39/AX9gA35/fwF/YAt/f39/f39/f39/fwF/YAl/f39/f39/f38Bf2ADf35+AGAEf35+fwBgBH9+f38AYAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AAsArmwEDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAADd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcAAQN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQABAN3YmcSX193YmluZGdlbl9pc19udWxsAAQDd2JnEl9fd2JnX2lubWVtb3J5X25ldwAEA3diZydfX3diZ19maW5kRG9jdW1lbnRCeUlkXzNjOTUzZTdjYjgxNjYzMWYACQN3YmccX193Ymdfd3JpdGVfNWVkMjE3NzE4Yzk0M2JiNgABA3diZxFfX3diZ19pbmRleGRiX25ldwAEA3diZxxfX3diZ19jbG9zZV85MDc5ZDYwOWY1MWYzMTViAAQDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwASA3diZxVfX3diaW5kZ2VuX3N0cmluZ19nZXQAAgN3YmcVX193YmluZGdlbl9udW1iZXJfZ2V0AAIDd2JnHF9fd2JnX2NvdW50XzU2YjczN2YzZTFmOTgwOGIACQN3YmccX193Ymdfc3RhcnRfOGU5MGJhNGI5YTY2YWQ2ZAAEA3diZxxfX3diZ19hcHBseV81Y2MyMGE5YzU5YWE0MmNjAAMDd2JnEl9fd2JnX2RhdGFiYXNlX25ldwAEA3diZxtfX3diZ19maW5kXzRmYjczYzYxOTgzZjMzMDMACQN3YmcUX193YmdfY29sbGVjdGlvbl9uZXcABAN3YmcWX193YmluZGdlbl9pc19mdW5jdGlvbgAEA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEA3diZxNfX3diaW5kZ2VuX2lzX2FycmF5AAQDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAQDd2JnE19fd2JpbmRnZW5faXNfZmFsc3kABAN3YmcUX193YmluZGdlbl9pc19iaWdpbnQABAN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAEA3diZw1fX3diaW5kZ2VuX2luAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0AA8Dd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAQN3YmcaX193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQADwN3YmcSX193YmluZGdlbl9jYl9kcm9wAAQDd2JnHV9fd2JnX2NyeXB0b18xZDFmMjI4MjRhNmEwODBjAAQDd2JnHl9fd2JnX3Byb2Nlc3NfNGE3Mjg0N2NjNTAzOTk1YgAEA3diZx9fX3diZ192ZXJzaW9uc19mNjg2NTY1ZTU4NmRkOTM1AAQDd2JnG19fd2JnX25vZGVfMTA0YTJmZjhkNmVhMDNhMgAEA3diZx5fX3diZ19yZXF1aXJlX2NjYTkwYjFhOTRhMDI1NWIACAN3YmcfX193YmdfbXNDcnlwdG9fZWIwNWU2MmI1MzBhMTUwOAAEA3diZyVfX3diZ19yYW5kb21GaWxsU3luY181YzljOTU1YWE1NmI2MDQ5AAIDd2JnJl9fd2JnX2dldFJhbmRvbVZhbHVlc18zYWE1NmFhNmVkZWM4NzRjAAIDd2JnKF9fd2JnX2luc3RhbmNlb2ZfV2luZG93X2Y0MDE5NTNhMmNmODYyMjAABAN3YmcjX193YmdfbG9jYWxTdG9yYWdlX2UzODFkMzRkMGM0MGM3NjEABAN3YmcgX193YmdfaW5kZXhlZERCXzdjNTFkOTA1NjY2N2Y0ZTAABAN3YmcbX193Ymdfb3Blbl9mMGQ3MjU5ZmQ3ZTY4OWNlAAkDd2JnHl9fd2JnX2dldEl0ZW1fMTY0ZThlNTI2NTA5NWI4NwAGA3diZxxfX3diZ19lcnJvcl84ZTM5MjhjZmI4YTQzZTJiAAADd2JnGl9fd2JnX2xvZ181YmI1Zjg4ZjI0NWQ3NzYyAAADd2JnHV9fd2JnX2xlbmd0aF85YWU1ZGFmOWE2OTBjYmE5AAQDd2JnH19fd2JnX2NvbnRhaW5zX2M2NWI0NDQwMGI1NDkyODYABQN3YmcaX193YmdfZ2V0XzkxMGJiYjk0YWJkY2Y0ODgAAwN3YmcdX193YmdfdGFyZ2V0XzJmYzE3N2UzODZjOGI3YjAABAN3YmcyX193YmdfaW5zdGFuY2VvZl9JZGJPcGVuRGJSZXF1ZXN0XzNmNGExNjZiYzAzNDA1NzgABAN3YmcpX193Ymdfc2V0b251cGdyYWRlbmVlZGVkX2FkNzY0NTM3M2M3ZDVlMWIAAgN3YmcsX193YmdfaW5zdGFuY2VvZl9JZGJSZXF1ZXN0XzkzMjQ5ZGEwNGY1MzcwYjYABAN3YmcdX193YmdfcmVzdWx0XzZjZWRmNWY3ODYwMGE3OWMABAN3YmccX193YmdfZXJyb3JfNjg1YjIwMDI0ZGMyZDZjYQAEA3diZyNfX3diZ19zZXRvbnN1Y2Nlc3NfNjMyY2UwYTE0NjA0NTVjMgACA3diZyFfX3diZ19zZXRvbmVycm9yXzg0NzliMzNlNzU2OGE5MDQAAgN3YmckX193Ymdfc2V0b25jb21wbGV0ZV9kOGU0MjM2NjY1Y2JmMWUyAAIDd2JnIV9fd2JnX3NldG9uZXJyb3JfZGEwNzFlYzk0ZTE0ODM5NwACA3diZyJfX3diZ19vYmplY3RTdG9yZV9kYTQ2ODc5M2JkOWRmMTdiAAUDd2JnLV9fd2JnX2luc3RhbmNlb2ZfSWRiRGF0YWJhc2VfZGI2NzFjZjI0NTRhOTU0MgAEA3diZydfX3diZ19vYmplY3RTdG9yZU5hbWVzXzU4OGI1OTI0Mjc0MjM5ZmQABAN3YmccX193YmdfY2xvc2VfNmJmZTRjYTJmZTY3Y2I2NwAAA3diZyhfX3diZ19jcmVhdGVPYmplY3RTdG9yZV84ODJmMmY2YjFiMWVmMDQwAAUDd2JnIl9fd2JnX3RyYW5zYWN0aW9uX2MzMmJiMTBjOWM2OTJmNGIABQN3YmciX193YmdfdHJhbnNhY3Rpb25fMWUyODJhNzllOWJiNzM4NwAJA3diZx1fX3diZ19kZWxldGVfZjYwYmJhN2QwYWU1OWE0ZgABA3diZxpfX3diZ19nZXRfNTM2MWI2NGNhYzBkMDgyNgABA3diZx1fX3diZ19nZXRBbGxfMjc4MmU0MzhkZjY5OTM4NAAEA3diZxpfX3diZ19wdXRfMjI3OTJlMTc1ODBjYTE4YgAFA3diZxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxAAEDd2JnFF9fd2JpbmRnZW5fYXNfbnVtYmVyABMDd2JnHV9fd2JnX1N0cmluZ18zODliNTRiZDlkMjUzNzVmAAIDd2JnJF9fd2JnX2dldHdpdGhyZWZrZXlfNGE5MmE1ZWNhNjA4NzliOQABA3diZxpfX3diZ19zZXRfOTE4MjcxMmFiZWJmODJlZgADA3diZxpfX3diZ19sb2dfMjhlZWU0ZTY0MzJlZmQyNAACA3diZx1fX3diZ19TdHJpbmdfNTViOGJkYzRiYzI0MzY3NwACA3diZyVfX3diZ19nZXRFbGVtZW50QnlJZF84NDU4ZjJhNmMyODQ2N2RjAAUDd2JnJV9fd2JnX3NldHRleHRjb250ZW50X2ZjM2ZmNDg1Yjk2ZmNiMWQAAwN3YmckX193Ymdfd2JndGVzdGludm9rZV84YzIwZjQxMzJhZjJiZGVkAAIDd2JnK19fd2JnX3diZ3Rlc3RvdXRwdXR3cml0ZWxuXzRkYjNiZDY0OTE0ZWM5NTUAAAN3YmccX193Ymdfc3RhY2tfNDM2MjczYzIxNjU4MTY5YgAEA3diZy9fX3diZ19zdGF0aWNfYWNjZXNzb3JfZG9jdW1lbnRfZDRiNmFlN2Y1NTc4NDgwZgAIA3diZxxfX3diZ19zdGFja18xN2M3N2U5ZjViZmU2NzE0AAIDd2JnG19fd2JnX3NlbGZfNTUxMDYzNTdlYzEwZWNkNAAEA3diZyJfX3diZ19jb25zdHJ1Y3Rvcl9mZDBkMjJkNjBiN2RmZDcyAAQDd2JnG19fd2JnX25hbWVfN2Y0MzlkMjRmZjdiYTFkMwACA3diZyJfX3diZ190ZXh0Y29udGVudF82N2U0ZTgxMWNiZGYwMGZjAAIDd2JnHF9fd2JnX3N0YWNrXzQ0NzQzZmI3ZDcxOTI2YTAABAN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgACA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAIDd2JnJV9fd2JnX3F1ZXVlTWljcm90YXNrXzNjYmFlMmVjNmI2Y2QzZDYABAN3YmclX193YmdfcXVldWVNaWNyb3Rhc2tfNDgxOTcxYjBkODdmM2RkNAAAA3diZxpfX3diZ19nZXRfYmQ4ZTMzOGZiZDVmNWNjOAABA3diZx1fX3diZ19sZW5ndGhfY2Q3YWY4MTE3NjcyYjhiOAAEA3diZxpfX3diZ19uZXdfMTZiMzA0YTJjZmE3ZmY0YQAIA3diZyBfX3diZ19uZXdub2FyZ3NfZTI1ODA4N2NkMGRhYTBlYQABA3diZxpfX3diZ19uZXdfZDliYzNhMDE0NzYzNDY0MAAIA3diZxtfX3diZ19uZXh0XzQwZmMzMjdiZmM4NzcwZTYABAN3YmcbX193YmdfbmV4dF8xOTZjODQ0NTBiMzY0MjU0AAQDd2JnG19fd2JnX2RvbmVfMjk4YjU3ZDIzYzBmYzgwYwAEA3diZxxfX3diZ192YWx1ZV9kOTNjNjUwMTFmNTFhNDU2AAQDd2JnH19fd2JnX2l0ZXJhdG9yXzJjZWU2ZGFkZmQ5NTZkZmEACAN3YmcaX193YmdfZ2V0X2UzYzI1NDA3NjU1N2UzNDgAAQN3YmcbX193YmdfY2FsbF8yN2MwZjg3ODAxZGVkZjkzAAEDd2JnGl9fd2JnX25ld183MmZiOWExOGI1YWUyNjI0AAgDd2JnG19fd2JnX3NlbGZfY2UwZGJmYzQ1Y2YyZjViZQAIA3diZx1fX3diZ193aW5kb3dfYzZmYjkzOWE3ZjQzNjc4MwAIA3diZyFfX3diZ19nbG9iYWxUaGlzX2QxZTZhZjQ4NTZiYTMzMWIACAN3YmcdX193YmdfZ2xvYmFsXzIwN2I1NTg5NDI1Mjc0ODkACAN3YmcaX193Ymdfc2V0X2Q0NjM4ZjcyMjA2OGYwNDMAAwN3YmcbX193YmdfZnJvbV84OWUzZmMzYmE1ZTZmYjQ4AAQDd2JnHl9fd2JnX2ZvckVhY2hfMmJlOGRlNzM0N2Q2MzMzMgADA3diZx5fX3diZ19pc0FycmF5XzJhYjY0ZDk1ZTA5ZWEwYWUABAN3YmcZX193Ymdfb2ZfNGEyYjMxM2E0NTNlYzA1OQAEA3diZxtfX3diZ19wdXNoX2E1YjA1YWVkYzcyMzRmOWYAAQN3YmctX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl84MzY4MjViZTA3ZDRjOWQyAAQDd2JnGl9fd2JnX25ld18yOGM1MTFkOWJhZWJmYTg5AAEDd2JnHl9fd2JnX21lc3NhZ2VfNWJmMjgwMTZjMmI0OWNmYgAEA3diZxtfX3diZ19uYW1lX2U3NDI5ZjBkZGE2MDc5ZTIABAN3YmcbX193YmdfY2FsbF9iM2NhN2M2MDUxZjliZWMxAAUDd2JnG19fd2JnX2NhbGxfOTM4OTkyYzgzMmY3NDMxNAALA3diZxpfX3diZ19zZXRfODQxNzI1N2FhZWRjOTM2YgAFA3diZyRfX3diZ19pc1NhZmVJbnRlZ2VyX2Y3YjA0ZWYwMjI5NmM0ZDIABAN3YmceX193YmdfZW50cmllc185NWNjMmM4MjNiMjg1YTA5AAQDd2JnGV9fd2JnX2lzXzAxMGZkYzBmNGFiOTY5MTYAAQN3YmcbX193Ymdfa2V5c185MWU0MTJiNGIyMjI2NTlmAAQDd2JnGl9fd2JnX25ld184MTc0MDc1MGRhNDA3MjRmAAEDd2JnHl9fd2JnX3Jlc29sdmVfYjAwODNhNzk2NzgyOGVjOAAEA3diZxtfX3diZ190aGVuXzBjODZhNjBlOGZjZmU5ZjYAAQN3YmcbX193YmdfdGhlbl9hNzNjYWE5YTg3OTkxNTY2AAUDd2JnHV9fd2JnX2J1ZmZlcl8xMmQwNzljYzIxZTE0YmRiAAQDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2FhNGExN2MzM2EwNmU1Y2IABQN3YmcaX193YmdfbmV3XzYzYjkyYmM4NjcxZWQ0NjQABAN3YmcaX193Ymdfc2V0X2E0N2JhYzcwMzA2YTE5YTcAAwN3YmcdX193YmdfbGVuZ3RoX2MyMGE0MGYxNTAyMGQ2OGEABAN3YmcsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzJiM2JiZWNkMDMzZDE5ZjYABAN3YmckX193YmdfbmV3d2l0aGxlbmd0aF9lOWI0ODc4Y2ViYWRiM2QzAAQDd2JnH19fd2JnX3N1YmFycmF5X2ExZjczY2Q0YjViNDJmZTEABQN3YmccX193YmdfYXBwbHlfMGE1YWE2MDM4ODFlNmQ3OQAFA3di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ZXNfMTQAgAZCX193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yXzE1AIEGRV9fd2JndF90ZXN0X3F1ZXJ5X2dldF9xdWVyeV9ub3JtYWxpemF0aW9uX25lc3RlZF9sb2dpY2FsX29wZXJhdG9yc18xNgCCBkJfX3diZ3RfdGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3JfMTcAgwY6X193Ymd0X3Rlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fY29tcGxleF9taXhlZF8xOACEBiZfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9lbXB0eV9xdWVyeV8xOQCFBitfX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5XzIwAIYGLV9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc18yMQCHBi5fX3diZ3RfdGVzdF9xdWVyeV9wYXJzZV9pbnZhbGlkX2luX29wZXJhdG9yXzIyAIgGMl9fd2JndF90ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X2xvZ2ljYWxfb3BlcmF0b3JzXzIzAIkGFl9fd2JnX2Jhc2VzdG9yYWdlX2ZyZWUAiwMPYmFzZXN0b3JhZ2VfbmV3AKYCFWJhc2VzdG9yYWdlX2dldE9wdGlvbgDQAxViYXNlc3RvcmFnZV9nZXRTY2hlbWEAuAMQYmFzZXN0b3JhZ2VfY29yZQCWBRFfX3diZ19zY2hlbWFfZnJlZQCqBRZzY2hlbWFfdmFsaWRhdGVfc2NoZW1hAL0ED3NjaGVtYV9pc192YWxpZAD7Aw1zY2hlbWFfY3JlYXRlAJAEDnNjaGVtYV92ZXJzaW9uAK4GEXNjaGVtYV9wcmltYXJ5S2V5AIEEC3NjaGVtYV90eXBlAIIEDnNjaGVtYV9pbmRleGVzAPECD3NjaGVtYV9yZXF1aXJlZADyAhBzY2hlbWFfZW5jcnlwdGVkAPMCEXNjaGVtYV9wcm9wZXJ0aWVzALAEHV9fd2JndF90ZXN0X3NjaGVtYV9jcmVhdGlvbl8zAIsGH19fd2JndF90ZXN0X3NjaGVtYV92YWxpZGF0aW9uXzQAjAYcX193Ymd0X3Rlc3RfaW52YWxpZF9zY2hlbWFfNQCNBhNfX3diZ19kYXRhYmFzZV9mcmVlALgCDmRhdGFiYXNlX3N0YXJ0ANUEDmRhdGFiYXNlX2Nsb3NlALYFEGRhdGFiYXNlX3N0YXJ0ZWQArwYUZGF0YWJhc2VfY29sbGVjdGlvbnMAsQQPZGF0YWJhc2VfY3JlYXRlAKcEFF9fd2JnX29wZXJhdGlvbl9mcmVlAIMEFG9wZXJhdGlvbl9jb2xsZWN0aW9uAIQEEG9wZXJhdGlvbl9vcFR5cGUAsAYOb3BlcmF0aW9uX2RhdGEAvAURb3BlcmF0aW9uX2luZGV4ZXMAsgQVX193YmdfYmFzZXBsdWdpbl9mcmVlAOUEDmJhc2VwbHVnaW5fbmV3AK8FD2Jhc2VwbHVnaW5fbmFtZQCwBR5iYXNlcGx1Z2luX2dldF9kb2NfY3JlYXRlX2hvb2sAqQQfYmFzZXBsdWdpbl9nZXRfZG9jX3JlY292ZXJfaG9vawCqBB5iYXNlcGx1Z2luX3NldF9kb2NfY3JlYXRlX2hvb2sAwQUfYmFzZXBsdWdpbl9zZXRfZG9jX3JlY292ZXJfaG9vawDCBQdtYWluX2pzAMsFDWlzX2RlYnVnX21vZGUA2gcTX193YmdfcHJvcGVydHlfZnJlZQCUBRFwcm9wZXJ0eV9pc192YWxpZAD8Aw1wcm9wZXJ0eV90eXBlAPMEDnByb3BlcnR5X2l0ZW1zAKcDEXByb3BlcnR5X21heEl0ZW1zAK4DEXByb3BlcnR5X21pbkl0ZW1zAK8DEnByb3BlcnR5X21heExlbmd0aACwAxJwcm9wZXJ0eV9taW5MZW5ndGgAsQMTcHJvcGVydHlfcHJvcGVydGllcwCsAx9fX3diZ3RfdGVzdF9wcm9wZXJ0eV9jcmVhdGlvbl8wAI8GIV9fd2JndF90ZXN0X3Byb3BlcnR5X3ZhbGlkYXRpb25fMQCQBh5fX3diZ3RfdGVzdF9pbnZhbGlkX3Byb3BlcnR5XzIAkQYVX193YmdfY29sbGVjdGlvbl9mcmVlALACD2NvbGxlY3Rpb25fbmFtZQCFBBFjb2xsZWN0aW9uX3NjaGVtYQDKAw9jb2xsZWN0aW9uX2ZpbmQAiwUQY29sbGVjdGlvbl9jb3VudAD2BRNjb2xsZWN0aW9uX2ZpbmRCeUlkAP4EEWNvbGxlY3Rpb25fdXBkYXRlAIYFEWNvbGxlY3Rpb25fY3JlYXRlAIcFEWNvbGxlY3Rpb25fZGVsZXRlALYEE19fd2JnX2lubWVtb3J5X2ZyZWUA/AIPaW5tZW1vcnlfY3JlYXRlAL4EEWlubWVtb3J5X2J5X2luZGV4ALMEDmlubWVtb3J5X3dyaXRlAOEEDWlubWVtb3J5X2ZpbmQA/wQZaW5tZW1vcnlfZmluZERvY3VtZW50QnlJZADNBQ5pbm1lbW9yeV9jb3VudACABQ5pbm1lbW9yeV9jbG9zZQChBQ5pbm1lbW9yeV9zdGFydACiBRJfX3diZ19pbmRleGRiX2ZyZWUA+gEOaW5kZXhkYl9jcmVhdGUA5gQNaW5kZXhkYl93cml0ZQC6BAxpbmRleGRiX2ZpbmQA2QUYaW5kZXhkYl9maW5kRG9jdW1lbnRCeUlkANoFDWluZGV4ZGJfY291bnQA2wUNaW5kZXhkYl9jbG9zZQCjBQ1pbmRleGRiX3N0YXJ0AKgGD2NvcmVzdG9yYWdlX25ldwCyBhhjb3Jlc3RvcmFnZV9tYXRjaGVzUXVlcnkA+AMWX193YmdfY29yZXN0b3JhZ2VfZnJlZQCxBiFfX3diZ193YXNtYmluZGdlbnRlc3Rjb250ZXh0X2ZyZWUApgUad2FzbWJpbmRnZW50ZXN0Y29udGV4dF9uZXcAmgYbd2FzbWJpbmRnZW50ZXN0Y29udGV4dF9hcmdzAIgFGndhc21iaW5kZ2VudGVzdGNvbnRleHRfcnVuANcEFV9fd2JndGVzdF9jb25zb2xlX2xvZwDeBRdfX3diZ3Rlc3RfY29uc29sZV9kZWJ1ZwDfBRZfX3diZ3Rlc3RfY29uc29sZV9pbmZvAOAFFl9fd2JndGVzdF9jb25zb2xlX3dhcm4A4QUXX193Ymd0ZXN0X2NvbnNvbGVfZXJyb3IA4gURX193YmluZGdlbl9tYWxsb2MA1QUSX193YmluZGdlbl9yZWFsbG9jAPcFE19fd2JpbmRnZW5fZXhwb3J0XzIBAHxfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19BX19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gzMGZjZjI0ZjkzMGFjNzNiAMYGfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDAzNDNhZjNmZjIxMGJjNmMAxQYfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCLB3xfZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuX19BX0JfQ19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gwODMzMDU0ODRmNTNmNTYyAOgEfF9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faGQwYjdiNzAzMWUzM2EzODQAzAYPX193YmluZGdlbl9mcmVlAOAGFF9fd2JpbmRnZW5fZXhuX3N0b3JlAPIGP3dhc21fYmluZGdlbl9fY29udmVydF9fY2xvc3VyZXNfX2ludm9rZTBfbXV0X19oODMxNjU0MDAzYTgxMTRjMgDVBj93YXNtX2JpbmRnZW5fX2NvbnZlcnRfX2Nsb3N1cmVzX19pbnZva2UzX211dF9faDc5YWQxYzZlNmExOTdiZTIAvAY/d2FzbV9iaW5kZ2VuX19jb252ZXJ0X19jbG9zdXJlc19faW52b2tlMl9tdXRfX2gzM2IzMGM1NjRmNDNhOGE1AMMGEF9fd2JpbmRnZW5fc3RhcnQAywUJqAcFAEEBC9kByQbQBJYE6wbqBqwG9gP2A4oDigOYA5gD6gPqA5sDmwP/A/8D9QP1A+kD6QPsA+wD7gPuA/4D/gPvA+8D6wPrA+QC5AKJA4kD5gPmA5wDnAPtA+0DrQOtA+gD6APnA+cD/QP9A4AEgATyA9wB+gS9AbUEgQKdA9MB9wOgAaEDuQHaA/MBkAOsAaQE2wGEA7oB2gGiA88BiwSb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AygCCEUNASADKAIMIQYMBgsgA0EBNgLkASADQcy0wAA2AuABIANCATcC7AEgAyADQbACaq1CgICAgMAAhDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNBSABIAJBARD6BgwFCyADIAggBhACNgLMAiADQeABaiADQYQCaiADQcwCaiADQaQCahCtBSADLQDgAUUEQCADKALMAiIEQYQBTwRAIAQQAAsgAygCpAIiBEGEAU8EQCAEEAALIAMoAsABIgQEQCAIIARBARD6BgsgCUEBaiIJIAdHDQEMBwsLIAMoAuQBIQYgAygCzAIiAUGEAUkNAyABEAAMAwsgAyAEIAUgDhCNAyADKAIABEAgAygCBCEGDAgLIAQQASEGDAULIANBATYC5AEgA0GItMAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUEIAMoAtACIgEgAygC1AIQAiEGIAMoAswCIgJFDQYgASACQQEQ+gYMBgsgA0EBNgLkASADQay0wAA2AuABIANCATcC7AEgAyADQcABaq1CgICAgNAThDcDwAIgAyADQcACajYC6AEgA0HMAmogA0HgAWoQ4gIgAygC0AIiASADKALUAhACIQYgAygCzAIiAkUNACABIAJBARD6BgsgAygCpAIiAUGEAUkNACABEAALIAMoAsABIgEEQCADKALEASABQQEQ+gYLIAMoApACIgFBhAFPBEAgARAACyADKAKEAiIBQYQBSQ0DIAEQAAwDCyADKAKEAiEGIAMoApACIgRBhAFJDQAgBBAACyADIAY2AqACIAMgAygC6AIgAygC7AIQAjYCzAIgA0HgAWogA0HYAWogA0HMAmogA0GgAmoQrQUgAy0A4AFFBEAgAygCzAIiBEGEAU8EQCAEEAALIAMoAqACIgRBhAFJDQQgBBAADAQLIAMoAuQBIQYgAygCzAIiAUGEAU8EQCABEAALIAMoAqACIgFBhAFJDQEgARAADAELIANBnAJqEIIHRQRAIANBAjYC5AEgA0HoscAANgLgASADQgE3AuwBIAMgA0HkAmqtQoCAgIDQE4Q3A8ABIAMgA0HAAWo2AugBIANBzAJqIANB4AFqEJUE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AnQQsgUMBgsgAkHYAWogARCeASACLQDYASIFQQZGBEAgAigC3AEMBgsgAkGOAmoiByAKQQJqLQAAOgAAIAJBgAJqIgkgBkEIaikDADcDACACIAovAAA7AYwCIAIgBikDADcD+AEgAigC3AEhCyACKALIASIDIAIoAsABRgRAIAJBwAFqEL0DCyACKALEASADQRhsaiIEIAIpA/gBNwMIIAQgBToAACAEIAIvAYwCOwABIAQgCzYCBCAEQQNqIActAAA6AAAgBEEQaiAJKQMANwMAIAIgA0EBajYCyAFBACEFIAEoAhQiBCABKAIQIgNJDQALDAMLIABBBjoAACAAIAg2AgQMEAsgBkEwa0H/AXFBCk8EQCACQQo2AtgBIAIgCBCYBSACIAJB2AFqIAIoAgAgAigCBBCyBTYCrAEMBgsgAkHYAWogAUEBEN0BAn4CQCACKQPYASIUQgNSBEAgAikD4AEhEwJAAkAgFKdBAWsOAgABAwsgAkECOgCoAUIADAMLIAJBAjoAqAEgE0I/iAwCCyAAIAIoAuABNgIEIABBBjoAAAwRCyACIBNC////////////AINCgICAgICAgPj/AFRBAXQ6AKgBQgILIRQgAkG4AWogEzcDACACQbABaiAUNwMAIABBEGogEzcDACAAQQhqIBQ3AwAgACACKQOoATcDAAwPCyABIAEtABhBAWsiAzoAGCADQf8BcQRAIAEgBEEEazYCFCACQcABaiEGQQAhCiMAQfABayIDJAAgA0EBOgAQIAMgATYCDCADQThqIgQgA0EMahCTAgJAAkACQCADLQA4RQRAIAMtADlFDQEgAygCDCEFIwBBEGsiByQAIAVBADYCCCAFIAUoAhRBAWo2AhQgB0EEaiAFQQxqIAUQjgIgBygCCCEMAkACQCAHKAIEIglBAkcEQCAHKAIMIQUCQCAJRQRAQQAhCSAFQQBOBEAgBUUEQEEBIQsMAwtByc3DAC0AABpBASEJIAVBARDtBiILDQILIAkgBRDZBgALQQAhCSAFQQBIDQIgBUUEQEEBIQsMAQtByc3DAC0AABpBASEJIAVBARDtBiILRQ0CCyALIAwgBRD6AiEJIAQgBTYCCCAEIAk2AgQgBCAFNgIADAILIARBgICAgHg2AgAgBCAMNgIEDAELIAkgBRDZBgALIAdBEGokACADKAI4IgRBgICAgHhHDQILIAMoAjwhBCAGQQY6AAAgBiAENgIEDAILIAZBADYCDCAGQQA2AgQgBkEFOgAADAELIAMoAjwhBSADKAJAIQcgA0EANgIcIANBADYCFCADIAc2AmggAyAFNgJkIAMgBDYCYCADQThqIANBDGoQ2wMCQCADLQA4QQZHBEAgA0EwaiADQcgAaikDADcDACADQShqIANBQGsiESkDADcDACADIAMpAzg3AyAgA0HQAWogA0EUaiADQeAAaiADQSBqEOYBAkACQAJAAkAgAy0A0AEOBwMDAwECAAMACyADQdABakEEchD7AQwCCyADKALUASIERQ0BIAMoAtgBIARBARD6BgwBCyADQdABakEEchC5BCADKALUASIERQ0AIAMoAtgBIARBGGxBCBD6BgsgA0HkAGohCyADQcQAaiEJIANB1AFqIQwgA0HQAWpBBHIhDgNAAkAgA0GsAWohBUEAIQ0jAEEQayIEJAAgBEEEaiADQQxqIgcQkwICQAJAAkAgBC0ABEUEQCAELQAFRQRAIAVBgICAgHg2AgAMBAsgBygCACIHQQA2AgggByAHKAIUQQFqNgIUIARBBGogB0EMaiAHEI4CIAQoAgghDyAEKAIEQQJGDQEgBCgCDCIHQQBOBEAgB0UEQEEBIRAMBAtByc3DAC0AABpBASENIAdBARDtBiIQDQMLIA0gBxDZBgALIAUgBCgCCDYCBCAFQYGAgIB4NgIADAILIAVBgYCAgHg2AgAgBSAPNgIEDAELIBAgDyAHEPoCIQ0gBSAHNgIIIAUgDTYCBCAFIAc2AgALIARBEGokAAJAAkACQAJAIAMoAqwBIgRBgICAgHhrDgIEAAELIAMoArABIQUMAQsgAykCsAEhEyADKAKwASADQbgBaiADQQxqENsDIAMtALgBQQZHDQEgAygCvAEhBSAERQ0AIARBARD6BgsgBkEGOgAAIAYgBTYCBAwECyAMIAMpA7gBNwIAIAxBEGogA0HIAWopAwA3AgAgDEEIaiADQcABaikDADcCACADQegAaiADQdgBaikCACIUNwMAIANB8ABqIANB4AFqKQIAIhU3AwAgA0H4AGoiBSADQegBaigCADYCACADIAMpAtABIhY3A2AgCUEQaiAVNwIAIAlBCGogFDcCACAJIBY3AgAgCUEYaiAFKAIANgIAIAMgE6ci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DCAEIAJBUGxqIgJBKGsgBzYCACACQTBrIB43AwAgAkEkayIDIAEpAqABNwIAIANBCGogAUGoAWopAgA3AgAgA0EQaiABQbABaigCADYCACACQQhrIBw3AwAgAkEQayAdNwMACyACQSBrIQMCQAJAAkACQCAOLQAcIgoOAwAAAwELIAEgDigCGBABNgKYASABIAEoAmggASgCbBACNgKcASABQUBrIAFBmAFqIAFBnAFqEOMFIAEoAkQhBCABKAJAQQFxBEAgASAENgLEASABQQE2AqQBIAFBrJHAADYCoAEgAUIBNwKsASABIAFBxAFqrUKAgICAMIQ3A8gBIAEgAUHIAWo2AqgBIAFBiAFqIAFBoAFqEOICIAEoAowBIgMgASgCkAEQAiECIAEoAogBIgQEQCADIARBARD6BgsgASgCxAEiA0GEAU8EQCADEAALIAEoApwBIgNBhAFJDRMgAxAADBMLIAEoApwBIgJBhAFPBEAgAhAACyAEEANBAUYNASAEEARBAUYNASABQThqIAQQCwJAAkACQCABKAI4IgVFDQAgASgCPCICQYCAgIB4Rg0AIAEgAjYCkAEgASAFNgKMASABIAI2AogBDAELIAFBKGogBBAMIAEoAihFDQEgASABKwMwOQOgASABQYgBaiABQaABahCrBAsgAUEgaiAaQeAAayABKAKYARABEKQBIAEoAiQhAiABKAIgIQUgCkUEQCAFDRIgAyABQYgBaiICELsDRQRAIAFBoAFqIgUgAhD4BCABQRBqIAMgBSABKAKYARABEIkCIAEoAhBFDRggASgCFCICQYMBTQ0YDBcLQdSPwABBLRACIQIMEgsgBQ0RIAMgAUGIAWoQuwNFBEBBnZDAAEEtEAIhAgwSCyABQaABaiICIAFBiAFqEPgEIAFBGGogAyACIAEoApgBEAEQiQIgASgCGEUNFiABKAIcIgJBgwFLDRUMFgtBypDAAEEmEAIhAgwRC0EBIQNByovAAEEaEAIhAgwVC0HgisAAQSMQAiECDA8LIA4oAhgQASIEEANBAUcNCAwJC0GAkcAAEJUGAAtBxJfAABCVBgALQbSXwAAQlQYAC0G8h8AAEJUGAAtB8IzAAEEUEAIhAkEADA8LEKMHAAsQpAcACwALIAQQBEEBRg0AIAFB2ABqIAQQCwJAAkACQCABKAJYIgpFDQAg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AUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AgwgAiABQQFqIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgIcIAJBIGogCCACEKcBIAItACAhDyACLQAhIRAgAi0AIiERIAItACMhEiACLQAkIRMgAi0AJSEUIAItACYhFSACLQAnIRYgAi0AKCEXIAItACkhGCACLQAqIRkgAi0AKyEaIAItACwhGyACLQAtIRwgAi0ALiEdIAItAC8hHiACLQAwIR8gAi0AMSEgIAItADIhIiACLQAzISMgAi0ANCEkIAItADUhJSACLQA2ISYgAi0ANyEnIAItADghKCACLQA5ISkgAi0AOiEqIAItADshKyACLQA8ISwgAi0APSEtIAItAD4hLiAEIAdqIgEtAAAhLyABQQFqLQAAITAgAUECai0AACExIAFBA2otAAAhMiABQQRqLQAAITMgAUEFai0AACE0IAFBBmotAAAhNSABQQdqLQAAITYgAUEIai0AACE3IAFBCWotAAAhOCABQQpqLQAAITkgAUELai0AACE6IAFBDGotAAAhOyABQQ1qLQAAITwgAUEOai0AACE9IAFBD2otAAAhPiABQRBqLQAAIT8gAUERai0AACFAIAFBEmotAAAhQSABQRNqLQAAIUIgAUEUai0AACFDIAFBFWotAAAhRCABQRZqLQAAIUUgAUEXai0AACFGIAFBGGotAAAhRyABQRlqLQAAIUggAUEaai0AACFJIAFBG2otAAAhSiABQRxqLQAAIUsgAUEdai0AACFMIAFBHmotAAAhTSAEICFqIgNBH2ogAUEfai0AACACLQA/czoAACADQR5qIC4gTXM6AAAgA0EdaiAtIExzOgAAIANBHGogLCBLczoAACADQRtqICsgSnM6AAAgA0EaaiAqIElzOgAAIANBGWogKSBIczoAACADQRhqICggR3M6AAAgA0EXaiAnIEZzOgAAIANBFmogJiBFczoAACADQRVqICUgRHM6AAAgA0EUaiAkIENzOgAAIANBE2ogIyBCczoAACADQRJqICIgQXM6AAAgA0ERaiAgIEBzOgAAIANBEGogHyA/czoAACADQQ9qIB4gPnM6AAAgA0EOaiAdID1zOgAAIANBDWogHCA8czoAACADQQxqIBsgO3M6AAAgA0ELaiAaIDpzOgAAIANBCmogGSA5czoAACADQQlqIBggOHM6AAAgA0EIaiAXIDdzOgAAIANBB2ogFiA2czoAACADQQZqIBUgNXM6AAAgA0EFaiAUIDRzOgAAIANBBGogEyAzczoAACADQQNqIBIgMnM6AAAgA0ECaiARIDFzOgAAIANBAWogECAwczoAACADIA8gL3M6AAAgBEEgaiEEIAYhASAJQQFrIgkNAAsLBEAgACAAKAIUIgFBAWo2AhQgACgCECEGIAApAgQhTiAAKAIMIQAgAkEYakIANwIAIAJCADcCECACIAA2AgggAiBONwIAIAIgASAGaiIAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycjYCDCACQSBqIAggAhCnASACLQAgIQYgAi0AISEDIAItACIhBCACLQAjIQggAi0AJCEJIAItACUhCiACLQAmIQsgAi0AJyEMIAItACghDSACLQApIQ4gAi0AKiEPIAItACshECACLQAsIREgAi0ALSESIAItAC4hEyAHIAVB/v///wBxQQR0IgFqIgAtAAAhBSAALQABIQcgAC0AAiEUIAAtAAMhFSAALQAEIRYgAC0ABSEXIAAtAAYhGCAALQAHIRkgAC0ACCEaIAAtAAkhGyAALQAKIRwgAC0ACyEdIAAtAAwhHiAALQANIR8gAC0ADiEgIAEgIWoiASAALQAPIAItAC9zOgAPIAEgEyAgczoADiABIBIgH3M6AA0gASARIB5zOgAMIAEgECAdczoACyABIA8gHHM6AAogASAOIBtzOgAJIAEgDSAaczoACCABIAwgGXM6AAcgASALIBhzOgAGIAEgCiAXczoABSABIAkgFnM6AAQgASAIIBVzOgADIAEgBCAUczoAAiABIAMgB3M6AAEgASAFIAZzOgAACyACQUBrJAALrikDCX8HfgF8AkACQAJAAkACQAJAAkACQCAALQAAQQFrDgUBAgMEBQALIAEoAgAiACgCACAAKAIIIgJrQQNNBEAgACACQQRBAUEBEJIDIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpB7uqx4wY2AAAMBQsgASgCACEBIAAtAAFFBEAgASgCACABKAIIIgBrQQRNBEAgASAAQQVBAUEBEJIDIAEoAgghAAsgASAAQQVqNgIIIAEoAgQgAGoiAEHorsEAKAAANgAAIABBBGpB7K7BAC0AADoAAEEADwsgASgCACABKAIIIgBrQQNNBEAgASAAQQRBAUEBEJIDIAEoAgghAAsgASAAQQRqNgIIIAEoAgQgAGpB9OTVqwY2AAAMBAsjAEEwayIFJAAgASgCACEDAkACQAJAAkACQAJAIABBCGoiASgCAEEBaw4CAQIAC0EUIQAgASkDCCILQpDOAFQEQCALIQwMBAsDQCAFQQhqIABqIgFBBGsgCyALQpDOAIAiDEKQzgB+faciAkH//wNxQeQAbiIGQQF0QZ61wQBqLwAAOwAAIAFBAmsgAiAGQeQAbGtB//8DcUEBdEGetcEAai8AADsAACAAQQRrIQAgC0L/wdcvViAMIQsNAAsMAwtBFCEAIAEpAwgiDSANQj+HIguFIAt9IgtCkM4AVARAIAshDAwCCwNAIAVBCGogAGoiAUEEayALIAtCkM4AgCIMQpDOAH59pyICQf//A3FB5ABuIgZBAXRBnrXBAGovAAA7AAAgAUECayACIAZB5ABsa0H//wNxQQF0QZ61wQBqLwAAOwAAIABBBGshACALQv/B1y9WIAwhCw0ACwwBCyABKwMIIhK9Qv///////////wCDQv/////////3/wBYBEAgBUEIaiEGIwBBoAJrIgAkACASvSIMQv////////8HgyELIAxCAFMEQCAGQS06AABBASEECwJAAn8CfwJAAkACQCAMQjSIp0H/D3EiAUUgC1BxRQRAIAFBAkkgC0IAUnIhAiALQoCAgICAgIAIhCALIAEbIgtCAoYhDSALQgGDIREgAUG1CGtBzHcgARsiAUEASARAIABBkAJqQcDWwgAgASABQYWiU2xBFHYgAUF/R2siCGoiB0EEdCIBaykDACILIA1CAoQiDhDBBCAAQYACakHI1sIAIAFrKQMAIgwgDhDBBCAAQfABaiAAQZgCaikDACIOIAApA4ACfCIPIABBiAJqKQMAIA4gD1atfCAIIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgEQggUgAEGwAWogCyANIAJBf3OsfCIOEMEEIABBoAFqIAwgDhDBBCAAQZABaiAAQbgBaikDACIOIAApA6ABfCIPIABBqAFqKQMAIA4gD1atfCABEIIFIABB4AFqIAsgDRDBBCAAQdABaiAMIA0QwQQgAEHAAWogAEHoAWopAwAiCyAA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AUHIAGoQ0wQgAUHTAGogAUEgaigCADYAACAAQQU6AAAgASABKQIYNwBLIAAgASkASDcAASAAQQhqIAFBzwBqKQAANwAADAQLIAAgASgCTDYCBCAAQQY6AAALIAFBGGoQ+wELIAQoAgBFDQMgBCgCBCIAQYMBSw0CDAMLQfCMwQBBLEH8jcEAEIwFAAsgBCgCAEUNASAEKAIEIgBBgwFNDQELIAAQAAsgAUGwAWokACADKAIUIgBBhAFJDQEgABAADAELIANBEGogA0EYakHM+cAAEJoCIQEgAEEGOgAAIAAgATYCBAsgAygCECIEQYQBSQ0BCyAEEAALIANBMGokAAwFCyAFKwNAIRYgBUHMAGoQhQdFBEAgACAWOQMQIABCAjcDCCAAIBa9Qv///////////wCDQoCAgICAgID4/wBUQQF0OgAADAMLIABBAjoAACAWRAAAAAAAAODDZiEBIABC////////////AAJ+IBaZRAAAAAAAAOBDYwRAIBawDAELQoCAgICAgICAgH8LQoCAgICAgICAgH8gARsgFkT////////fQ2QbQgAgFiAWYRsiEjcDECAAIBJCP4g3AwgMAgsgBSgCTCEDIwBBgAFrIgEkACABIAM2AhgCQCABQRhqIgMQggcEQCABQRxqIAMQ1gYgAUEANgIoIAFBADYCNCABQoCAgICAATcCLAJAIAEoAhxFDQAgAUHwAGohBCABQegAakEBciECA0AgAUEIaiABQRxqEMcFIAEoAghFDQEgASgCDCEDIAEgASgCKEEBajYCKCABQegAaiADENQBIAEtAGgiB0EGRgRAIAEoAmwhAyAAQQY6AAAgACADNgIEIAFBLGoQuQQgASgCLCIARQ0EIAEoAjAgAEEYbEEIEPoGDAQLIAFBzgBqIgggAkECai0AADoAACABQUBrIgogBEEIaikDADcDACABIAIvAAA7AUwgASAEKQMANwM4IAEoAmwhCSABKAI0IgYgASgCLEYEQCABQSxqEL0DCyABKAIwIAZBGGxqIgMgASkDODcACCADIAc6AAAgAyABLwFMOwABIAMgCTYABCADQQNqIAgtAAA6AAAgA0EQaiAKKQMANwAAIAEgBkEBajYCNCABKAIcDQALCyABQfMAaiABQTRqKAIANgAAIABBBDoAACABIAEpAiw3AGsgACABKQBoNwAB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QAJAIAQEQCAELQAADQkgAUEoakHyzMAAQcYBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQbjOwABBNBDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQezOwABB4AAQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG80MAAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQazQwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQZzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYzQwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQfzPwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQezPwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQdzPwAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQczPwAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGy3MAAQcgBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQfrdwABB8gAQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakH63cAAQfIAEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAACyABQZABahDvAiAEQQE6AAACQCAAKAIEIgAoAgAiAkEBSyACRXINACAAQQRqKAIAIgJBhAFJDQAgAhAACyAAQQA2AgAgAUGgAmokAA8LQbixwABBFRCiBwALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABB3N/AABDDBAALIAEgASgCkAE2AjBB8LnAAEErIAFBMGpBnLnAAEHM38AAEMMEAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEG838AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGs38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGc38AAEMMEAAsgASACNgKIAkHwucAAQSsgAUGIAmpBnLnAAEGM38AAEMMEAAsgASADNgKIAkHwucAAQSsgAUGIAmpBnLnAAEH83sAAEMMEAAsgAUEANgKIAiABQYACaiABQYQCaiABQYgCakHs3sAAEPQFAAtByK3AABCVBgALpgYBBX8jAEGgAmsiASQAIAAoAgAiAigCACEEIAJBADYCAAJAAkACQAJAAkACQAJAAkACQCAEBEAgBC0AAA0JIAFBKGpBruDAAEGdAhDuBSABKAIsIQIgASgCKA0BIAFBkAFqIgMgAhCCAyABKALkAUGAgICAeEYNAiABQTBqIgUgA0HgABD6AhogAUEgakHL4sAAQf4BEO4FIAEoAiQhAiABKAIgDQMgAyAFQeAAEPoCGiABIAI2AvABIAFBGGogAUHwAWoQwAEgASgCHCECIAEoAhgNBCABIAI2AvgBIAFBEGpByeTAAEGGAxDuBSABKAIUIQIgASgCEA0FIAEgAjYC/AEgAUEIaiABQfgBahDvBSABKAIMIQIgASgCCA0GIAEgAjYCgAIgASABQfwBahDvBSABKAIEIQMgASgCAA0HIAEgAzYChAIgAUGAAmogAUGEAmoQ5wZFDQggA0GEAU8EQCADEAAgASgCgAIhAgsgAkGEAU8EQCACEAALIAEoAvwBIgJBhAFPBEAgAhAACyABKAL4ASICQYQBTwRAIAIQAAsgAUGQAWoQ7wIgBEEBOgAAAkAgACgCBCIAKAIAIgJBAUsgAkVyDQAgAEEEaigCACICQYQBSQ0AIAIQAAsgAEEANgIAIAFBoAJqJAAPC0G4scAAQRUQogcACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQcDowAAQwwQACyABIAEoApABNgIwQfC5wABBKyABQTBqQZy5wABBsOjAABDDBAALIAEgAjYCkAFB8LnAAEErIAFBkAFqQZy5wABBoOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBkOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABBgOjAABDDBAALIAEgAjYCiAJB8LnAAEErIAFBiAJqQZy5wABB8OfAABDDBAALIAEgAzYCiAJB8LnAAEErIAFBiAJqQZy5wABB4OfAABDDBAALIAFBADYCiAIgAUGAAmogAUGEAmogAUGIAmpB0OfAABD0BQALQcitwAAQlQYAC6YGAQV/IwBBoAJrIgEkACAAKAIAIgIoAgAhBCACQQA2AgACQAJAAkACQAJAAkACQAJAAkAgBARAIAQtAAANCSABQShqQY3XwABB8wEQ7gUgASgCLCECIAEoAigNASABQZABaiIDIAIQggMgASgC5AFBgICAgHhGDQIgAUEwaiIFIANB4AAQ+gIaIAFBIGpBgNnAAEHlARDuBSABKAIkIQIgASgCIA0DIAMgBUHgABD6AhogASACNgLwASABQRhqIAFB8AFqEMABIAEoAhwhAiABKAIYDQQgASACNgL4ASABQRBqQYDZwABB5QEQ7gUgASgCFCECIAEoAhANBSABIAI2AvwBIAFBCGogAUH4AWoQ7wUgASgCDCECIAEoAggNBiABIAI2AoACIAEgAUH8AWoQ7wUgASgCBCEDIAEoAgANByABIAM2AoQCIAFBgAJqIAFBhAJqEOcGRQ0IIANBhAFPBEAgAxAAIAEoAoACIQILIAJBhAFPBEAgAhAACyABKAL8ASICQYQBTwRAIAIQAAsgASgC+AEiAkGEAU8EQCACEAALIAFBkAFqEO8CIARBAToAAAJAIAAoAgQiACgCACICQQFLIAJFcg0AIABBBGooAgAiAkGEAUkNACACEAALIABBADYCACABQaACaiQADwtBuLHAAEEVEKIHAAsgASACNgKQAUHwucAAQSsgAUGQAWpBnLnAAEHY28AAEMMEAAsgASABKAKQATYCMEHwucAAQSsgAUEwakGcucAAQcjbwAAQwwQACyABIAI2ApABQfC5wABBKyABQZABakGcucAAQbjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQajbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQZjbwAAQwwQACyABIAI2AogCQfC5wABBKyABQYgCakGcucAAQYjbwAAQwwQACyABIAM2AogCQfC5wABBKyABQYgCakGcucAAQfjawAAQwwQACyABQQA2AogCIAFBgAJqIAFBhAJqIAFBiAJqQejawAAQ9AUAC0HIrcAAEJUGAAumBgEFfyMAQaACayIBJAAgACgCACICKAIAIQQgAkEANgIAAkACQAJAAkACQAJAAkACQAJAIAQEQCAELQAADQkgAUEoakGW0cAAQcUBEO4FIAEoAiwhAiABKAIoDQEgAUGQAWoiAyACEIIDIAEoAuQBQYCAgIB4Rg0CIAFBMGoiBSADQeAAEPoCGiABQSBqQdvSwABBggEQ7gUgASgCJCECIAEoAiANAyADIAVB4AAQ+gIaIAEgAjYC8AEgAUEYaiABQfABahDAASABKAIcIQIgASgCGA0EIAEgAjYC+AEgAUEQakHd08AAQeIBEO4FIAEoAhQhAiABKAIQDQUgASACNgL8ASABQQhqIAFB+AFqEO8FIAEoAgwhAiABKAIIDQYgASACNgKAAiABIAFB/AFqEO8FIAEoAgQhAyABKAIADQcgASADNgKEAiABQYACaiABQYQCahDnBkUNCCADQYQBTwRAIAMQACABKAKAAiECCyACQYQBTwRAIAIQAAsgASgC/AEiAkGEAU8EQCACEAALIAEoAvgBIgJBhAFPBEAgAhAA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IAIgA0YNARogAkEBaiECIAEgCCAHKAIQEQEARQ0ACyACQQFrCyADSQshAiAAIAk6ACAgACAKNgIQDAELQQEhAgsgBEEQaiQAIAILrwQBBX8CQAJAAkAgAiADTwRAQQEhBgJAIANBAEwNACABIANqIQQCQCADQQNNBEADQCABIARPDQMgBEEBayIELQAAQQpHDQAMAgsAC0GAgoQIIARBBGsoAAAiB0GKlKjQAHNrIAdyQYCBgoR4cUGAgYKEeEcEQANAIAEgBE8NAyAEQQFrIgQtAABBCkcNAAwCCwALIAMgBEEDcWshBCADQQlPBEADQAJAIAQiB0EISA0AQYCChAggASAEaiIIQQhrKAIAIgRBipSo0ABzayAEckGAgYKEeHFBgIGChHhHDQAgB0EIayEEQYCChAggCEEEaygCACIIQYqUqNAAc2sgCHJBgIGChHhxQYCBgoR4Rg0BCwsgASAHaiEEA0AgASAETw0DIARBAWsiBC0AAEEKRw0ACwwBCyABIARqIQQDQCABIARPDQIgBEEBayIELQAAQQpHDQALCyAEIAFrIgRBAWohBSACIARNDQILIAEgBWogAU0NAyAFQQNxIQYgBUEBa0EDSQRAQQAhBAwDCyAFQXxxIQJBACEEA0AgBCABLQAAQQpGaiABLQABQQpGaiABLQACQQpGaiABLQADQQpGaiEEIAFBBGohASACQQRrIgINAAsMAgsgAyACQYiNwgAQ7AQACyAFIAJBmI3CABDsBAALIAYEQANAIAQgAS0AAEEKRmohBCABQQFqIQEgBkEBayIGDQALCyAEQQFqIQYLIAAgBjYCACAAIAMgBWs2AgQLhgcCCH8BfiMAQSBrIggkAAJAAkACQAJAAkACQANAIAEoAgghBwJAIAEoAggiAyABKAIEIgVGDQAgAyAFSQRAIAEoAgAiBiADai0AACIEQSJGIARB3ABGciAEQSBJcg0BIAZBAWohBEEAIAUgA0EBaiIGa0F4cSIJayEFA0AgBUUEQCABIAYgCWo2AggCQCABKAIIIgMgASgCBCIETw0AIAEoAgAhBgNAIAMgBmotAAAiBUEiRiAFQdwARnIgBUEgSXINASABIANBAWoiAzYCCCADIARHDQALCwwDCyADIARqIAVBCGohBSADQQhqIQMpAAAiC0J/hSALQty48eLFi5eu3ACFQoGC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IAuncSEBIAtCGYhC/wCDQoGChIiQoMCAAX4hDQNAAkAgASAFaikAACIMIA2FIgtCf4UgC0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyILUEUEQANAIAMgCEEAIAt6p0EDdiABaiAGcWsiCUHwAGxqIgooAghGBEAgAiAKKAIEIAMQqQVFDQMLIAtCAX0gC4MiC1BFDQALC0EAIAwgDEIBhoNCgIGChIiQoMCAf4NQRQ0CGiABIAdBCGoiB2ogBnEhAQwBCwsgBSAJQfAAbGpB8ABrCyEBIARBAjYCJCAEQbypwAA2AiAgBEIBNwIsIAQgBEEMaq1CgICAgMAAhDcDOCAEIARBOGo2AiggBEEUaiAEQSBqEOICIAQoAhgiBSAEKAIcEAIhAwJAIAFFBEBBASEBDAELIAFBEGpBACEBIANBhAFPBEAgAxAACyEDCyAEKAIUIgIEQCAFIAJBARD6BgsgACADNgIEIAAgATYCACAEQUBrJAALqwMBAn8CQAJAAkACQCABQQdqIgNB+ABPDQAgAUEPaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQZqIgNB+ABPDQAgAUEOaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQVqIgNB+ABPDQAgAUENaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQRqIgNB+ABPDQAgAUEMaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQNqIgNB+ABPDQAgAUELaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQJqIgNB+ABPDQAgAUEKaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQQFqIgNB+ABPDQAgAUEJaiICQfgATw0CIAAgAkECdGogACADQQJ0aigCADYCACABQfgASQ0BIAEhAwsgA0H4AEGo0sEAEOsEAAsgAUEIaiICQfgASQ0BCyACQfgAQbjSwQAQ6wQACyAAIAJBAnRqIAAgAUECdGooAgA2AgALuAMCBH8BfiMAQeAAayIBJAACQCAABEAgACgCAA0BIAFBCGogAEEIakHYABD6AhogAEHgAEEIEPoGIAEoAkgiAEGEAU8EQCAAEAALIAEoAlAhAyABKAJUIgQEQCADIQAD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AUF/czYC9AEgAyADKAL4AUF/czYC+AEgAyADKAKAAkF/czYCgAIgAyADKAKEAkF/czYChAIgAyADKAKUAkF/czYClAIgAyADKAKYAkF/czYCmAIgAyADKAKgAkF/czYCoAIgAyADKAKkAkF/czYCpAIgAyADKAK0AkF/czYCtAIgAyADKAK4AkF/czYCuAIgAyADKALAAkF/czYCwAIgAyADKALEAkF/czYCxAIgAyADKALUAkF/czYC1AIgAyADKALYAkF/czYC2AIgAyADKALgAkF/czYC4AIgAyADKALkAkF/czYC5AIgAyADKAL0AkF/czYC9AIgAyADKAL4AkF/czYC+AIgAyADKAKAA0F/czYCgAMgAyADKAKEA0F/czYChAMgAyADKAKUA0F/czYClAMgAygCmAMhBCADIAYgBiAGQQR2c0GAmLwYcUERbHMiBkECdiAGc0GA5oCYA3FBBWwgBnNBf3M2ArgDIAMgAiACIAJBBHZzQYCYvBhxQRFscyICQQJ2IAJzQYDmgJgDcUEFbCACc0F/czYCtAMgAyAHIAcgB0EEdnNBgJi8GHFBEWxzIgdBAnYgB3NBgOaAmANxQQVsIAdzQX9zNgKkAyADIAEgASABQQR2c0GAmLwYcUERbHMiAUECdiABc0GA5oCYA3FBBWwgAXNBf3M2AqADIAMgBEF/czYCmAMgAyADKALAA0F/czYCwAMgAyADKALEA0F/czYCxAMgAyADKALUA0F/czYC1AMgAyADKALYA0F/czYC2AMgDCADQeADEPoCGiADQeADaiQABSADIAYQtwIgAUHgAGoiBBD1ASAEIAQoAgBBf3M2AgAgAUHkAGoiBCAEKAIAQX9zNgIAIAFB9ABqIgQgBCgCAEF/czYCACABQfgAaiIBIAEoAgBBf3M2AgAgAyAGQQhqIgZBBhDVASACQcQAaiECIAdBQGshBwwBCwsgBUH4B2pCADcDACAFQfAHakIANwMAIAVB6AdqQgA3AwAgBUIANwPgByAFIAwgBUHgB2oiAxCnASAFMQAHISQgBTEABiElIAUxAAUhJiAFMQAEIScgBTEAAyEoIAUxAAEhKSAFMQACISogBSAFMQAAIiJCB4giIyAFMQAOQgmGIAUxAA8gBTEACEI4hiIrIAUxAAlCMIaEIAUxAApCKIaEIAUxAAtCIIaEIAUx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KAIUIgQEQCABKAIYIARBARD6BgsgACADNgIAIAAgAjYCBCAFQRBqJAALiAEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUHoAGoQwAEgAigCDCEDIAIoAgghBCABIAEoAgBBAWs2AgAgACAENgIIIAAgA0EAIARBAXEiARs2AgQgAEEAIAMgARs2AgAgAkEQaiQADwsQowcACxCkBwALhwEBA38jAEEQayICJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIAJBCGogAUEIahDrASACKAIMIQMgAigCCCEEIAEgASgCAEEBazYCACAAIAQ2AgggACADQQAgBEEBcSIBGzYCBCAAQQAgAyABGzYCACACQRBqJAAPCxCjBwALEKQHAAvyIwIofwt+IwBBEGsiHCQAAkAgAQRAIAEoAgAiAkF/Rg0BIAEgAkEBajYCACAcQQhqISIgAUEIaiESIwBBwANrIgMkACADQZyewQBBGRACIgI2AtgCEPgBBEAgA0HYAmoQuAcLIAJBhAFPBEAgAhAACwJ+QaDSwwAoAgBBAUYEQEGw0sMAKQMAIStBqNLDACkDAAwBC0ICIStBsNLDAEICNwMAQaDSwwBCATcDAEIBCyEqIANBCGpByJ7BACkDADcDACADICo3AxBBqNLDACAqQgF8NwMAIAMgKzcDGCADQcCewQApAwA3AwAgEigCDCIbBEAgEkEgaiEXIBJBxABqISUgA0HUAmqtQoCAgIAQhCEwIANB+AJqISYgA0HQAWohJyADQdAAaiEVIANB9ABqISggEigCQCEpIBIoAgAiHUEIaiEOIB0pAwBCf4VCgIGChIiQoMCAf4MhKyASKQM4ITEgEikDMCEyIBIpAxghMyASKQMQITQDQCArUARAA0AgHUGAB2shHSAOKQMAIA5BCGohDkKAgYKEiJCgwIB/gyIrQoCBgoSIkKDAgH9RDQALICtCgIGChIiQoMCAf4UhKwsgAyAdICt6p0EDdkGQf2xqQfAAazYC1AIgA0EBNgLcAiADQYyfwQA2AtgCIANCATcC5AIgAyAwNwPgASADIANB4AFqNgLgAiADQSRqIANB2AJqEOICIAMoAiQhBCADIAMoAigiAiADKAIsEAI2AtgCIAQEQCACIARBARD6BgsQ+AEEQCAD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hAFPBEAgARAACyAAKAIUIgFBhAFPBEAgARAACyAAKAIQIgBBgwFNDQELIAAQAAsLeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEPQDIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARCLAiABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAt4AQJ/IAAoAgAiAigCACEBIAJBADYCAAJAIAEEQCABLQAADQEQywMgAUEBOgAAAkAgACgCBCIAKAIAIgFBAUsgAUVyDQAgAEEEaigCACIBQYQBSQ0AIAEQAAsgAEEANgIADwtBuLHAAEEVEKIHAAtByK3AABCVBgALeAECfyAAKAIAIgIoAgAhASACQQA2AgACQCABBEAgAS0AAA0BEO4CIAFBAToAAAJAIAAoAgQiACgCACIBQQFLIAFFcg0AIABBBGooAgAiAUGEAUkNACABEAALIABBADYCAA8LQbixwABBFRCiBwALQcitwAAQlQYAC3gBAn8gACgCACICKAIAIQEgAkEANgIAAkAgAQRAIAEtAAANARDgAyABQQE6AAACQCAAKAIEIgAoAgAiAUEBSyABRXINACAAQQRqKAIAIgFBhAFJDQAgARAACyAAQQA2AgAPC0G4scAAQRUQogcAC0HIrcAAEJUGAAtsAQF/IwBBMGsiAyQAIAMgAjYCBCADIAE2AgAgA0ECNgIMIANBjKPBADYCCCADQgI3AhQgAyADrUKAgICA0CKENwMoIAMgAK1CgICAgOAihDcDICADIANBIGo2AhAgA0EIahDOAyADQTBqJAALbAEBfyMAQTBrIgMkACADIAI2AgQgAyABNgIAIANBAjYCDCADQfjfwQA2AgggA0ICNwIUIAMgA61CgICAgKAohDcDKCADIACtQoCAgIDgIoQ3AyAgAyADQSBqNgIQIANBCGoQzwMgA0EwaiQAC2UBAn8jAEEQayICJAAgACgCCCEDIAAoAgQhACACQQRqIAEQqwYgAwRAA0AgAiAANgIMIAJBBGogAkEMakGQsMEAEJoDIABBAWohACADQQFrIgMNAAsLIAJBBGoQngYgAkEQaiQAC28BAX8jAEFAaiICJAAgAkEAOgA4IAIgATYCDCACIAA2AgggAiACQQhqNgI8IAJBPGpB6ILAABDEByACLQA4QQNGBEAgAigCHCIBIAEoAgBBAWs2AgAgAigCFCIBIAEoAgBBAWs2AgALIAJBQGskAAuLAQIBfAJ+IAEQhQcEfiABKAIAEEgiAkQAAAAAAADgw2YhAUL///////////8AAn4gAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwtCgICAgICAgICAfyABGyACRP///////99DZBtCACACIAJhGyEDQgEFQgALIQQgACADNwMIIAAgBDcDAAtlAQN/IAAoAgwiAiAAKAIEIgFrQQxuIQMgASACRwRAA0AgASgCACICBEAgAUEEaigCACACQQEQ+gYLIAFBDGohASADQQFrIgMNAAsLIAAoAggiAQRAIAAoAgAgAUEMbEEEEPoGCwtkAQN/IwBBEGsiAiQAIAIgACgCADYCDCACQQxqIAEQugIgAigCDCIABEAgAEEEaigCACEBIAAoAgAiBEGEAU8EQCAEEAALIAFBhAFPBEAgARAACyAAQQhBBBD6BgsgAkEQaiQAC2kBBH8CQCAABEAgACgCAA0BIAAoAhQhASAAKAIIIQQgACgCBCECIAAoAhAhAyAAQRhBBBD6BiADQYQBTwRAIAMQAAsgAUGEAU8EQCABEAALIAIEQCAEIAJBARD6BgsPCxCjBwALEKQHAAt4AQF/IwBBsAFrIgMkACADQQA6AKQBIAMgAjYCoAEgAyABNgKcASADIAA2ApgBIAMgAzYCrAEgA0GsAWpB+IDAABDEBwJAIAMtAKQBQQNHDQAgA0EIahCMAyADKAIEIgFFDQAgAygCACABQQEQ+gYLIANBsAFqJAALaQEEfwJAIAAoAgAiAUGAgICAeEYNACAAKAIEIQIgACgCCCIDBEAgAiEAA0AgACgCACIEBEAgAEEEaigCACAEQQEQ+gYLIABBDGohACADQQFrIgMNAAsLIAFFDQAgAiABQQxsQQQQ+gYLC2oBAX8jAEEQayIGJAAgAUUEQEH/+8AAQSMQogcACyAGQQhqIAEgAyAEIAUgAigCFBEHACAGKAIMIQEgACAGKAIIIgI2AgggAEEAIAEgAkEBcSICGzYCACAAIAFBACACGzYCBCAGQRBqJAALZAECfyMAQRBrIgIkACACIAAoAgA2AgwgAkEMaiABEJACIAIoAgwiAARAIABBBGooAgAhASAAKAIAIgNBhAFPBEAgAxAACyABQYQBTwRAIAEQAAsgAEEIQQQQ+gYLIAJBEGokAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0Gss8MANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQYytwwA2AgggA0ICNwIUIANCgICAgPAiIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhC0BQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIMIANBzLPDADYCCCADQgI3AhQgA0KAgICA8CIiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACELQFAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0GAtMMANgIIIANCAjcCFCADQoCAgIDwIiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtAUAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD5ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2UBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGogARD3ASACKAIMIgAEQCAAKAJgIgFBhAFPBEAgARAACyAAEPgCIAAoAmgiAUGEAU8EQCABEAALIABB8ABBCBD6BgsgAkEQaiQAC2gBAX8jAEEwayIDJAAgAyACNgIMIAMgATYCCCADQQE2AhQgA0GkjsEANgIQIANCATcCHCADIANBCGqtQoCAgIDAAIQ3AyggAyADQShqNgIYIAAgA0EQahDiAiAAQQA6AAwg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IAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAAPCyMAQYABayIEJAAgAC0AACEAA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGUr8MAEOoEAAsgAUEBQaSvwwBBAiACIARqQYABakEAIAJrEOMBIARBgAFqJAALOAAjAEEQayIBJAAgAUEIaiACIAMgBBDrAiABKAIMIQIgACABKAIINgIAIAAgAjYCBCABQRBqJAALPAEBfwJ/IAEtAAFFBEAQYyECQQAMAQsQayECQQELIQMgACABNgIQIABBADYCCCAAIAI2AgQgACADNgIACzkBAX8gACgCACEAIAEoAhwiAkEQcUUEQCACQSBxRQRAIAAgARCHBw8LIAAgARCaBA8LIAAgARCZBAs6AQF/IwBBEGsiAiQAIAIgASgCABCSASACKAIAIQEgACACKQMINwMIIAAgAUEAR603AwAgAkEQaiQAC450AyN/Gn4BfCABKAIcQQFxIQIgACsDACE/AkAgASgCCEEBRgRAAn8gASEIIAEoAgwhE0EAIQAjAEHwCGsiCSQAID+9IScCf0ECID8gP2INABogJ0L/////////B4MiKUKAgICAgICACIQgJ0IBhkL+////////D4MgJ0I0iKdB/w9xIgEbIiVCAYMhKCAnQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJUIBhiAlQoCAgICAgIAIUSIAGyElQgJCASAAGyEmQct3Qcx3IAAbIAFqIQAgKFAMAQsgAUGzCGshAEIBISYgKFALIQEgCSAAOwHoCCAJICY3A+AIIAlCATcD2AggCSAlNwPQCCAJIAE6AOoIAkACfwJAAkACQAJAIAFBAmsiBARAQQEhAUHbqsMAQdyqwwAgJ0IAUyIFG0HbqsMAQQEgBRsgAhshGSAnQj+IpyACciEcQQMgBCAEQQNP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AEGAAWsiAyQAID+9ISUCf0ECID8gP2INABogJUL/////////B4MiKUKAgICAgICACIQgJUIBhkL+////////D4MgJUI0iKdB/w9xIgAbIidCAYMhKCAlQoCAgICAgID4/wCDISYCQAJAIClQBEBBAyAmQoCAgICAgID4/wBRDQMaICZQRQ0BQQQMAwsgJlANAQtCgICAgICAgCAgJ0IBhiAnQoCAgICAgIAIUSIBGyEnQgJCASABGyEmQct3Qcx3IAEbIABqIQAgKFAMAQsgAEGzCGshAEIBISYgKFALIQEgAyAAOwF4IAMgJjcDcCADQgE3A2ggAyAnNwNgIAMgAToAegJ/AkACQAJAIAFBAmsiAQRAQQEhAEHbqsMAQdyqwwAgJUIAUyIEG0HbqsMAQQEgBBsgAhshGEEBICVCP4inIAIbIRlBAyABIAFBA08bQQJrDgIDAgELIANBAzYCKCADQd2qwwA2AiQgA0ECOwEgQQEhGEEBIQAgA0EgagwDCyADQQM2AiggA0HgqsMANgIkIANBAjsBICADQSBqDAILIANBIGohBSADQQ9qIg4hCCMAQTBrIgQkAAJAAkACfwJAAkACQAJAAkACQAJAAkAgA0HgAGoiDCIAKQMAIiVQRQRAIAApAwgiJ1ANASAAKQMQIiZQDQIgJSAmfCImICVUDQMgJSAnVA0EICZCgICAgICAgIAgWg0FIAQgAC8BGCIAOwEIIAQgJSAnfSInNwMAIAAgAEEgayAAICZCgICAgBBUIgEbIgJBEGsgAiAmQiCGICYgARsiJkKAgICAgIDAAFQiARsiAkEIayACICZCEIYgJiABGyImQoCAgICAgICAAVQiARsiAkEEayACICZCCIYgJiABGyImQoCAgICAgICAEFQiARsiAkECayACICZCBIYgJiABGyImQoCAgICAgICAwABUIgEbICZCAoYgJiABGyIsQgBZIgJrIgFrwSIKQQBIDQYgBCAnIAqtIiaGIiggJogiKTcDECAnIClSDQogBCAAOwEIIAQgJTcDACAEICUgJkI/gyInhiImICeIIic3AxAgJSAnUg0KQaB/IAFrwUHQAGxBsKcFakHOEG0iAEHRAE8NByAAQQR0IgBBsJvDAGopAwAiJ0L/////D4MiJSAmQiCIIjN+IipCIIgiOyAnQiCIIikgM34iPHwgKSAm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DBAAEwAAAJUAAAA/AAAARGF0YWJhc2Ugc3RhcnRlZCBzdWNjZXNzZnVsbHkuAAA8DBAAEwAAAJIAAAABAAAAQ2xvc2luZyB0aGUgZGF0YWJhc2UuLi4APAwQABMAAACiAAAAPgAAAERhdGFiYXNlIGNsb3NlZCBzdWNjZXNzZnVsbHkuQ3JlYXRpbmcgZGF0YWJhc2U6IAUNEAATAAAAVXNpbmcgcHJvdmlkZWQgc3RvcmFnZS5DcmVhdGluZyBJbk1lbW9yeSBzdG9yYWdlLgAAADwMEAATAAAA3AAAACQAAAA8DBAAEwAAAOYAAAAfAAAAUGx1Z2lucyBhcHBsaWVkLkFkZGluZyBkZWZhdWx0cyBwbHVnaW4uQWRkaW5nIG1pZ3JhdGlvbiBwbHVnaW4uQWRkaW5nIGludGVncml0eSBwbHVnaW4uQWRkaW5nIGVuY3J5cHRpb24gcGx1Z2luLkNyZWF0aW5nIHN0b3JhZ2Ugd2l0aCBzY2hlbWFzIGFuZCBtaWdyYXRpb25zLkRhdGFiYXNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LkludmFsaWQgY29sbGVjdGlvbiBuYW1lUHJvY2Vzc2luZyBzY2hlbWEgZm9yIGNvbGxlY3Rpb246IEYOEAAiAAAATWlncmF0aW9uIHBhdGggdW5kZWZpbmVkIGZvciBjb2xsZWN0aW9uOiAsIHZlcnNpb246IHAOEAApAAAAmQ4QAAsAAABSZXF1aXJlZCBTY2hlbWEgIG1pZ3JhdGlvbiBwYXRoICB0byBub3QgYmUgdW5kZWZpbmVktA4QABAAAADEDhAAEAAAANQOEAAUAAAAdQAAAAgAAAAEAAAAdgAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAEA8QAGcAAAAWAgAAHgAAABAPEABnAAAA+AEAACcAAAAQDxAAZwAAAO8BAAAoAAAAdQAAAAgAAAAEAAAAdwAAAHUAAAAIAAAABAAAAHgAAAB1AAAACAAAAAQAAAB5AAAAdQAAAAgAAAAEAAAAegAAAHUAAAAIAAAABAAAAHsAAAB1AAAACAAAAAQAAAB8AAAAdQAAAAgAAAAEAAAAfQAAAHUAAAAIAAAABAAAAH4AAAB1AAAACAAAAAQAAAB/AAAAdQAAAAgAAAAEAAAAgAAAAHUAAAAIAAAABAAAAIEAAAB1AAAACAAAAAQAAACCAAAAdQAAAAgAAAAEAAAAgwAAAHUAAAAIAAAABAAAAIQAAAB1AAAACAAAAAQAAACFAAAAdQAAAAgAAAAEAAAAhgAAAHUAAAAIAAAABAAAAIcAAAB1AAAACAAAAAQAAACIAAAAdQAAAAgAAAAEAAAAiQAAAHUAAAAIAAAABAAAAIoAAAB1AAAACAAAAAQAAACLAAAAdQAAAAgAAAAEAAAAjAAAAHUAAAAIAAAABAAAAI0AAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzABgREABPAAAAyAUAABQAAAAYERAATwAAAMgFAAAhAAAAGBEQAE8AAAC8BQAAIQAAABgREABPAAAATAQAACQAAABpbnZhbGlkIHBvbGwgc3RhdGVgdW53cmFwX3Rocm93YCBmYWlsZWQAQdijwAALsQUBAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAAJhIQAE8AAAAEAQAAGgAAAAAAAAAEAAAABAAAAI8AAAAAAAAABAAAAAQAAACQAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJIAAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAlAAAAAAAAAAEAAAABAAAAJUAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwD4EhAAXwAAABYCAAAvAAAA+BIQAF8AAAChAAAAJAAAAE5vbmVTb21lAAAAAAQAAAAEAAAAlgAAAEVycm9yL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwLnJzAJUTEABaAAAA+gAAAD8AAACVExAAWgAAAB8BAAAuAAAAY29kZZcAAAAEAAAABAAAAAMAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlc3JjL2Vycm9yLnJzAE8UEAAMAAAAWwAAAGUAAACYAAAABAAAAAQAAACZAAAATxQQAAwAAABbAAAAWwBBlKnAAAu/AwEAAACcAAAASW52YWxpZCBjb2xsZWN0aW9uICwgbm90IGZvdW5kAACcFBAAEwAAAK8UEAALAAAASG9vayBpcyBub3QgYSBmdW5jdGlvbkhvb2sgbXVzdCBiZSBhIGZ1bmN0aW9uRXJyb3IgZXhlY3V0aW5nIHBsdWdpbiBob29rOiAAAPkUEAAdAAAASW52YWxpZCBTY2hlbWEgY2Fubm90IGZpbmQgcHJpbWFyeUtleSBmaWVsZDEyMzQ1VW5leHBlY3RlZCBwcmltYXJ5IGtleSBzaG91bGQgYmUgYSBzdHJpbmdVbmV4cGVjdGVkIHByaW1hcnkga2V5IHNob3VsZCBiZSBudW1iZXJGaWVsZCAgaXMgcmVxdWlyZWQAAKAVEAAGAAAAphUQAAwAAAAgc2hvdWxkIG1hdGNoIHR5cGUgAKAVEAAGAAAAxBUQABMAAABTdHJpbmdOdW1iZXJCb29sZWFuQXJyYXlPYmplY3RfX05vbmV4aGF1c3RpdmUAAAAGAAAABgAAAAcAAAAFAAAABgAAAA8AAADoFRAA7hUQAPQVEAD7FRAAABYQAAYWEAD//////////0gWEABB4KzAAAu7BS9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLXRlc3QtMC4zLjQyL3NyYy9ydC9tb2QucnMAYBYQAGcAAADOAQAAHAAAAAAAAAAMAAAABAAAAJ4AAACfAAAAAAAAAAwAAAAEAAAAoAAAAKEAAAAAAAAADAAAAAQAAACiAAAAowAA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OiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgIm5vbmV4aXN0ZW50IjogInZhbHVlIgogICAgfQogICAgYXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAAAALBkQABAAAAA4AQAABQAAACwZEAAQAAAAOgEAACsAAABJbnZhbGlkIHByb3BlcnR5OiBub25leGlzdGVudAAAALQeEAAdAAAALBkQABAAAAA5AQAABQAAACwZEAAQAAAANgEAADMAAAAsGRAAEAAAADQBAAAyAAAALBkQABAAAAAyAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF90eXBlCiAgICB7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIHsKICAgICAgICAiYWdlIjogInRoaXJ0eSIKICAgIH0KICAgIAAsGRAAEAAAAFUBAAAFAAAALBkQABAAAABXAQAAKwAAANsaEAARAAAALBkQABAAAABWAQAABQAAACwZEAAQAAAAUwEAADMAAAAsGRAAEAAAAFIBAAAyAAAALBkQABAAAABQAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfbG9naWNhbF9vcGVyYXRvcnMKICAgIHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJuYW1lIjogIkFsaWNlIiB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkZ3RlIjogMjUgfSB9CiAgICAgICAgXQogICAgfQogICAgAAAALBkQABAAAAB2AQAABQAAACwZEAAQAAAAdAEAADMAAAAsGRAAEAAAAHMBAAAyAAAALBkQABAAAABxAQAAMQAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfcGFyc2VfaW52YWxpZF9vcGVyYXRvcgogICAgewogICAgICAgICJhZ2UiOiB7ICIkdW5rbm93biI6IDMwIH0KICAgIH0KICAgIAAALBkQABAAAACPAQAABQAAACwZEAAQAAAAkQEAACsAAABJbnZhbGlkIG9wZXJhdG9yOiAkdW5rbm93bgAAyCIQABoAAAAsGRAAEAAAAJABAAAFAAAALBkQABAAAACNAQAAMwAAACwZEAAQAAAAjAEAADIAAAAsGRAAEAAAAIoBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRndCI6ICJ0aGlydHkiIH0KICAgIH0KICAgIAAALBkQABAAAACsAQAABQAAACwZEAAQAAAArgEAACsAAAAsGRAAEAAAAK0BAAAFAAAALBkQABAAAACqAQAAMwAAACwZEAAQAAAAqQEAADIAAAAsGRAAEAAAAKcBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcgogICAgewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfQogICAgCiAgICB7CiAgICAgICAgInN0YXR1cyI6IHsgIiRpbiI6IFsiYWN0aXZlIiwgInBlbmRpbmciXSB9CiAgICB9CiAgICAsGRAAEAAAAMkBAAAFAAAALBkQABAAAADHAQAAMwAAACwZEAAQAAAAxgEAADIAAAAsGRAAEAAAAMQBAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9pbl9vcGVyYXRvcl93cm9uZ190eXBlCiAgICB7CiAgICAgICAgImFnZSI6IHsgIiRpbiI6IFsidGhpcnR5IiwgImZvcnR5Il0gfQogICAgfQogICAgLBkQABAAAADiAQAABQAAACwZEAAQAAAA5AEAACsAAAAsGRAAEAAAAOMBAAAFAAAALBkQABAAAADgAQAAMwAAACwZEAAQAAAA3wEAADIAAAAsGRAAEAAAAN0BAAAxAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9zaW1wbGVfYXR0cmlidXRlc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiaWQiOiAiMTIzIiwKICAgICAgICAibmFtZSI6ICJBbGljZSIKICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgImlkIjogIjEyMyIgfSwKICAgICAgICAgICAgeyAibmFtZSI6ICJBbGljZSIgfQogICAgICAgIF0KICAgIH0sGRAAEAAAAAYCAAAFAAAALBkQABAAAAAIAgAAKgAAACwZEAAQAAAABwIAACwAAAAsGRAAEAAAAAQCAAA0AAAALBkQABAAAAD9AQAALgAAACwZEAAQAAAA+gEAAC4AAAAsGRAAEAAAAPkBAAAvAAAALBkQABAAAAD4AQAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fd2l0aF9sb2dpY2FsX29wZXJhdG9yewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAgICAgIH0KICAgIH17CiAgICAgICAgImlkIjogIjEyMyIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICB7ICJhZ2UiOiB7ICIkbHQiOiAyMCB9IH0KICAgICAgICBdCiAgICB9ewogICAgICAgICIkYW5kIjogWwogICAgICAgICAgICB7ICJpZCI6ICIxMjMiIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDIwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQAsGRAAEAAAADECAAAFAAAALBkQABAAAAAzAgAAKgAAACwZEAAQAAAAMgIAACwAAAAsGRAAEAAAAC8CAAA0AAAALBkQABAAAAAjAgAALgAAACwZEAAQAAAAIAIAAC4AAAAsGRAAEAAAAB8CAAAvAAAALBkQABAAAAAeAgAAMAAAAHJpZGJfd2FzbTo6cXVlcnk6OnRlc3RfcXVlcnlfZ2V0X3F1ZXJ5X25vcm1hbGl6YXRpb25fbmVzdGVkX2xvZ2ljYWxfb3BlcmF0b3JzewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgInN0YXR1cyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJyb2xlIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICIkb3IiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICIkYW5kIjogWwogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0ZSI6IDMwIH0gfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7ICJyb2xlIjogImFkbWluIiB9CiAgICAgICAgXQogICAgfQAAACwZEAAQAAAAYQIAAAUAAAAsGRAAEAAAAGMCAAAqAAAALBkQABAAAABiAgAALAAAACwZEAAQAAAAXwIAADQAAAAsGRAAEAAAAFMCAAAuAAAALBkQABAAAABQAgAALgAAACwZEAAQAAAATwIAAC8AAAAsGRAAEAAAAE4CAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9vbmx5X2xvZ2ljYWxfb3BlcmF0b3J7CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiYWdlIjogeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICJzY29yZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9CiAgICAgICAgfQogICAgfXsKICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgeyAiYWdlIjogeyAiJGd0IjogMTggfSB9LAogICAgICAgICAgICB7ICJzY29yZSI6IHsgIiRsdGUiOiAxMDAgfSB9CiAgICAgICAgXQogICAgfSwZEAAQAAAAhgIAAAUAAAAsGRAAEAAAAIgCAAAqAAAALBkQABAAAACHAgAALAAAACwZEAAQAAAAhAIAADQAAAAsGRAAEAAAAH0CAAAuAAAALBkQABAAAAB6AgAALgAAACwZEAAQAAAAeQIAAC8AAAAsGRAAEAAAAHgCAAAwAAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9nZXRfcXVlcnlfbm9ybWFsaXphdGlvbl9jb21wbGV4X21peGVkewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgImFnZSI6IHsgInR5cGUiOiAibnVtYmVyIiB9LAogICAgICAgICAgICAiY2l0eSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAic3RhdHVzIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9ewogICAgICAgICJuYW1lIjogIkJvYiIsCiAgICAgICAgIiRvciI6IFsKICAgICAgICAgICAgeyAiY2l0eSI6ICJOZXcgWW9yayIgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAiYWdlIjogeyAiJGx0IjogMzAgfSB9LAogICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH17CiAgICAgICAgIiRhbmQiOiBbCiAgICAgICAgICAgIHsgIm5hbWUiOiAiQm9iIiB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiJG9yIjogWwogICAgICAgICAgICAgICAgICAgIHsgImNpdHkiOiAiTmV3IFlvcmsiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiJGFuZCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgImFnZSI6IHsgIiRsdCI6IDMwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgInN0YXR1cyI6ICJhY3RpdmUiIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH0ALBkQABAAAAC9AgAABQAAACwZEAAQAAAAvwIAACoAAAAsGRAAEAAAAL4CAAAsAAAALBkQABAAAAC7AgAANAAAACwZEAAQAAAAqgIAAC4AAAAsGRAAEAAAAKcCAAAuAAAALBkQABAAAACmAgAALwAAACwZEAAQAAAApQIAADAAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX2VtcHR5X3F1ZXJ5ewogICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAicHJpbWFyeUtleSI6ICJpZCIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgImlkIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICB9CiAgICB9e30sGRAAEAAAANECAAAFAAAALBkQABAAAADPAgAAMwAAACwZEAAQAAAAzgIAAEMAAAAsGRAAEAAAAM4CAAA5AAAAcmlkYl93YXNtOjpxdWVyeTo6dGVzdF9xdWVyeV9wYXJzZV9ub25fb2JqZWN0X3F1ZXJ5bm90IGFuIG9iamVjdCwZEAAQAAAA4QIAAAUAAAAsGRAAEAAAAOMCAAArAAAA+BgQABcAAAAsGRAAEAAAAOICAAAFAAAALBkQABAAAADeAgAAQwAAACwZEAAQAAAA3gIAADkAAAByaWRiX3dhc206OnF1ZXJ5Ojp0ZXN0X3F1ZXJ5X3BhcnNlX211bHRpcGxlX29wZXJhdG9yc3sKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJhZ2UiOiB7ICJ0eXBlIjogIm51bWJlciIgfQogICAg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N2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnMAAAC9RBAAXAAAAFcAAAAKAAAAvUQQAFwAAABQAAAAMwAAAFZlYyBpcyBzaXplZCBjb25zZXJ2YXRpdmVseQA8RRAAGwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAYEUQACoAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9tb2QucnOURRAAYAAAAAEBAAAZAAAAaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIGJ1ZmZlciBzaXplAAAAlEUQAGAAAAB5AAAAEgAAAA0BAAAUAAAABAAAAA4BAABJbnZhbGlkIFVURjiURRAAYAAAAH8AAAAkAAAATWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZvcmUgbmV4dF9rZXkvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLTEuMC4yMTYvc3JjL2RlL3ZhbHVlLnJzAACcRhAAXgAAAGYFAAAbAAAAU2VyaWFsaXphdGlvbiBFcnJvcjogAAAADEcQABUAAABWYWxpZGF0aW9uIEVycm9yOiAAACxHEAASAAAAU2VyaWFsaXphdGlvbiAAAEhHEAAOAAAAY29kZW1lc3NhZ2UADwEAAAQAAAAEAAAAAwAAAEludmFsaWQgSlMgRXJyb3Igbm8gbWVzc2FnZSBpcyBhdmFpbGFibGVzcmMvZXJyb3IucnOkRxAADAAAADUAAABFAAAAc3RyaW5nbnVtYmVyYm9vbGVhbmFycmF5b2JqZWN0V3Jvbmcga2V5YW4gUHJvcGVydHlUeXBlIChTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgT2JqZWN0IG9yIEFycmF5KQBBrJDBAAuXDgEAAADWAAAAEAEAABQAAAAEAAAAEQEAABIBAAASAQAAQ3JlYXRpbmcgZG9jdW1lbnQgd2l0aCBkZWZhdWx0c0RvY3VtZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5RmFpbGVkIHRvIGNyZWF0ZSBkb2N1bWVudEFkZGluZyBkZWZhdWx0cyB0byBkb2N1bWVudERlZmF1bHRzIGFkZGVkIHN1Y2Nlc3NmdWxseVNldHRpbmcgZGVmYXVsdCBmb3Iga2V5OiDXSBAAGQAAAGRvY0NyZWF0ZUhvb2tkb2NSZWNvdmVySG9va0Vycm9yc0Vycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yABlJEAAFAAAAHkkQABIAAAAwSRAADwAAAHZhcmlhbnQgaWRlbnRpZmllcmVudW0gRXJyb3JzYXR0ZW1wdGVkIHRvIGNvbnZlcnQgaW52YWxpZCBQcm9wZXJ0eVR5cGUgaW50byBKU1ZhbHVlc3JjL3NjaGVtYS9wcm9wZXJ0eV90eXBlLnJzAACrSRAAGwAAAAcAAAABAAAAU3RyaW5nTnVtYmVyQm9vbGVhbkFycmF5T2JqZWN0X19Ob25leGhhdXN0aXZlU2NoZW1hdmVyc2lvbnByaW1hcnlLZXl0eXBlcHJvcGVydGllc2luZGV4ZXNyZXF1aXJlZGVuY3J5cHRlZHN0cnVjdCBTY2hlbWFGaWVsZCAnJyBpcyByZXF1aXJlZABPShAABwAAAFZKEAANAAAAJyBzaG91bGQgYmUgb2YgdHlwZSAnJwAAT0oQAAcAAAB0ShAAFQAAAIlKEAABAAAARmFpbGVkIHRvIGdldCBwcm9wZXJ0eSAnJzogAKRKEAAYAAAAvEoQAAMAAADYRxAABgAAAFNjaGVtYSB0eXBlIGlzIGludmFsaWQgKCIiKQDYShAAGQAAAPFKEAACAAAAC0oQAAcAAAASShAACgAAABxKEAAEAAAAIEoQAAoAAAAqShAABwAAADFKEAAIAAAAOUoQAAkAAABtYXhMZW5ndGhyaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfY3JlYXRpb257CiAgICAgICAgInZlcnNpb24iOiAxLAogICAgICAgICJwcmltYXJ5S2V5IjogImlkIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0sCiAgICAgICAgICAgICJuYW1lIjogeyJ0eXBlIjogInN0cmluZyJ9LAogICAgICAgICAgICAiYWdlIjogeyJ0eXBlIjogIm51bWJlciJ9CiAgICAgICAgfQogICAgfQAAAAEAAABpZAAAXEwQAAIAAABzcmMvc2NoZW1hL21vZC5ycwAAAGhMEAARAAAAVwEAAAUAAABoTBAAEQAAAFgBAAAFAAAAaEwQABEAAABWAQAABQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAaEwQABEAAABVAQAALwAAAGhMEAARAAAAVAEAADAAAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9zY2hlbWFfdmFsaWRhdGlvbnsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICJpZCI6IHsidHlwZSI6ICJzdHJpbmcifQogICAgICAgIH0KICAgIH1hc3NlcnRpb24gZmFpbGVkOiBzY2hlbWEuaXNfdmFsaWQoKS5pc19vaygpAABoTBAAEQAAAGcBAAAFAAAAaEwQABEAAABmAQAALwAAAGhMEAARAAAAZQEAAC8AAAByaWRiX3dhc206OnNjaGVtYTo6dGVzdF9pbnZhbGlkX3NjaGVtYXsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInByaW1hcnlLZXkiOiAiaWQiLAogICAgICAgICJ0eXBlIjogImludmFsaWQiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiaWQiOiB7InR5cGUiOiAic3RyaW5nIn0KICAgICAgICB9CiAgICB9YXNzZXJ0aW9uIGZhaWxlZDogcmVzdWx0LmlzX2VycigpAABoTBAAEQAAAHgBAAAFAAAAaEwQABEAAAB1AQAALwAAAFJldHJpZXZpbmcgY29sbGVjdGlvbnMuLi4AAAD//////////zhPEABB0J7BAAvVAkNvbGxlY3Rpb25zIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuUHJvY2Vzc2luZyBjb2xsZWN0aW9uOiAAAHNPEAAXAAAABgAAAAYAAAAHAAAABQAAAAYAAAAPAAAA2EkQAN5JEADkSRAA60kQAPBJEAD2SRAABgAAAAYAAAAHAAAABQAAAAYAAAAGAAAAwEcQAMZHEADMRxAA00cQANhHEADYRxAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIucnMA9E8QAF8AAACuAAAAFAAAADAxMjM0NTY3ODlhYmNkZWYAAAAACAAAAAQAAAAZAQAAGgEAABsBAAAcAQAAHQEAAAwAAAAEAAAAHgEAAB8BAABkAEGwocEAC/MgAQAAACABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAADvUBAASwAAAAYKAAAOAAAARXJyb3JpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAABRURAADgAAAF9REAALAAAAaW52YWxpZCB2YWx1ZTogAHxREAAPAAAAX1EQAAsAAABtaXNzaW5nIGZpZWxkIGBgnFEQAA8AAACrURAAAQAAAGludmFsaWQgbGVuZ3RoIAC8URAADwAAAF9REAALAAAAZHVwbGljYXRlIGZpZWxkIGAAAADcURAAEQAAAKtREAABAAAAdW5rbm93biB2YXJpYW50IGBgLCB0aGVyZSBhcmUgbm8gdmFyaWFudHMAAAAAUhAAEQAAABFSEAAYAAAAYCwgZXhwZWN0ZWQgAFIQABEAAAA8UhAADAAAACEBAAAEAAAABAAAAAMAAABFcnJvciBnZXR0aW5nIHByb3BlcnR5c3JjL3V0aWxzLnJzAAB+UhAADAAAAAoAAABMAAAAUGFzc3dvcmQgY2Fubm90IGJlIGVtcHR5RW5jcnlwdGlvbgAAIgEAACAAAAAEAAAAIwEAACQBAAAkAQAAIgEAACAAAAAEAAAAJQEAACYBAAAmAQAAU2NoZW1hIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZENvbnRlbnQgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkRmFpbGVkIHRvIHN0cmluZ2lmeSBlbmNyeXB0ZWQgZGF0YUZhaWxlZCB0byBjb252ZXJ0IHNlcmlhbGl6ZWQgZGF0YSB0byBzdHJpbmdGYWlsZWQgdG8gY3JlYXRlIGNpcGhlckVuY3J5cHRpb24gZmFpbGVkAQABQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////////////////////////////////////////////////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9fX2VuY3J5cHRlZGVuY3J5cHRlZCBmaWVsZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbW9kZWxwcmltYXJ5IGtleSBtdXN0IG5vdCBiZSBlbmNyeXB0ZWRDb250ZW50IG11c3QgYmUgYW4gb2JqZWN0SW52YWxpZCBlbmNyeXB0ZWQgZGF0YTogZXhwZWN0ZWQgc3RyaW5nRW5jcnlwdGVkIGRhdGEgaXMgZW1wdHlJbnZhbGlkIGJhc2U2NCBkYXRhRGVjcnlwdGlvbiBmYWlsZWRJbnZhbGlkIFVURi04IGRhdGFGYWlsZWQgdG8gcGFyc2UgZGVjcnlwdGVkIGRhdGFJbnZhbGlkIGVuY3J5cHRlZCBkYXRhIGxlbmd0aEZhaWxlZCB0byByZWFkIGVuY3J5cHRlZCBkYXRhREVCVUdyaWRiOiovVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAAA0VhAAagAAAJUAAAAOAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMzQvc3JjL3Nlci5ycwAAsFYQAF4AAAAwCAAAMwAAALBWEABeAAAAIwgAAEAAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlsFYQAF4AAAANBgAAEgAAAGZhbHNlXCJcXFxiXGZcblxyXHRdbWlkID4gbGVuAAAAfFcQAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5ycwCQVxAAXwAAAK4AAAAUAAAAAAAAAAQAAAAEAAAAkQAAAAAAAAAEAAAABAAAAJYAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwAgWBAAXwAAAEwAAAAfAAAAIFgQAF8AAABGAAAAFwAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwAAy1gQAF8AAAAWAgAALwAAAHNyYy9wbHVnaW4vaW50ZWdyaXR5L21vZC5ycwA8WRAAGwAAAA8AAABIAAAASW50ZWdyaXR5AAAAKAEAABQAAAAEAAAAKQEAACoBAAAqAQAAKAEAABQAAAAEAAAAKwEAACwBAAAsAQAAX19pbnRlZ3JpdHkAPFkQABsAAABDAAAATgAAAEVycm9yIGNvbnZlcnRpbmcgdG8gc2VyZGVfanNvbjo6VmFsdWU6IADAWRAAJwAAAEVycm9yIHNlcmlhbGl6aW5nIHNvcnRlZCBKU09OOiAA8FkQAB8AAAA8WRAAGwAAAFwAAAAzAAAALQEAAAQAAAAEAAAAAwAAADxZEAAbAAAAXQAAADQAAAA8WRAAGwAAAFsAAAA0AAAARXJyb3IgcmV0cmlldmluZyBpbnRlZ3JpdHkgdmFsdWU8WRAAGwAAAHAAAABOAAAASW50ZWdyaXR5IGNoZWNrIGZhaWxlZDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5AAAAAAAABAAAAAQAAAAuAQAAAAAAAAQAAAAEAAAALwEAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAAAAAAAQAAAAEAAAAlAAAAEVycm9yU2VyaWFsaXphdGlvbkVycm9yVmFsaWRhdGlvbkVycm9yAAAAAAAAAQAAAAEAAAAwAQAAAAAAAAQAAAAEAAAAkQAAAFJJREJFcnJvcmNvZGVtZXNzYWdlUHJvcGVydHl0eXBlaXRlbXNtYXhJdGVtc21pbkl0ZW1zcHJvcGVydGllc21heExlbmd0aG1pbkxlbmd0aGRlZmF1bHQcXBAABAAAACBcEAAFAAAAJVwQAAgAAAAtXBAACAAAADVcEAAKAAAAP1wQAAkAAABIXBAACQAAAFFcEAAHAAAAc3RydWN0IFByb3BlcnR5TWluIGhpZ2hlciB0aGFuIG1heE1pbiBwcm9wZXJ0eSBub3QgdmFsaWRJdGVtcyBpcyBlbXB0eUludmFsaWQgcHJvcGVydHkgaXRlbXNJdGVtcyBwcm9wZXJ0eSBub3QgdmFsaWQxAQAAEAAAAAQAAAAyAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXNyYy9zY2hlbWEvcHJvcGVydHkucnMAAABHXRAAFgAAAJIAAAA5AAAAUHJvcGVydGllcyBlbXB0eVByb3BlcnR5IHR5cGUgaW52YWxpZHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV9jcmVhdGlvbnsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiA1MCwKICAgICAgICAibWluTGVuZ3RoIjogMQogICAgfQAAAEddEAAWAAAAHgIAAAUAAABHXRAAFgAAAB8CAAAFAAAAMwEAAAQAAAAEAAAAAwAAAEddEAAWAAAAHwIAACYAAABHXRAAFgAAAB4CAAAmAAAAR10QABYAAAAdAgAABQAAADQBAAAEAAAABAAAADUBAABHXRAAFgAAABsCAABPAAAAR10QABYAAAAaAgAAMwAAAHJpZGJfd2FzbTo6c2NoZW1hOjpwcm9wZXJ0eTo6dGVzdF9wcm9wZXJ0eV92YWxpZGF0aW9uYXNzZXJ0aW9uIGZhaWxlZDogcHJvcGVydHkuaXNfdmFsaWQoKS5pc19vaygpAABHXRAAFgAAACwCAAAFAAAAR10QABYAAAAqAgAATwAAAEddEAAWAAAAKQIAADMAAAByaWRiX3dhc206OnNjaGVtYTo6cHJvcGVydHk6OnRlc3RfaW52YWxpZF9wcm9wZXJ0eXsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJtYXhMZW5ndGgiOiAxMCwKICAgICAgICAibWluTGVuZ3RoIjogMjAKICAgIH1hc3NlcnRpb24gZmFpbGVkOiBwcm9wZXJ0eS5pc192YWxpZCgpLmlzX2VycigpAABHXRAAFgAAADkCAAAFAAAAR10QABYAAAA3AgAATwAAAEddEAAWAAAANgIAADMAAABGYWlsZWQgdG8gc2V0IG91dGVyIG9iamVjdCBwcm9wZXJ0eUZhaWxlZCB0byBzZXQgaW5uZXIgb2JqZWN0IHByb3BlcnR5AAAFAAAAEgAAAA8AAAC4WxAAvVsQAM9bEABBcmMgY291bnRlciBvdmVyZmxvd4RgEAAUAAAAL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAAKBgEABJAAAAfwYAAA0AAAABAAAAAAAAAKBgEABJAAAAhQsAAA0AAAAAAAAA//////////8YYRAAQbDCwQAL2R1NaWdyYXRpb24AAAA3AQAAFAAAAAQAAAA4AQAAOQEAADkBAAA3AQAAFAAAAAQAAAA6AQAAOwEAADsBAABfX3ZlcnNpb25fX3ZlcnNpb24gc2hvdWxkIGJlIGEgbnVtYmVyTWlncmF0aW9uIE9iamVjdCBpcyB1bmRlZmluZWRNaWdyYXRpbmcgZnVuY3Rpb24gIHRvIHNjaGVtYSB2ZXJzaW9uIG5vdCBmb3VuZAAAAK5hEAATAAAAwWEQABwAAABFcnJvciBnZXR0aW5nIHRoZSBkb2N1bWVudCB2ZXJzaW9uLCBlcnIg8GEQACgAAABFcnJvciByZWNvdmVyaW5nIG1pZ3JhdGlvbiBmdW5jdGlvbiBmb3IgdmVyc2lvbiAgYhAAMAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbGF6eV9zdGF0aWMtMS40LjAvc3JjL2lubGluZV9sYXp5LnJzAAAAWGIQAGUAAAAeAAAAEAAAACRvciRvciBtdXN0IGJlIGFuIGFycmF5JGFuZCBtdXN0IGJlIGFuIGFycmF5RmFpbGVkIHRvIGdldCB0aGUgcXVlcnkgdmFsdWUsIGVyciAA/GIQACMAAABGYWlsZWQgdG8gZ2V0IHRoZSBkb2N1bWVudCBrZXksIGVyciAoYxAAJAAAACRndCRsdCRpblVuc3VwcG9ydGVkIG9wZXJhdG9yOiAAXWMQABYAAAAkaW4gdmFsdWUgbXVzdCBiZSBhbiBhcnJheURvY3VtZW50IHZhbHVlIGlzIG5vdCBhIG51bWJlckNvbmRpdGlvbiB2YWx1ZSBpcyBub3QgYSBudW1iZXIvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9nZW5lcmFsX3B1cnBvc2UvZGVjb2RlLnJzAADTYxAAcwAAAI0AAAAZAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZV9zdWZmaXgucnMAAFhkEAB6AAAAVAAAAAkAAABYZBAAegAAAB8AAAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmNvZGUucnP0ZBAAXAAAAIoAAAAJAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZS5ycwBgZRAAcwAAADgAAAAmAAAAYGUQAHMAAABeAAAALgAAAGBlEABzAAAAYQAAAA0AAABgZRAAcwAAAGUAAAA4AAAAYGUQAHMAAAA9AAAAJwAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjIuMS9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9tb2QucnMkZhAAcAAAAJYAAAANAAAAJGYQAHAAAACYAAAAQAAAACRmEABwAAAAlwAAAA0AAAAkZhAAcAAAAJoAAAANAAAAJGYQAHAAAACeAAAADQAAACRmEABwAAAAnwAAAA0AAAAkZhAAcAAAAIcAAAAlAAAAJGYQAHAAAACIAAAAKwAAACRmEABwAAAAQAAAABsAAAAkZhAAcAAAAEIAAAAgAAAAAAAAAAEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYva2VjY2FrLTAuMS41L3NyYy9saWIucnNBIHJvdW5kX2NvdW50IGdyZWF0ZXIgdGhhbiBLRUNDQUtfRl9ST1VORF9DT1VOVCBpcyBub3Qgc3VwcG9ydGVkIQAAAPhnEABYAAAA7gAAAAkAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguNC9zcmMvc29mdC9maXhzbGljZTMyLnJzAAAApGgQAGEAAACJBAAAEgAAAKRoEABhAAAAiQQAAD0AAACkaBAAYQAAABQFAAAiAAAApGgQAGEAAAAUBQAACQAAAEVycm9yOiAASGkQAAcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhbmRfY29yZS0wLjYuNC9zcmMvb3MucnMAAFhpEABaAAAAPwAAAA0AAABnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZXVuZXhwZWN0ZWQgc2l0dWF0aW9uU2VjUmFuZG9tQ29weUJ5dGVzOiBpT1MgU2VjdXJpdHkgZnJhbWV3b3JrIGZhaWx1cmVSdGxHZW5SYW5kb206IFdpbmRvd3Mgc3lzdGVtIGZ1bmN0aW9uIGZhaWx1cmVSRFJBTkQ6IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogQ1BVIGlzc3VlIGxpa2VseVJEUkFORDogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZFdlYiBDcnlwdG8gQVBJIGlzIHVuYXZhaWxhYmxlQ2FsbGluZyBXZWIgQVBJIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgZmFpbGVkcmFuZFNlY3VyZTogVnhXb3JrcyBSTkcgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZE5vZGUuanMgY3J5cHRvIENvbW1vbkpTIG1vZHVsZSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgTm9kZS5qcyBBUEkgY3J5cHRvLnJhbmRvbUZpbGxTeW5jIGZhaWxlZE5vZGUuanMgRVMgbW9kdWxlcyBhcmUgbm90IGRpcmVjdGx5IHN1cHBvcnRlZCwgc2VlIGh0dHBzOi8vZG9jcy5ycy9nZXRyYW5kb20jbm9kZWpzLWVzLW1vZHVsZS1zdXBwb3J0VW5rbm93biBFcnJvcjogEWwQAA8AAABPUyBFcnJvcjogAAAobBAACgAAAGNyeXB0bwAAxGkQAOtpEAARahAAJWoQAFdqEACEahAAs2oQANRqEADxahAAxGkQAMRpEAAeaxAAT2sQAHxrEACsaxAAJwAAACYAAAAUAAAAMgAAAC0AAAAvAAAAIQAAAB0AAAAtAAAAJwAAACcAAAAxAAAALQAAADAAAABlAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvcGFya2luZ19sb3QucnMAvGwQAGsAAABrAQAAFwAAALxsEABrAAAAhgEAABcAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcmtpbmdfbG90X2NvcmUtMC45LjEwL3NyYy9wYXJraW5nX2xvdC5ycwBIbRAAawAAAEoBAAAMAAAAUGFya2luZyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AAMRtEAAmAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAAD0bRAAcgAAABoAAAAJAAAA9G0QAHIAAAAeAAAACQAAAPRtEAByAAAAIgAAAAkAAAD0bRAAcgAAACYAAAAJAAAA9G0QAHIAAAAqAAAACQAAAAAAAAAIAAAABAAAAD0BAAByZWFkb25seXJlYWR3cml0ZXJlYWR3cml0ZWZsdXNoY2xlYW51cHZlcnNpb25jaGFuZ2VhdHRlbXB0ZWQgdG8gY29udmVydCBpbnZhbGlkIElkYlRyYW5zYWN0aW9uTW9kZSBpbnRvIEpTVmFsdWUvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dlYi1zeXMtMC4zLjY5L3NyYy9mZWF0dXJlcy9nZW5fSWRiVHJhbnNhY3Rpb25Nb2RlLnJzAAAAN28QAHYAAAAEAAAAAQAAAAAAAAAIAAAABAAAAD4BAAA/AQAAQAEAAEEBAABpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAAAA3G8QAA4AAADqbxAACwAAAAEAQZjgwQALwwEBAAAARQEAACBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyAQAAAAAAAAAgcBAALAAAAC9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi4zL3NyYy9saWIucnNccBAAZAAAADUAAAAOAAAA///////////QcBAAQejhwQAL1gcvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAOhwEABPAAAAyAUAABQAAADocBAATwAAAMgFAAAhAAAA6HAQAE8AAAC8BQAAIQAAAOhwEABPAAAATAQAACQAAABva0ZBSUxpZ25vcmVkaWdub3JlZCwgAACFcRAACQAAAAAAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzAJxxEABnAAAAUQIAACoAAACccRAAZwAAAE4CAAAJAAAAnHEQAGcAAAArAgAAJwAAAJxxEABnAAAALwIAACAAAACccRAAZwAAACYCAAAuAAAAnHEQAGcAAAAlAgAAKgAAAJxxEABnAAAAYQIAAB4AAACccRAAZwAAAF0CAAAlAAAAAQAAgAAAAAAAAAAAnHEQAGcAAABtAgAAFgAAAJxxEABnAAAAdQIAADUAAAAKZmFpbHVyZXM6CmZhaWx1cmVzOgpGQUlMRUR0ZXN0IHJlc3VsdDogLiAgcGFzc2VkOyAgZmFpbGVkOyAgaWdub3JlZDsgIGZpbHRlcmVkIG91dArLchAADQAAANhyEAACAAAA2nIQAAkAAADjchAACQAAAOxyEAAKAAAA9nIQAA4AAAAgICAgNHMQAAQAAACccRAAZwAAAHwCAAAmAAAAIG91dHB1dDoKbm90ZTogIGRpZCBub3QgcGFuaWMgYXMgZXhwZWN0ZWQKCgBZcxAABgAAAF9zEAAcAAAAbm90ZTogcGFuaWMgZGlkIG5vdCBjb250YWluIGV4cGVjdGVkIHN0cmluZwogICAgICBwYW5pYyBtZXNzYWdlOiBgIiJgLAoAuHMQABcAAADPcxAABAAAAJxxEABnAAAAsAIAACcAAACccRAAZwAAALACAAAwAAAAIGV4cGVjdGVkIHN1YnN0cmluZzogYCIiYAoKAAR0EAAXAAAAG3QQAAQAAABkZWJ1Z2xvZ2luZm93YXJuZXJyb3JKUyBleGNlcHRpb24gdGhhdCB3YXMgdGhyb3duOgotLS0tICBvdXRwdXQgLS0tLQoAAABjdBAABQAAAGh0EAANAAAAnHEQAGcAAACiAgAAIgAAAJxxEABnAAAABgEAABIAAABKAQAABAAAAAQAAABLAQAATAEAAE0BAEHI6cEACw4BAAAATgEAAE8BAABQAQBB4OnBAAudBgEAAABRAQAAUgEAAFMBAACccRAAZwAAADMBAAAnAAAALS1pbmNsdWRlLWlnbm9yZWQtLXNraXAtLXNraXA9bW9yZSB0aGFuIG9uZSBmaWx0ZXIgYXJndW1lbnQgY2Fubm90IGJlIHBhc3NlZJxxEABnAAAAQgEAABEAAABmbGFnICBub3Qgc3VwcG9ydGVkAFx1EAAFAAAAYXUQAA4AAACccRAAZwAAAEABAAARAAAAQXJndW1lbnQgdG8gb3B0aW9uICdza2lwJyBtaXNzaW5nAAAAnHEQAGcAAAA5AQAAGgAAAJxxEABnAAAAOwEAABoAAACccRAAZwAAAC4BAAAoAAAAnHEQAGcAAAAtAQAALAAAAHRlc3R0ZXN0c3J1bm5pbmcgIAAA/XUQAAgAAAAFdhAAAQAAAGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY3JlYXRpbmcgYSB0ZXN0OiAYdhAAKAAAAJxxEABnAAAAYgEAABUAAABUAQAAWHYQAC9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAYHYQAE8AAADIBQAAFAAAAGB2EABPAAAAyAUAACEAAABgdhAATwAAALwFAAAhAAAAVwEAAAwAAAAEAAAAWAEAAFkBAABaAQAAYHYQAE8AAABMBAAAJAAAAHRlc3QgIC4uLiAAAAh3EAAFAAAADXcQAAUAAAA6IAAAAQAAAAAAAAAkdxAAAgAAAAoAAAABAAAAAAAAADh3EAABAAAAYHVud3JhcF90aHJvd2AgZmFpbGVkAAAAAAAAAAQAAAAEAAAAWwEAAFwBAABdAQAAJAAAAAQAAABeAQAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwCIdxAAZwAAAN0AAAAVAEGI8MEAC4IGAQAAAI4AAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uL3J1c3RjLzgwZWI1YThlOTEwZTUxODVkNDdjZGVmZTM3MzJkODM5Yzc4YTVlN2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAAAFZ4EABPAAAABAEAABoAAAB0ZXN0ICAuLi4gAAC4eBAABQAAAL14EAAFAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tdGVzdC0wLjMuNDIvc3JjL3J0L21vZC5ycwDUeBAAZwAAAG4BAAAbAAAAY2Fubm90IGFjY2VzcyBhIHNjb3BlZCB0aHJlYWQgbG9jYWwgdmFyaWFibGUgd2l0aG91dCBjYWxsaW5nIGBzZXRgIGZpcnN0L1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zY29wZWQtdGxzLTEuMC4xL3NyYy9saWIucnOUeRAAXAAAAKgAAAAJAAAAAAAAAAQAAAAEAAAAXwEAAEVycm9yAAAAAAAAAAQAAAAEAAAAYAEAAGEBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi10ZXN0LTAuMy40Mi9zcmMvcnQvbW9kLnJzACx6EABnAAAApgEAAB4AAAAAAAAABAAAAAQAAABgAQAAYQEAAAAAAAAEAAAABAAAAGABAABhAQAAAAAAAAQAAAAEAAAAYAEAAGEBAAAAAAAABAAAAAQAAABgAQAAYQEAAGIBAAAMAAAABAAAAGMBAABkAQAAWgEAQZT2wQALoQQBAAAAZQEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAFN7EABLAAAABgoAAA4AAAAsehAAZwAAAAkBAAAtAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTyexAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5JHwQADgAAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzZHwQAEwAAACeAAAAMgAAAAAAAAAIAAAABAAAAGYBAABnAQAAaAEAAGkBAAAAAAAACAAAAAQAAABqAQAARGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZQBBwPrBAAuSAgEAAABrAQAAbAEAAGwBAAAvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAFB9EABPAAAAyAUAABQAAABQfRAATwAAAMgFAAAhAAAAUH0QAE8AAAC8BQAAIQAAAFB9EABPAAAATAQAACQAAABvdXRwdXR0ZXN0ICAuLi4g5n0QAAUAAADrfRAABQAAADogAAABAAAAAAAAAAB+EAACAAAACgAAAAEAAAAAAAAAFH4QAAEAAABFcnJvcgAAAG4BAAAMAAAABAAAAG8BAABwAQAAcQEAAAoKU3RhY2s6CgoAQdz8wQALmQEBAAAAcgEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAJt+EABLAAAABgoAAA4AQYD+wQALtQ0BAAAAjgAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvODBlYjVhOGU5MTBlNTE4NWQ0N2NkZWZlMzczMmQ4MzljNzhhNWU3ZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAATn8QAE8AAAAEAQAAGgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAAB3AQAABAAAAAQAAAB4AQAAeQEAAHoBAAAEAAAABAAAAHsBAAB8AQAAegEAAAQAAAAEAAAAfQEAAH4BAABGbk9uY2UgY2FsbGVkIG1vcmUgdGhhbiBvbmNlL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL3F1ZXVlLnJzAAAAPIAQAGkAAAAoAAAAKQAAADyAEABpAAAAJQAAAC4AAAA8gBAAaQAAAD4AAAAaAAAAL1VzZXJzL3JpYm8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNDIvc3JjL2xpYi5ycwDYgBAAZwAAAKgAAAAPAAAA2IAQAGcAAACIAAAAJwAAANiAEABnAAAAsgAAACQAAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC40Mi9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAAB/AQAAgAEAAIEBAACCAQAAcIEQAHUAAABmAAAAJQAAAHJldHVybiB0aGlzYHVud3JhcF90aHJvd2AgZmFpbGVkY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRKc1ZhbHVlKCkAWoIQAAgAAABighAAAQAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3RFcnJvci9ydXN0Yy84MGViNWE4ZTkxMGU1MTg1ZDQ3Y2RlZmUzNzMyZDgzOWM3OGE1ZTdlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5yc0VPRiB3aGlsZSBwYXJzaW5nIGEgbGlzdEVPRiB3aGlsZSBwYXJzaW5nIGFuIG9iamVjdEVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nRU9GIHdoaWxlIHBhcnNpbmcgYSB2YWx1ZWV4cGVjdGVkIGA6YGV4cGVjdGVkIGAsYCBvciBgXWBleHBlY3RlZCBgLGAgb3IgYH1gZXhwZWN0ZWQgaWRlbnRleHBlY3RlZCB2YWx1ZWV4cGVjdGVkIGAiYGludmFsaWQgZXNjYXBlaW52YWxpZCBudW1iZXJudW1iZXIgb3V0IG9mIHJhbmdlaW52YWxpZCB1bmljb2RlIGNvZGUgcG9pbnRjb250cm9sIGNoYXJhY3RlciAoXHUwMDAwLVx1MDAxRikgZm91bmQgd2hpbGUgcGFyc2luZyBhIHN0cmluZ2tleSBtdXN0IGJlIGEgc3RyaW5naW52YWxpZCB2YWx1ZTogZXhwZWN0ZWQga2V5IHRvIGJlIGEgbnVtYmVyIGluIHF1b3Rlc2Zsb2F0IGtleSBtdXN0IGJlIGZpbml0ZSAoZ290IE5hTiBvciArLy1pbmYpbG9uZSBsZWFkaW5nIHN1cnJvZ2F0ZSBpbiBoZXggZXNjYXBldHJhaWxpbmcgY29tbWF0cmFpbGluZyBjaGFyYWN0ZXJzdW5leHBlY3RlZCBlbmQgb2YgaGV4IGVzY2FwZXJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZAAAkQEAAAwAAAAEAAAAkgEAAJMBAACUAQAARXJyb3IoLCBsaW5lOiAsIGNvbHVtbjogKQAAAHyFEAAGAAAAgoUQAAgAAACKhRAACgAAAJSFEAABAEHAi8IAC5sLAQAAAJUBAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AOOCEABLAAAABgoAAA4AAACWAQAADAAAAAQAAACXAQAAmAEAAJQBAAAvVXNlcnMvcmliby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjEzNC9zcmMvcmVhZC5ycwAohhAAXwAAAKABAABFAAAAKIYQAF8AAAClAQAAPQAAACiGEABfAAAArQEAABoAAAAohhAAXwAAAPoBAAATAAAAKIYQAF8AAAD/AQAAMwAAACiGEABfAAAAAwIAAD4AAAAohhAAXwAAAAkCAAA6AAAAKIYQAF8AAABoAgAAGQAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAQACAAMABAAFAAYABwAIAAkA//////////////////8KAAsADAANAA4ADwD/////////////////////////////////////////////////////////////////////CgALAAwADQAOAA8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAQACAAMABAAFAAYABwAIAAkAD//////////////////6AAsADAANAA4ADwAP////////////////////////////////////////////////////////////////////+gALAAwADQAOAA8AD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9hbnkgdmFsaWQgSlNPTiB2YWx1ZWEgc3RyaW5nIGtleTAxMjM0NTY3ODlhYmNkZWZ1dXV1dXV1dWJ0bnVmcnV1dXV1dXV1dXV1dXV1dXV1dQAAIgBBlJfCAAsB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bHVlT3B0aW9uIHZhbHVlbmV3dHlwZSBzdHJ1Y3RzZXF1ZW5jZW1hcGVudW11bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnRleHBsaWNpdCBwYW5pYy9Vc2Vycy9yaWJvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtMS4wLjIxNi9zcmMvZGUvbW9kLnJzAL/BEABcAAAA6wgAABIAAADPwBAAAQAAAM/AEAABAAAAYCBvciBgAADPwBAAAQAAADzCEAAGAAAAz8AQAAEAAABvbmUgb2YgLCAAAAABAAAAAAAAAC4waTMyAAAAqwEAAAwAAAAEAAAArAEAAK0BAACuAQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAJDCEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAACQwhAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3IAAQAAAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZp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OiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAWNYQACAAAAB41hAAEgAAAAAAAAAEAAAABAAAAMYBAAA9PSE9bWF0Y2hlc2Fzc2VydGlvbiBgbGVmdCAgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IAogcmlnaHQ6IAC31hAAEAAAAMfWEAAXAAAA3tYQAAkAAAAgcmlnaHRgIGZhaWxlZDogCiAgbGVmdDogAAAAt9YQABAAAAAA1xAAEAAAABDXEAAJAAAA3tYQAAkAAAA6IAAAAQAAAAAAAAA81xAAAgAAAAAAAAAMAAAABAAAAMcBAADIAQAAyQEAACAgICAgeyAsICB7CiwKfSB9KCgKLApdY29yZS9zcmMvZm10L251bS5ycwAAf9cQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY29yZS9zcmMvZm10L21vZC5yc2ZhbHNldHJ1ZQAArtgQABMAAACWCQAAJgAAAK7YEAATAAAAnwkAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVy7NgQAEwAAABjb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAQNkQACcAAABbAwAABQAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCB42RAAEgAAAIrZEAAiAAAAcmFuZ2UgZW5kIGluZGV4ILzZEAAQAAAAitkQACIAAABzbGljZSBpbmRleCBzdGFydHMg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", "base64"); - -// src/index.ts -init_ridb_wasm(); -var internal; -var StorageType = /* @__PURE__ */ ((StorageType2) => { - StorageType2["InMemory"] = "InMemory"; - StorageType2["IndexDB"] = "IndexDB"; - return StorageType2; -})(StorageType || {}); -var RIDB = class _RIDB { - schemas; - migrations; - plugins = []; - _db; - dbName; - /** - * Creates an instance of RIDB. - * @param options - */ - constructor(options) { - const { - dbName, - schemas, - migrations = {}, - plugins = [] - } = options; - this.schemas = schemas; - this.plugins = plugins; - this.migrations = migrations; - this.dbName = dbName; - } - getStorageType(storageType) { - return storageType === "InMemory" /* InMemory */ ? internal.InMemory : internal.IndexDB; - } - /** - * Gets the database instance. Throws an error if the database has not been started. - * @throws Will throw an error if the database is not started. - * @private - */ - get db() { - if (!this._db) { - throw new Error("Start the database first"); - } - return this._db; - } - get started() { - return this._db?.started ?? false; - } - /** - * Gets the collections from the database. - * @returns The collections object. - */ - get collections() { - return this.db.collections; - } - /** - * Loads the RIDB Rust module. - * @returns {Promise} A promise that resolves to the RIDB Rust module. - * @private - */ - static async load() { - internal ??= await Promise.resolve().then(() => (init_ridb_wasm(), ridb_wasm_exports)).then(async (module2) => { - const wasmInstance = module2.initSync(ridb_wasm_bg_default); - await module2.default(wasmInstance); - return module2; - }); - return internal; - } - /** - * Starts the database. - * @returns {Promise>} A promise that resolves to the database instance. - * @param options - */ - async start(options) { - if (!this._db) { - const { storageType, password } = options ?? {}; - const { Database: Database2 } = await _RIDB.load(); - const StorageClass = typeof storageType === "string" ? this.getStorageType(storageType) : storageType ?? void 0; - if (StorageClass && !StorageClass.create) { - throw new Error("Your storage does not have an async create function, please check documentation"); - } - const storage = StorageClass ? await StorageClass.create(this.dbName, this.schemas, options) : void 0; - this._db ??= await Database2.create( - this.dbName, - this.schemas, - this.migrations, - this.plugins, - { - apply: (plugins = []) => plugins.map((Plugin) => new Plugin()) - }, - password, - storage - ); - } else { - await this.db.start(); - } - return this.db; - } - async close() { - await this.db.close(); - this._db = void 0; - debugger; - } -}; -var SchemaFieldType = { - string: "string", - number: "number", - boolean: "boolean", - array: "array", - object: "object" -}; -export { - BasePlugin, - BaseStorage, - Collection, - Database, - OpType, - Operation, - Property, - Query, - RIDB, - Schema, - SchemaFieldType, - StorageType -}; diff --git a/packages/ridb/build/index.d.ts b/packages/ridb/build/index.d.ts index f2a8b65..92f0507 100644 --- a/packages/ridb/build/index.d.ts +++ b/packages/ridb/build/index.d.ts @@ -1,440 +1,7 @@ // Generated by dts-bundle-generator v9.5.1 -/** -* Represents the type of operation to be performed on the collection. -*/ -export enum OpType { - /** - * Create operation. - */ - CREATE = 0, - /** - * Update operation. - */ - UPDATE = 1, - /** - * Delete operation. - */ - DELETE = 2, - /** - * Query Operation. - */ - QUERY = 3, - /** - * Count Operation. - */ - COUNT = 4 -} -export type Operators = { - $gte?: number; - $gt?: number; - $lt?: number; - $lte?: number; -}; -export type InOperator = { - $in?: T[]; -}; -export type OperatorOrType = T extends number ? T | Operators | InOperator : T | InOperator; -export type LogicalOperators = { - $and?: Partial>[]; - $or?: Partial>[]; -}; -export type QueryType = Partial<{ - [K in keyof T["properties"]]: OperatorOrType>; -}> & LogicalOperators | LogicalOperators[]; -export class Query { - constructor(query: QueryType, schema: Schema); - readonly query: QueryType; -} -//test -export type BaseStorageOptions = { - [name: string]: string | boolean | number; -}; -export class BaseStorage extends StorageInternal { - static create(dbName: string, schemas: SchemasCreate, options?: BaseStorageOptions): Promise>; - constructor(dbName: string, schemas: Schemas, options?: BaseStorageOptions); - readonly dbName: string; - readonly schemas: Record>; - readonly options: BaseStorageOptions; - readonly core: CoreStorage; - start(): Promise; - close(): Promise; - count(colectionName: keyof Schemas, query: QueryType): Promise; - findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; - find(collectionName: keyof Schemas, query: QueryType): Promise[]>; - write(op: Operation): Promise>; - getOption(name: string): string | boolean | number | undefined; - getSchema(name: string): Schema; -} -/** - * Represents the type definition for a schema. - */ -export type SchemaType = { - /** - * The version of the schema. - */ - readonly version: number; - /** - * The primary key of the schema. - */ - readonly primaryKey: string; - /** - * The type of the schema. - */ - readonly type: string; - /** - * An optional array of required fields. - */ - readonly required?: string[]; - /** - * An optional array of indexes. - */ - readonly indexes?: string[]; - readonly encrypted?: string[]; - /** - * The properties defined in the schema. - */ - readonly properties: { - [name: string]: Property; - }; -}; -/** - * Represents a schema, including its definition and related methods. - * - * @template T - The schema type. - */ -export class Schema { - /** - * The schema definition. - */ - schema: Schema; - /** - * Creates a new `Schema` instance from the provided definition. - * - * @template TS - The schema type. - * @param {TS} defi, Debugnition - The schema definition. - * @returns {Schema} The created `Schema` instance. - */ - static create(definition: TS): Schema; - /** - * The version of the schema. - */ - readonly version: number; - /** - * The primary key of the schema. - */ - readonly primaryKey: string; - /** - * The type of the schema. - */ - readonly type: string; - /** - * An optional array of indexes. - */ - readonly indexes?: string[]; - readonly required?: string[]; - readonly encrypted?: string[]; - /** - * The properties defined in the schema. - */ - readonly properties: { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: T["properties"][K]; - } & { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: T["properties"][K]; - }; - /** - * Converts the schema to a JSON representation. - * - * @returns {SchemaType} The JSON representation of the schema. - */ - toJSON(): SchemaType; -} -/** - * Represents a database containing collections of documents. - * RIDB extends from this class and is used to expose collections. - * - * So if you specify: - * ```typescript - * const db = new RIDB( - * { - * schemas: { - * demo: { - * version: 0, - * primaryKey: 'id', - * type: SchemaFieldType.object, - * properties: { - * id: { - * type: SchemaFieldType.string, - * maxLength: 60 - * } - * } - * } - * } as const - * } - * ) - * ``` - * - * The collection will be available as `db.collections.demo` and all the methods for the collection (find, count, findById, update, create, delete) will be available. - * - * @template T - A record of schema types. - */ -export class Database { - /** - * Creates a new `Database` instance with the provided schemas and storage module. - * - * @template TS - A record of schema types. - * @param {TS} schemas - The schemas to use for the collections. - * @param migrations - * @param plugins - * @param options - * @param password - * @returns {Promise>} A promise that resolves to the created `Database` instance. - */ - static create(db_name: string, schemas: TS, migrations: MigrationPathsForSchemas | MigrationPathsForSchema, plugins: Array, options: RIDBModule, password?: string, storage?: BaseStorage): Promise>; - /** - * The collections in the database. - * - * This is a read-only property where the key is the name of the collection and the value is a `Collection` instance. - */ - readonly collections: { - [name in keyof T]: Collection>; - }; - readonly started: boolean; - /** - * Starts the database. - * - * @returns {Promise} A promise that resolves when the database is started. - */ - start(): Promise; - /** - * Closes the database. - * - * @returns {Promise} A promise that resolves when the database is closed. - */ - close(): Promise; -} -/** - * Represents a function type for creating storage with the provided schema type records. - * - * @template T - The schema type record. - * @param {T} records - The schema type records. - * @returns {Promise} A promise that resolves to the created internals record. - */ -export type CreateStorage = (records: T) => Promise>; -/** - * Represents a storage module with a method for creating storage. - */ -export type RIDBModule = { - /** - * Plugin constructors array - */ - apply: (plugins: Array) => Array; -}; -/** - * Represents an operation to be performed on a collection. - * - * @template T - The schema type of the collection. - */ -export type Operation = { - /** - * The name of the collection on which the operation will be performed. - */ - collection: string; - /** - * The type of operation to be performed (e.g., CREATE, UPDATE, DELETE). - */ - opType: OpType; - /** - * The data involved in the operation, conforming to the schema type. - */ - data: Doc; - /** - * An array of indexes related to the operation. - */ - indexes: Array; -}; -export type Hook = (schema: Schema, migration: MigrationPathsForSchema, doc: Doc) => Doc; -export type BasePluginOptions = { - docCreateHook?: Hook; - docRecoverHook?: Hook; -}; -export class BasePlugin implements BasePluginOptions { - docCreateHook?: Hook; - docRecoverHook?: Hook; -} -/** - * Represents a property within a schema, including various constraints and nested properties. - */ -export class Property { - /** - * The type of the property. - */ - readonly type: string; - /** - * The version of the property, if applicable. - */ - readonly version?: number; - /** - * The primary key of the property, if applicable. - */ - readonly primaryKey?: string; - /** - * An optional array of nested properties for array-type properties. - */ - readonly items?: Property[]; - /** - * The maximum number of items for array-type properties, if applicable. - */ - readonly maxItems?: number; - /** - * The minimum number of items for array-type properties, if applicable. - */ - readonly minItems?: number; - /** - * The maximum length for string-type properties, if applicable. - */ - readonly maxLength?: number; - /** - * The minimum length for string-type properties, if applicable. - */ - readonly minLength?: number; - /** - * An optional array of required fields for object-type properties. - */ - readonly required?: boolean; - /** - * An optional default value for the property. - */ - readonly default?: any; - /** - * An optional map of nested properties for object-type properties. - */ - readonly properties?: { - [name: string]: Property; - }; -} -export type InternalsRecord = { - [name: string]: BaseStorage; -}; -/** - * ExtractType is a utility type that maps a string representing a basic data type to the actual TypeScript type. - * - * @template T - A string literal type representing the basic data type ('string', 'number', 'boolean', 'object', 'array'). - * - * @example - * type StringType = ExtractType<'string'>; // StringType is string - * type NumberType = ExtractType<'number'>; // NumberType is number - * type BooleanType = ExtractType<'boolean'>; // BooleanType is boolean - * type ObjectType = ExtractType<'object'>; // ObjectType is object - * type ArrayType = ExtractType<'array'>; // ArrayType is Array - */ -export type ExtractType = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "object" ? object : T extends "array" ? Array : never; -/** - * Doc is a utility type that transforms a schema type into a document type where each property is mapped to its extracted type. - * - * @template T - A schema type with a 'properties' field where each property's type is represented as a string. - * - * type Document = Doc; // Document is { name: string; age: number; } - */ -export type Doc = { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false | (T["properties"][K]["default"] extends undefined ? true : false) ? K : never]?: ExtractType; -} & { - [K in keyof T["properties"] as T["properties"][K]["required"] extends false ? never : K]: ExtractType; -} & { - __version?: number; -}; -/** - * Collection is a class that represents a collection of documents in a database. - * @template T - A schema type defining the structure of the documents in the collection. - */ -export class Collection { - /** - * Finds all documents in the collection. - * - * @returns A promise that resolves to an array of documents. - */ - find(query: QueryType): Promise[]>; - /** - * count all documents in the collection. - * - * @returns A promise that resolves to an array of documents. - */ - count(query: QueryType): Promise; - /** - * Finds a single document in the collection by its ID. - * - * @param id - The ID of the document to find. - * @returns A promise that resolves to the found document. - */ - findById(id: string): Promise>; - /** - * Updates a document in the collection by its ID. - * - * @param id - The ID of the document to update. - * @param document - A partial document containing the fields to update. - * @returns A promise that resolves when the update is complete. - */ - update(document: Partial>): Promise; - /** - * Creates a new document in the collection. - * - * @param document - The document to create. - * @returns A promise that resolves to the created document. - */ - create(document: Doc): Promise>; - /** - * Deletes a document in the collection by its ID. - * - * @param id - The ID of the document to delete. - * @returns A promise that resolves when the deletion is complete. - */ - delete(id: string): Promise; -} -/** - * Represents a record of schema types, where each key is a string and the value is a `SchemaType`. - */ -export type SchemaTypeRecord = { - [name: string]: SchemaType; -}; -export abstract class StorageInternal { - constructor(name: string, schemas: Schemas); - abstract start(): Promise; - abstract close(): Promise; - abstract count(colectionName: keyof Schemas, query: QueryType): Promise; - abstract findDocumentById(collectionName: keyof Schemas, id: string): Promise | null>; - abstract find(collectionName: keyof Schemas, query: QueryType): Promise[]>; - abstract write(op: Operation): Promise>; -} -declare class CoreStorage { - /** - * @param {any} document - * @param {Query} query - * @returns {boolean} - */ - matchesQuery(document: any, query: Query): boolean; -} -export type EnumerateUpTo = Acc["length"] extends N ? Acc[number] : EnumerateUpTo; -export type EnumerateFrom1To = Exclude, 0> | (N extends 0 ? never : N); -export type IsVersionGreaterThan0 = V extends 0 ? false : true; -export type AnyVersionGreaterThan1> = true extends { - [K in keyof T]: IsVersionGreaterThan0; -}[keyof T] ? true : false; -export type MigrationFunction = (doc: Doc) => Doc; -export type MigrationPathsForSchema = T["version"] extends 0 ? {} : { - [K in EnumerateFrom1To]: MigrationFunction; -}; -export type MigrationPathsForSchemas = { - [K in keyof T]: MigrationPathsForSchema; -}; -export type MigrationsParameter = AnyVersionGreaterThan1 extends true ? { - migrations: MigrationPathsForSchemas; -} : { - migrations?: never; -}; +import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Collection, CreateStorage, Database, Doc, EnumerateFrom1To, EnumerateUpTo, ExtractType, Hook, InOperator, InternalsRecord, IsVersionGreaterThan0, LogicalOperators, MigrationFunction, MigrationPathsForSchema, MigrationPathsForSchemas, MigrationsParameter, OpType, Operation, OperatorOrType, Operators, Property, Query, QueryType, RIDBModule, Schema, SchemaType, SchemaTypeRecord, StorageInternal } from '@trust0/ridb-wasm'; + /** * Represents a RIDB (Rust IndexedDB) instance. * This is the main class exposed by the RIDB Storage sdk and is used to create a database instance. @@ -583,4 +150,39 @@ export declare const SchemaFieldType: { object: "object"; }; +export { + AnyVersionGreaterThan1, + BasePlugin, + BasePluginOptions, + BaseStorage, + Collection, + CreateStorage, + Database, + Doc, + EnumerateFrom1To, + EnumerateUpTo, + ExtractType, + Hook, + InOperator, + InternalsRecord, + IsVersionGreaterThan0, + LogicalOperators, + MigrationFunction, + MigrationPathsForSchema, + MigrationPathsForSchemas, + MigrationsParameter, + OpType, + Operation, + OperatorOrType, + Operators, + Property, + Query, + QueryType, + RIDBModule, + Schema, + SchemaType, + SchemaTypeRecord, + StorageInternal, +}; + export {}; diff --git a/packages/ridb/node_modules/.vite/deps/_metadata.json b/packages/ridb/node_modules/.vite/deps/_metadata.json deleted file mode 100644 index 70348aa..0000000 --- a/packages/ridb/node_modules/.vite/deps/_metadata.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "hash": "3e7d26d0", - "configHash": "2785a279", - "lockfileHash": "19689253", - "browserHash": "7f95c2ee", - "optimized": { - "vitest > @vitest/utils > pretty-format": { - "src": "../../../../../node_modules/pretty-format/build/index.js", - "file": "vitest___@vitest_utils___pretty-format.js", - "fileHash": "ccbdf8ae", - "needsInterop": true - }, - "vitest > @vitest/snapshot > pretty-format": { - "src": "../../../../../node_modules/pretty-format/build/index.js", - "file": "vitest___@vitest_snapshot___pretty-format.js", - "fileHash": "8b12dc80", - "needsInterop": true - }, - "vitest > @vitest/snapshot > magic-string": { - "src": "../../../../../node_modules/magic-string/dist/magic-string.es.mjs", - "file": "vitest___@vitest_snapshot___magic-string.js", - "fileHash": "1415ee1c", - "needsInterop": false - }, - "vitest > diff-sequences": { - "src": "../../../../../node_modules/diff-sequences/build/index.js", - "file": "vitest___diff-sequences.js", - "fileHash": "b139d3bb", - "needsInterop": true - }, - "vitest > pretty-format": { - "src": "../../../../../node_modules/pretty-format/build/index.js", - "file": "vitest___pretty-format.js", - "fileHash": "371b2a76", - "needsInterop": true - }, - "vitest > pretty-format > ansi-styles": { - "src": "../../../../../node_modules/ansi-styles/index.js", - "file": "vitest___pretty-format___ansi-styles.js", - "fileHash": "0b82a3e7", - "needsInterop": true - }, - "vitest > pretty-format > ansi-regex": { - "src": "../../../../../node_modules/ansi-regex/index.js", - "file": "vitest___pretty-format___ansi-regex.js", - "fileHash": "594d2a68", - "needsInterop": false - }, - "vitest > chai": { - "src": "../../../../../node_modules/chai/index.mjs", - "file": "vitest___chai.js", - "fileHash": "a66f93aa", - "needsInterop": false - }, - "buffer": { - "src": "../../../../../node_modules/buffer/index.js", - "file": "buffer.js", - "fileHash": "b6aa9621", - "needsInterop": true - }, - "uuid": { - "src": "../../../../../node_modules/uuid/dist/esm-browser/index.js", - "file": "uuid.js", - "fileHash": "459bf568", - "needsInterop": false - } - }, - "chunks": { - "chunk-UCU27OGC": { - "file": "chunk-UCU27OGC.js" - }, - "chunk-UJ726J2L": { - "file": "chunk-UJ726J2L.js" - }, - "chunk-5WRI5ZAA": { - "file": "chunk-5WRI5ZAA.js" - } - } -} \ No newline at end of file diff --git a/packages/ridb/node_modules/.vite/deps/buffer.js b/packages/ridb/node_modules/.vite/deps/buffer.js deleted file mode 100644 index c848375..0000000 --- a/packages/ridb/node_modules/.vite/deps/buffer.js +++ /dev/null @@ -1,1793 +0,0 @@ -import { - __commonJS -} from "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/base64-js/index.js -var require_base64_js = __commonJS({ - "../../node_modules/base64-js/index.js"(exports) { - "use strict"; - exports.byteLength = byteLength; - exports.toByteArray = toByteArray; - exports.fromByteArray = fromByteArray; - var lookup = []; - var revLookup = []; - var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; - var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - for (i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; - } - var i; - var len; - revLookup["-".charCodeAt(0)] = 62; - revLookup["_".charCodeAt(0)] = 63; - function getLens(b64) { - var len2 = b64.length; - if (len2 % 4 > 0) { - throw new Error("Invalid string. Length must be a multiple of 4"); - } - var validLen = b64.indexOf("="); - if (validLen === -1) validLen = len2; - var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; - return [validLen, placeHoldersLen]; - } - 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; - var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; - var i2; - for (i2 = 0; i2 < len2; i2 += 4) { - tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)]; - arr[curByte++] = tmp >> 16 & 255; - arr[curByte++] = tmp >> 8 & 255; - arr[curByte++] = tmp & 255; - } - if (placeHoldersLen === 2) { - tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4; - arr[curByte++] = tmp & 255; - } - if (placeHoldersLen === 1) { - tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2; - arr[curByte++] = tmp >> 8 & 255; - arr[curByte++] = tmp & 255; - } - return arr; - } - function tripletToBase64(num) { - return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; - } - function encodeChunk(uint8, start, end) { - var tmp; - var output = []; - for (var i2 = start; i2 < end; i2 += 3) { - tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255); - output.push(tripletToBase64(tmp)); - } - return output.join(""); - } - function fromByteArray(uint8) { - var tmp; - var len2 = uint8.length; - var extraBytes = len2 % 3; - var parts = []; - var maxChunkLength = 16383; - for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) { - parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength)); - } - if (extraBytes === 1) { - tmp = uint8[len2 - 1]; - parts.push( - lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" - ); - } else if (extraBytes === 2) { - tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; - parts.push( - lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" - ); - } - return parts.join(""); - } - } -}); - -// ../../node_modules/ieee754/index.js -var require_ieee754 = __commonJS({ - "../../node_modules/ieee754/index.js"(exports) { - exports.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); - }; - exports.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 & 255, i += d, m /= 256, mLen -= 8) { - } - e = e << mLen | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) { - } - buffer[offset + i - d] |= s * 128; - }; - } -}); - -// ../../node_modules/buffer/index.js -var require_buffer = __commonJS({ - "../../node_modules/buffer/index.js"(exports) { - var base64 = require_base64_js(); - var ieee754 = require_ieee754(); - var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; - exports.Buffer = Buffer; - exports.SlowBuffer = SlowBuffer; - exports.INSPECT_MAX_BYTES = 50; - var K_MAX_LENGTH = 2147483647; - exports.kMaxLength = K_MAX_LENGTH; - 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() { - 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 void 0; - return this.buffer; - } - }); - Object.defineProperty(Buffer.prototype, "offset", { - enumerable: true, - get: function() { - if (!Buffer.isBuffer(this)) return void 0; - return this.byteOffset; - } - }); - function createBuffer(length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"'); - } - const buf = new Uint8Array(length); - Object.setPrototypeOf(buf, Buffer.prototype); - return buf; - } - function Buffer(arg, encodingOrOffset, length) { - 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; - 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 - ); - } - Buffer.from = function(value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length); - }; - 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 !== void 0) { - return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); - } - return createBuffer(size); - } - Buffer.alloc = function(size, fill, encoding) { - return alloc(size, fill, encoding); - }; - function allocUnsafe(size) { - assertSize(size); - return createBuffer(size < 0 ? 0 : checked(size) | 0); - } - Buffer.allocUnsafe = function(size) { - return allocUnsafe(size); - }; - 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) { - 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 === void 0 && length === void 0) { - buf = new Uint8Array(array); - } else if (length === void 0) { - buf = new Uint8Array(array, byteOffset); - } else { - buf = new Uint8Array(array, byteOffset, length); - } - 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 !== void 0) { - 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) { - 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) { - length = 0; - } - return Buffer.alloc(+length); - } - Buffer.isBuffer = function isBuffer(b) { - return b != null && b._isBuffer === true && b !== Buffer.prototype; - }; - 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 === void 0) { - 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; - 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; - } - encoding = ("" + encoding).toLowerCase(); - loweredCase = true; - } - } - } - Buffer.byteLength = byteLength; - function slowToString(encoding, start, end) { - let loweredCase = false; - if (start === void 0 || start < 0) { - start = 0; - } - if (start > this.length) { - return ""; - } - if (end === void 0 || end > this.length) { - end = this.length; - } - if (end <= 0) { - return ""; - } - 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; - } - } - } - 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 = exports.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 === void 0) { - start = 0; - } - if (end === void 0) { - end = target ? target.length : 0; - } - if (thisStart === void 0) { - thisStart = 0; - } - if (thisEnd === void 0) { - 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; - }; - function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { - if (buffer.length === 0) return -1; - if (typeof byteOffset === "string") { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 2147483647) { - byteOffset = 2147483647; - } else if (byteOffset < -2147483648) { - byteOffset = -2147483648; - } - byteOffset = +byteOffset; - if (numberIsNaN(byteOffset)) { - byteOffset = dir ? 0 : buffer.length - 1; - } - 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; - } - if (typeof val === "string") { - val = Buffer.from(val, encoding); - } - if (Buffer.isBuffer(val)) { - if (val.length === 0) { - return -1; - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir); - } else if (typeof val === "number") { - val = val & 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 !== void 0) { - 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, i2) { - if (indexSize === 1) { - return buf[i2]; - } else { - return buf.readUInt16BE(i2 * 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) { - if (offset === void 0) { - encoding = "utf8"; - length = this.length; - offset = 0; - } else if (length === void 0 && typeof offset === "string") { - encoding = offset; - length = this.length; - offset = 0; - } else if (isFinite(offset)) { - offset = offset >>> 0; - if (isFinite(length)) { - length = length >>> 0; - if (encoding === void 0) encoding = "utf8"; - } else { - encoding = length; - length = void 0; - } - } else { - throw new Error( - "Buffer.write(string, encoding, offset[, length]) is no longer supported" - ); - } - const remaining = this.length - offset; - if (length === void 0 || 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": - 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 base64.fromByteArray(buf); - } else { - return base64.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 > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; - if (i + bytesPerSequence <= end) { - let secondByte, thirdByte, fourthByte, tempCodePoint; - switch (bytesPerSequence) { - case 1: - if (firstByte < 128) { - codePoint = firstByte; - } - break; - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 192) === 128) { - tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; - if (tempCodePoint > 127) { - codePoint = tempCodePoint; - } - } - break; - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { - tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; - if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { - codePoint = tempCodePoint; - } - } - break; - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { - tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; - if (tempCodePoint > 65535 && tempCodePoint < 1114112) { - codePoint = tempCodePoint; - } - } - } - } - if (codePoint === null) { - codePoint = 65533; - bytesPerSequence = 1; - } else if (codePoint > 65535) { - codePoint -= 65536; - res.push(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - res.push(codePoint); - i += bytesPerSequence; - } - return decodeCodePointsArray(res); - } - var MAX_ARGUMENTS_LENGTH = 4096; - function decodeCodePointsArray(codePoints) { - const len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints); - } - 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] & 127); - } - 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 = ""; - 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 === void 0 ? 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); - Object.setPrototypeOf(newBuf, Buffer.prototype); - return newBuf; - }; - 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, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) checkOffset(offset, byteLength2, this.length); - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength2 && (mul *= 256)) { - val += this[offset + i] * mul; - } - return val; - }; - Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) { - checkOffset(offset, byteLength2, this.length); - } - let val = this[offset + --byteLength2]; - let mul = 1; - while (byteLength2 > 0 && (mul *= 256)) { - val += this[offset + --byteLength2] * 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] * 16777216; - }; - Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] * 16777216 + (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 === void 0 || last === void 0) { - 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 === void 0 || last === void 0) { - 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, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) checkOffset(offset, byteLength2, this.length); - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength2 && (mul *= 256)) { - val += this[offset + i] * mul; - } - mul *= 128; - if (val >= mul) val -= Math.pow(2, 8 * byteLength2); - return val; - }; - Buffer.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) checkOffset(offset, byteLength2, this.length); - let i = byteLength2; - let mul = 1; - let val = this[offset + --i]; - while (i > 0 && (mul *= 256)) { - val += this[offset + --i] * mul; - } - mul *= 128; - if (val >= mul) val -= Math.pow(2, 8 * byteLength2); - return val; - }; - Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 128)) return this[offset]; - return (255 - 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 & 32768 ? val | 4294901760 : 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 & 32768 ? val | 4294901760 : 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 === void 0 || last === void 0) { - boundsError(offset, this.length - 8); - } - const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); - 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 === void 0 || last === void 0) { - 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 ieee754.read(this, offset, true, 23, 4); - }; - Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, false, 23, 4); - }; - Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, true, 52, 8); - }; - Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.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, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength2) - 1; - checkInt(this, value, offset, byteLength2, maxBytes, 0); - } - let mul = 1; - let i = 0; - this[offset] = value & 255; - while (++i < byteLength2 && (mul *= 256)) { - this[offset + i] = value / mul & 255; - } - return offset + byteLength2; - }; - Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength2) - 1; - checkInt(this, value, offset, byteLength2, maxBytes, 0); - } - let i = byteLength2 - 1; - let mul = 1; - this[offset + i] = value & 255; - while (--i >= 0 && (mul *= 256)) { - this[offset + i] = value / mul & 255; - } - return offset + byteLength2; - }; - Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 255, 0); - this[offset] = value & 255; - 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, 65535, 0); - this[offset] = value & 255; - 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, 65535, 0); - this[offset] = value >>> 8; - this[offset + 1] = value & 255; - 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, 4294967295, 0); - this[offset + 3] = value >>> 24; - this[offset + 2] = value >>> 16; - this[offset + 1] = value >>> 8; - this[offset] = value & 255; - 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, 4294967295, 0); - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 255; - return offset + 4; - }; - function wrtBigUInt64LE(buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7); - let lo = Number(value & BigInt(4294967295)); - 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(4294967295)); - 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(4294967295)); - 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(4294967295)); - 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, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, 8 * byteLength2 - 1); - checkInt(this, value, offset, byteLength2, limit - 1, -limit); - } - let i = 0; - let mul = 1; - let sub = 0; - this[offset] = value & 255; - while (++i < byteLength2 && (mul *= 256)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = (value / mul >> 0) - sub & 255; - } - return offset + byteLength2; - }; - Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, 8 * byteLength2 - 1); - checkInt(this, value, offset, byteLength2, limit - 1, -limit); - } - let i = byteLength2 - 1; - let mul = 1; - let sub = 0; - this[offset + i] = value & 255; - while (--i >= 0 && (mul *= 256)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = (value / mul >> 0) - sub & 255; - } - return offset + byteLength2; - }; - Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 127, -128); - if (value < 0) value = 255 + value + 1; - this[offset] = value & 255; - return offset + 1; - }; - Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); - this[offset] = value & 255; - 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, 32767, -32768); - this[offset] = value >>> 8; - this[offset + 1] = value & 255; - return offset + 2; - }; - Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); - this[offset] = value & 255; - 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, 2147483647, -2147483648); - if (value < 0) value = 4294967295 + value + 1; - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 255; - 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, 34028234663852886e22, -34028234663852886e22); - } - ieee754.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, 17976931348623157e292, -17976931348623157e292); - } - ieee754.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); - }; - 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; - if (end === start) return 0; - if (target.length === 0 || this.length === 0) return 0; - 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"); - 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") { - this.copyWithin(targetStart, start, end); - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ); - } - return len; - }; - Buffer.prototype.fill = function fill(val, start, end, encoding) { - 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 !== void 0 && 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") { - val = code; - } - } - } else if (typeof val === "number") { - val = val & 255; - } else if (typeof val === "boolean") { - val = Number(val); - } - 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 === void 0 ? 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; - }; - var errors = {}; - function E(sym, getMessage, Base) { - errors[sym] = class NodeError extends Base { - constructor() { - super(); - Object.defineProperty(this, "message", { - value: getMessage.apply(this, arguments), - writable: true, - configurable: true - }); - this.name = `${this.name} [${sym}]`; - this.stack; - 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}`; - } - function checkBounds(buf, offset, byteLength2) { - validateNumber(offset, "offset"); - if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) { - boundsError(offset, buf.length - (byteLength2 + 1)); - } - } - function checkIntBI(value, min, max, buf, offset, byteLength2) { - if (value > max || value < min) { - const n = typeof min === "bigint" ? "n" : ""; - let range; - if (byteLength2 > 3) { - if (min === 0 || min === BigInt(0)) { - range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`; - } else { - range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`; - } - } else { - range = `>= ${min}${n} and <= ${max}${n}`; - } - throw new errors.ERR_OUT_OF_RANGE("value", range, value); - } - checkBounds(buf, offset, byteLength2); - } - function validateNumber(value, name) { - if (typeof value !== "number") { - throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value); - } - } - function boundsError(value, length, type) { - if (Math.floor(value) !== value) { - validateNumber(value, type); - throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value); - } - if (length < 0) { - throw new errors.ERR_BUFFER_OUT_OF_BOUNDS(); - } - throw new errors.ERR_OUT_OF_RANGE( - type || "offset", - `>= ${type ? 1 : 0} and <= ${length}`, - value - ); - } - var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; - function base64clean(str) { - str = str.split("=")[0]; - str = str.trim().replace(INVALID_BASE64_RE, ""); - if (str.length < 2) return ""; - 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); - if (codePoint > 55295 && codePoint < 57344) { - if (!leadSurrogate) { - if (codePoint > 56319) { - if ((units -= 3) > -1) bytes.push(239, 191, 189); - continue; - } else if (i + 1 === length) { - if ((units -= 3) > -1) bytes.push(239, 191, 189); - continue; - } - leadSurrogate = codePoint; - continue; - } - if (codePoint < 56320) { - if ((units -= 3) > -1) bytes.push(239, 191, 189); - leadSurrogate = codePoint; - continue; - } - codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; - } else if (leadSurrogate) { - if ((units -= 3) > -1) bytes.push(239, 191, 189); - } - leadSurrogate = null; - if (codePoint < 128) { - if ((units -= 1) < 0) break; - bytes.push(codePoint); - } else if (codePoint < 2048) { - if ((units -= 2) < 0) break; - bytes.push( - codePoint >> 6 | 192, - codePoint & 63 | 128 - ); - } else if (codePoint < 65536) { - if ((units -= 3) < 0) break; - bytes.push( - codePoint >> 12 | 224, - codePoint >> 6 & 63 | 128, - codePoint & 63 | 128 - ); - } else if (codePoint < 1114112) { - if ((units -= 4) < 0) break; - bytes.push( - codePoint >> 18 | 240, - codePoint >> 12 & 63 | 128, - codePoint >> 6 & 63 | 128, - codePoint & 63 | 128 - ); - } else { - throw new Error("Invalid code point"); - } - } - return bytes; - } - function asciiToBytes(str) { - const byteArray = []; - for (let i = 0; i < str.length; ++i) { - byteArray.push(str.charCodeAt(i) & 255); - } - 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 base64.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; - } - 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) { - return obj !== obj; - } - var 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; - }(); - function defineBigIntMethod(fn) { - return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn; - } - function BufferBigIntNotDefined() { - throw new Error("BigInt not supported"); - } - } -}); -export default require_buffer(); -/*! Bundled license information: - -ieee754/index.js: - (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) - -buffer/index.js: - (*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - *) -*/ -//# sourceMappingURL=buffer.js.map diff --git a/packages/ridb/node_modules/.vite/deps/buffer.js.map b/packages/ridb/node_modules/.vite/deps/buffer.js.map deleted file mode 100644 index d5bf007..0000000 --- a/packages/ridb/node_modules/.vite/deps/buffer.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/base64-js/index.js", "../../../../../node_modules/ieee754/index.js", "../../../../../node_modules/buffer/index.js"], - "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n"], - "mappings": "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", - "names": ["len", "i", "len2", "i", "byteLength"] -} diff --git a/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js b/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js deleted file mode 100644 index 1dc2b9c..0000000 --- a/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js +++ /dev/null @@ -1,31 +0,0 @@ -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 __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -export { - __commonJS, - __toESM -}; -//# sourceMappingURL=chunk-5WRI5ZAA.js.map diff --git a/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map b/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map deleted file mode 100644 index 9865211..0000000 --- a/packages/ridb/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js b/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js deleted file mode 100644 index da41aba..0000000 --- a/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js +++ /dev/null @@ -1,1333 +0,0 @@ -import { - require_ansi_styles -} from "./chunk-UJ726J2L.js"; -import { - __commonJS -} from "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/pretty-format/build/collections.js -var require_collections = __commonJS({ - "../../node_modules/pretty-format/build/collections.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.printIteratorEntries = printIteratorEntries; - exports.printIteratorValues = printIteratorValues; - exports.printListItems = printListItems; - exports.printObjectProperties = printObjectProperties; - var getKeysOfEnumerableProperties = (object, compareKeys) => { - const rawKeys = Object.keys(object); - const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys; - if (Object.getOwnPropertySymbols) { - Object.getOwnPropertySymbols(object).forEach((symbol) => { - if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) { - keys.push(symbol); - } - }); - } - return keys; - }; - function printIteratorEntries(iterator, config, indentation, depth, refs, printer, separator = ": ") { - let result = ""; - let width = 0; - let current = iterator.next(); - if (!current.done) { - result += config.spacingOuter; - const indentationNext = indentation + config.indent; - while (!current.done) { - result += indentationNext; - if (width++ === config.maxWidth) { - result += "…"; - break; - } - const name = printer( - current.value[0], - config, - indentationNext, - depth, - refs - ); - const value = printer( - current.value[1], - config, - indentationNext, - depth, - refs - ); - result += name + separator + value; - current = iterator.next(); - if (!current.done) { - result += `,${config.spacingInner}`; - } else if (!config.min) { - result += ","; - } - } - result += config.spacingOuter + indentation; - } - return result; - } - function printIteratorValues(iterator, config, indentation, depth, refs, printer) { - let result = ""; - let width = 0; - let current = iterator.next(); - if (!current.done) { - result += config.spacingOuter; - const indentationNext = indentation + config.indent; - while (!current.done) { - result += indentationNext; - if (width++ === config.maxWidth) { - result += "…"; - break; - } - result += printer(current.value, config, indentationNext, depth, refs); - current = iterator.next(); - if (!current.done) { - result += `,${config.spacingInner}`; - } else if (!config.min) { - result += ","; - } - } - result += config.spacingOuter + indentation; - } - return result; - } - function printListItems(list, config, indentation, depth, refs, printer) { - let result = ""; - if (list.length) { - result += config.spacingOuter; - const indentationNext = indentation + config.indent; - for (let i = 0; i < list.length; i++) { - result += indentationNext; - if (i === config.maxWidth) { - result += "…"; - break; - } - if (i in list) { - result += printer(list[i], config, indentationNext, depth, refs); - } - if (i < list.length - 1) { - result += `,${config.spacingInner}`; - } else if (!config.min) { - result += ","; - } - } - result += config.spacingOuter + indentation; - } - return result; - } - function printObjectProperties(val, config, indentation, depth, refs, printer) { - let result = ""; - const keys = getKeysOfEnumerableProperties(val, config.compareKeys); - if (keys.length) { - result += config.spacingOuter; - const indentationNext = indentation + config.indent; - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const name = printer(key, config, indentationNext, depth, refs); - const value = printer(val[key], config, indentationNext, depth, refs); - result += `${indentationNext + name}: ${value}`; - if (i < keys.length - 1) { - result += `,${config.spacingInner}`; - } else if (!config.min) { - result += ","; - } - } - result += config.spacingOuter + indentation; - } - return result; - } - } -}); - -// ../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js -var require_AsymmetricMatcher = __commonJS({ - "../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.test = exports.serialize = exports.default = void 0; - var _collections = require_collections(); - var Symbol2 = globalThis["jest-symbol-do-not-touch"] || globalThis.Symbol; - var asymmetricMatcher = typeof Symbol2 === "function" && Symbol2.for ? Symbol2.for("jest.asymmetricMatcher") : 1267621; - var SPACE = " "; - var serialize = (val, config, indentation, depth, refs, printer) => { - const stringedValue = val.toString(); - if (stringedValue === "ArrayContaining" || stringedValue === "ArrayNotContaining") { - if (++depth > config.maxDepth) { - return `[${stringedValue}]`; - } - return `${stringedValue + SPACE}[${(0, _collections.printListItems)( - val.sample, - config, - indentation, - depth, - refs, - printer - )}]`; - } - if (stringedValue === "ObjectContaining" || stringedValue === "ObjectNotContaining") { - if (++depth > config.maxDepth) { - return `[${stringedValue}]`; - } - return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)( - val.sample, - config, - indentation, - depth, - refs, - printer - )}}`; - } - if (stringedValue === "StringMatching" || stringedValue === "StringNotMatching") { - return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); - } - if (stringedValue === "StringContaining" || stringedValue === "StringNotContaining") { - return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); - } - if (typeof val.toAsymmetricMatcher !== "function") { - throw new Error( - `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()` - ); - } - return val.toAsymmetricMatcher(); - }; - exports.serialize = serialize; - var test = (val) => val && val.$$typeof === asymmetricMatcher; - exports.test = test; - var plugin = { - serialize, - test - }; - var _default = plugin; - exports.default = _default; - } -}); - -// ../../node_modules/pretty-format/build/plugins/DOMCollection.js -var require_DOMCollection = __commonJS({ - "../../node_modules/pretty-format/build/plugins/DOMCollection.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.test = exports.serialize = exports.default = void 0; - var _collections = require_collections(); - var SPACE = " "; - var OBJECT_NAMES = ["DOMStringMap", "NamedNodeMap"]; - var ARRAY_REGEXP = /^(HTML\w*Collection|NodeList)$/; - var testName = (name) => OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name); - var test = (val) => val && val.constructor && !!val.constructor.name && testName(val.constructor.name); - exports.test = test; - var isNamedNodeMap = (collection) => collection.constructor.name === "NamedNodeMap"; - var serialize = (collection, config, indentation, depth, refs, printer) => { - const name = collection.constructor.name; - if (++depth > config.maxDepth) { - return `[${name}]`; - } - return (config.min ? "" : name + SPACE) + (OBJECT_NAMES.indexOf(name) !== -1 ? `{${(0, _collections.printObjectProperties)( - isNamedNodeMap(collection) ? Array.from(collection).reduce((props, attribute) => { - props[attribute.name] = attribute.value; - return props; - }, {}) : { - ...collection - }, - config, - indentation, - depth, - refs, - printer - )}}` : `[${(0, _collections.printListItems)( - Array.from(collection), - config, - indentation, - depth, - refs, - printer - )}]`); - }; - exports.serialize = serialize; - var plugin = { - serialize, - test - }; - var _default = plugin; - exports.default = _default; - } -}); - -// ../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js -var require_escapeHTML = __commonJS({ - "../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = escapeHTML; - function escapeHTML(str) { - return str.replace(//g, ">"); - } - } -}); - -// ../../node_modules/pretty-format/build/plugins/lib/markup.js -var require_markup = __commonJS({ - "../../node_modules/pretty-format/build/plugins/lib/markup.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.printText = exports.printProps = exports.printElementAsLeaf = exports.printElement = exports.printComment = exports.printChildren = void 0; - var _escapeHTML = _interopRequireDefault(require_escapeHTML()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var printProps = (keys, props, config, indentation, depth, refs, printer) => { - const indentationNext = indentation + config.indent; - const colors = config.colors; - return keys.map((key) => { - const value = props[key]; - let printed = printer(value, config, indentationNext, depth, refs); - if (typeof value !== "string") { - if (printed.indexOf("\n") !== -1) { - printed = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation; - } - printed = `{${printed}}`; - } - return `${config.spacingInner + indentation + colors.prop.open + key + colors.prop.close}=${colors.value.open}${printed}${colors.value.close}`; - }).join(""); - }; - exports.printProps = printProps; - var printChildren = (children, config, indentation, depth, refs, printer) => children.map( - (child) => config.spacingOuter + indentation + (typeof child === "string" ? printText(child, config) : printer(child, config, indentation, depth, refs)) - ).join(""); - exports.printChildren = printChildren; - var printText = (text, config) => { - const contentColor = config.colors.content; - return contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close; - }; - exports.printText = printText; - var printComment = (comment, config) => { - const commentColor = config.colors.comment; - return `${commentColor.open}${commentColor.close}`; - }; - exports.printComment = printComment; - var printElement = (type, printedProps, printedChildren, config, indentation) => { - const tagColor = config.colors.tag; - return `${tagColor.open}<${type}${printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open}${printedChildren ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`; - }; - exports.printElement = printElement; - var printElementAsLeaf = (type, config) => { - const tagColor = config.colors.tag; - return `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`; - }; - exports.printElementAsLeaf = printElementAsLeaf; - } -}); - -// ../../node_modules/pretty-format/build/plugins/DOMElement.js -var require_DOMElement = __commonJS({ - "../../node_modules/pretty-format/build/plugins/DOMElement.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.test = exports.serialize = exports.default = void 0; - var _markup = require_markup(); - var ELEMENT_NODE = 1; - var TEXT_NODE = 3; - var COMMENT_NODE = 8; - var FRAGMENT_NODE = 11; - var ELEMENT_REGEXP = /^((HTML|SVG)\w*)?Element$/; - var testHasAttribute = (val) => { - try { - return typeof val.hasAttribute === "function" && val.hasAttribute("is"); - } catch { - return false; - } - }; - var testNode = (val) => { - const constructorName = val.constructor.name; - const { nodeType, tagName } = val; - const isCustomElement = typeof tagName === "string" && tagName.includes("-") || testHasAttribute(val); - return nodeType === ELEMENT_NODE && (ELEMENT_REGEXP.test(constructorName) || isCustomElement) || nodeType === TEXT_NODE && constructorName === "Text" || nodeType === COMMENT_NODE && constructorName === "Comment" || nodeType === FRAGMENT_NODE && constructorName === "DocumentFragment"; - }; - var test = (val) => { - var _a; - return ((_a = val == null ? void 0 : val.constructor) == null ? void 0 : _a.name) && testNode(val); - }; - exports.test = test; - function nodeIsText(node) { - return node.nodeType === TEXT_NODE; - } - function nodeIsComment(node) { - return node.nodeType === COMMENT_NODE; - } - function nodeIsFragment(node) { - return node.nodeType === FRAGMENT_NODE; - } - var serialize = (node, config, indentation, depth, refs, printer) => { - if (nodeIsText(node)) { - return (0, _markup.printText)(node.data, config); - } - if (nodeIsComment(node)) { - return (0, _markup.printComment)(node.data, config); - } - const type = nodeIsFragment(node) ? "DocumentFragment" : node.tagName.toLowerCase(); - if (++depth > config.maxDepth) { - return (0, _markup.printElementAsLeaf)(type, config); - } - return (0, _markup.printElement)( - type, - (0, _markup.printProps)( - nodeIsFragment(node) ? [] : Array.from(node.attributes, (attr) => attr.name).sort(), - nodeIsFragment(node) ? {} : Array.from(node.attributes).reduce((props, attribute) => { - props[attribute.name] = attribute.value; - return props; - }, {}), - config, - indentation + config.indent, - depth, - refs, - printer - ), - (0, _markup.printChildren)( - Array.prototype.slice.call(node.childNodes || node.children), - config, - indentation + config.indent, - depth, - refs, - printer - ), - config, - indentation - ); - }; - exports.serialize = serialize; - var plugin = { - serialize, - test - }; - var _default = plugin; - exports.default = _default; - } -}); - -// ../../node_modules/pretty-format/build/plugins/Immutable.js -var require_Immutable = __commonJS({ - "../../node_modules/pretty-format/build/plugins/Immutable.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.test = exports.serialize = exports.default = void 0; - var _collections = require_collections(); - var IS_ITERABLE_SENTINEL = "@@__IMMUTABLE_ITERABLE__@@"; - var IS_LIST_SENTINEL = "@@__IMMUTABLE_LIST__@@"; - var IS_KEYED_SENTINEL = "@@__IMMUTABLE_KEYED__@@"; - var IS_MAP_SENTINEL = "@@__IMMUTABLE_MAP__@@"; - var IS_ORDERED_SENTINEL = "@@__IMMUTABLE_ORDERED__@@"; - var IS_RECORD_SENTINEL = "@@__IMMUTABLE_RECORD__@@"; - var IS_SEQ_SENTINEL = "@@__IMMUTABLE_SEQ__@@"; - var IS_SET_SENTINEL = "@@__IMMUTABLE_SET__@@"; - var IS_STACK_SENTINEL = "@@__IMMUTABLE_STACK__@@"; - var getImmutableName = (name) => `Immutable.${name}`; - var printAsLeaf = (name) => `[${name}]`; - var SPACE = " "; - var LAZY = "…"; - var printImmutableEntries = (val, config, indentation, depth, refs, printer, type) => ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}{${(0, _collections.printIteratorEntries)( - val.entries(), - config, - indentation, - depth, - refs, - printer - )}}`; - function getRecordEntries(val) { - let i = 0; - return { - next() { - if (i < val._keys.length) { - const key = val._keys[i++]; - return { - done: false, - value: [key, val.get(key)] - }; - } - return { - done: true, - value: void 0 - }; - } - }; - } - var printImmutableRecord = (val, config, indentation, depth, refs, printer) => { - const name = getImmutableName(val._name || "Record"); - return ++depth > config.maxDepth ? printAsLeaf(name) : `${name + SPACE}{${(0, _collections.printIteratorEntries)( - getRecordEntries(val), - config, - indentation, - depth, - refs, - printer - )}}`; - }; - var printImmutableSeq = (val, config, indentation, depth, refs, printer) => { - const name = getImmutableName("Seq"); - if (++depth > config.maxDepth) { - return printAsLeaf(name); - } - if (val[IS_KEYED_SENTINEL]) { - return `${name + SPACE}{${// from Immutable collection of entries or from ECMAScript object - val._iter || val._object ? (0, _collections.printIteratorEntries)( - val.entries(), - config, - indentation, - depth, - refs, - printer - ) : LAZY}}`; - } - return `${name + SPACE}[${val._iter || // from Immutable collection of values - val._array || // from ECMAScript array - val._collection || // from ECMAScript collection in immutable v4 - val._iterable ? (0, _collections.printIteratorValues)( - val.values(), - config, - indentation, - depth, - refs, - printer - ) : LAZY}]`; - }; - var printImmutableValues = (val, config, indentation, depth, refs, printer, type) => ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}[${(0, _collections.printIteratorValues)( - val.values(), - config, - indentation, - depth, - refs, - printer - )}]`; - var serialize = (val, config, indentation, depth, refs, printer) => { - if (val[IS_MAP_SENTINEL]) { - return printImmutableEntries( - val, - config, - indentation, - depth, - refs, - printer, - val[IS_ORDERED_SENTINEL] ? "OrderedMap" : "Map" - ); - } - if (val[IS_LIST_SENTINEL]) { - return printImmutableValues( - val, - config, - indentation, - depth, - refs, - printer, - "List" - ); - } - if (val[IS_SET_SENTINEL]) { - return printImmutableValues( - val, - config, - indentation, - depth, - refs, - printer, - val[IS_ORDERED_SENTINEL] ? "OrderedSet" : "Set" - ); - } - if (val[IS_STACK_SENTINEL]) { - return printImmutableValues( - val, - config, - indentation, - depth, - refs, - printer, - "Stack" - ); - } - if (val[IS_SEQ_SENTINEL]) { - return printImmutableSeq(val, config, indentation, depth, refs, printer); - } - return printImmutableRecord(val, config, indentation, depth, refs, printer); - }; - exports.serialize = serialize; - var test = (val) => val && (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true); - exports.test = test; - var plugin = { - serialize, - test - }; - var _default = plugin; - exports.default = _default; - } -}); - -// ../../node_modules/react-is/cjs/react-is.development.js -var require_react_is_development = __commonJS({ - "../../node_modules/react-is/cjs/react-is.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - var REACT_ELEMENT_TYPE = Symbol.for("react.element"); - var REACT_PORTAL_TYPE = Symbol.for("react.portal"); - var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); - var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); - var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); - var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); - var REACT_CONTEXT_TYPE = Symbol.for("react.context"); - var REACT_SERVER_CONTEXT_TYPE = Symbol.for("react.server_context"); - var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); - var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); - var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); - var REACT_MEMO_TYPE = Symbol.for("react.memo"); - var REACT_LAZY_TYPE = Symbol.for("react.lazy"); - var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); - var enableScopeAPI = false; - var enableCacheElement = false; - var enableTransitionTracing = false; - var enableLegacyHidden = false; - var enableDebugTracing = false; - var REACT_MODULE_REFERENCE; - { - REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); - } - function isValidElementType(type) { - if (typeof type === "string" || typeof type === "function") { - return true; - } - if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { - return true; - } - if (typeof type === "object" && type !== null) { - if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object - // types supported by any Flight configuration anywhere since - // we don't know which Flight build this will end up being used - // with. - type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { - return true; - } - } - return false; - } - function typeOf(object) { - if (typeof object === "object" && object !== null) { - var $$typeof = object.$$typeof; - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - switch (type) { - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - case REACT_SUSPENSE_LIST_TYPE: - return type; - default: - var $$typeofType = type && type.$$typeof; - switch ($$typeofType) { - case REACT_SERVER_CONTEXT_TYPE: - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - default: - return $$typeof; - } - } - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - return void 0; - } - var ContextConsumer = REACT_CONTEXT_TYPE; - var ContextProvider = REACT_PROVIDER_TYPE; - var Element = REACT_ELEMENT_TYPE; - var ForwardRef = REACT_FORWARD_REF_TYPE; - var Fragment = REACT_FRAGMENT_TYPE; - var Lazy = REACT_LAZY_TYPE; - var Memo = REACT_MEMO_TYPE; - var Portal = REACT_PORTAL_TYPE; - var Profiler = REACT_PROFILER_TYPE; - var StrictMode = REACT_STRICT_MODE_TYPE; - var Suspense = REACT_SUSPENSE_TYPE; - var SuspenseList = REACT_SUSPENSE_LIST_TYPE; - var hasWarnedAboutDeprecatedIsAsyncMode = false; - var hasWarnedAboutDeprecatedIsConcurrentMode = false; - function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+."); - } - } - return false; - } - function isConcurrentMode(object) { - { - if (!hasWarnedAboutDeprecatedIsConcurrentMode) { - hasWarnedAboutDeprecatedIsConcurrentMode = true; - console["warn"]("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+."); - } - } - return false; - } - function isContextConsumer(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; - } - function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; - } - function isElement(object) { - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; - } - function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; - } - function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; - } - function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; - } - function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; - } - function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; - } - function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; - } - function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; - } - function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; - } - function isSuspenseList(object) { - return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; - } - exports.ContextConsumer = ContextConsumer; - exports.ContextProvider = ContextProvider; - exports.Element = Element; - exports.ForwardRef = ForwardRef; - exports.Fragment = Fragment; - exports.Lazy = Lazy; - exports.Memo = Memo; - exports.Portal = Portal; - exports.Profiler = Profiler; - exports.StrictMode = StrictMode; - exports.Suspense = Suspense; - exports.SuspenseList = SuspenseList; - exports.isAsyncMode = isAsyncMode; - exports.isConcurrentMode = isConcurrentMode; - exports.isContextConsumer = isContextConsumer; - exports.isContextProvider = isContextProvider; - exports.isElement = isElement; - exports.isForwardRef = isForwardRef; - exports.isFragment = isFragment; - exports.isLazy = isLazy; - exports.isMemo = isMemo; - exports.isPortal = isPortal; - exports.isProfiler = isProfiler; - exports.isStrictMode = isStrictMode; - exports.isSuspense = isSuspense; - exports.isSuspenseList = isSuspenseList; - exports.isValidElementType = isValidElementType; - exports.typeOf = typeOf; - })(); - } - } -}); - -// ../../node_modules/react-is/index.js -var require_react_is = __commonJS({ - "../../node_modules/react-is/index.js"(exports, module) { - "use strict"; - if (false) { - module.exports = null; - } else { - module.exports = require_react_is_development(); - } - } -}); - -// ../../node_modules/pretty-format/build/plugins/ReactElement.js -var require_ReactElement = __commonJS({ - "../../node_modules/pretty-format/build/plugins/ReactElement.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.test = exports.serialize = exports.default = void 0; - var ReactIs = _interopRequireWildcard(require_react_is()); - var _markup = require_markup(); - function _getRequireWildcardCache(nodeInterop) { - if (typeof WeakMap !== "function") return null; - var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); - var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); - return (_getRequireWildcardCache = function(nodeInterop2) { - return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop; - })(nodeInterop); - } - function _interopRequireWildcard(obj, nodeInterop) { - if (!nodeInterop && obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== "object" && typeof obj !== "function") { - return { default: obj }; - } - var cache = _getRequireWildcardCache(nodeInterop); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var key in obj) { - if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj.default = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; - } - var getChildren = (arg, children = []) => { - if (Array.isArray(arg)) { - arg.forEach((item) => { - getChildren(item, children); - }); - } else if (arg != null && arg !== false) { - children.push(arg); - } - return children; - }; - var getType = (element) => { - const type = element.type; - if (typeof type === "string") { - return type; - } - if (typeof type === "function") { - return type.displayName || type.name || "Unknown"; - } - if (ReactIs.isFragment(element)) { - return "React.Fragment"; - } - if (ReactIs.isSuspense(element)) { - return "React.Suspense"; - } - if (typeof type === "object" && type !== null) { - if (ReactIs.isContextProvider(element)) { - return "Context.Provider"; - } - if (ReactIs.isContextConsumer(element)) { - return "Context.Consumer"; - } - if (ReactIs.isForwardRef(element)) { - if (type.displayName) { - return type.displayName; - } - const functionName = type.render.displayName || type.render.name || ""; - return functionName !== "" ? `ForwardRef(${functionName})` : "ForwardRef"; - } - if (ReactIs.isMemo(element)) { - const functionName = type.displayName || type.type.displayName || type.type.name || ""; - return functionName !== "" ? `Memo(${functionName})` : "Memo"; - } - } - return "UNDEFINED"; - }; - var getPropKeys = (element) => { - const { props } = element; - return Object.keys(props).filter((key) => key !== "children" && props[key] !== void 0).sort(); - }; - var serialize = (element, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(getType(element), config) : (0, _markup.printElement)( - getType(element), - (0, _markup.printProps)( - getPropKeys(element), - element.props, - config, - indentation + config.indent, - depth, - refs, - printer - ), - (0, _markup.printChildren)( - getChildren(element.props.children), - config, - indentation + config.indent, - depth, - refs, - printer - ), - config, - indentation - ); - exports.serialize = serialize; - var test = (val) => val != null && ReactIs.isElement(val); - exports.test = test; - var plugin = { - serialize, - test - }; - var _default = plugin; - exports.default = _default; - } -}); - -// ../../node_modules/pretty-format/build/plugins/ReactTestComponent.js -var require_ReactTestComponent = __commonJS({ - "../../node_modules/pretty-format/build/plugins/ReactTestComponent.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.test = exports.serialize = exports.default = void 0; - var _markup = require_markup(); - var Symbol2 = globalThis["jest-symbol-do-not-touch"] || globalThis.Symbol; - var testSymbol = typeof Symbol2 === "function" && Symbol2.for ? Symbol2.for("react.test.json") : 245830487; - var getPropKeys = (object) => { - const { props } = object; - return props ? Object.keys(props).filter((key) => props[key] !== void 0).sort() : []; - }; - var serialize = (object, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(object.type, config) : (0, _markup.printElement)( - object.type, - object.props ? (0, _markup.printProps)( - getPropKeys(object), - object.props, - config, - indentation + config.indent, - depth, - refs, - printer - ) : "", - object.children ? (0, _markup.printChildren)( - object.children, - config, - indentation + config.indent, - depth, - refs, - printer - ) : "", - config, - indentation - ); - exports.serialize = serialize; - var test = (val) => val && val.$$typeof === testSymbol; - exports.test = test; - var plugin = { - serialize, - test - }; - var _default = plugin; - exports.default = _default; - } -}); - -// ../../node_modules/pretty-format/build/index.js -var require_build = __commonJS({ - "../../node_modules/pretty-format/build/index.js"(exports) { - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = exports.DEFAULT_OPTIONS = void 0; - exports.format = format; - exports.plugins = void 0; - var _ansiStyles = _interopRequireDefault(require_ansi_styles()); - var _collections = require_collections(); - var _AsymmetricMatcher = _interopRequireDefault( - require_AsymmetricMatcher() - ); - var _DOMCollection = _interopRequireDefault(require_DOMCollection()); - var _DOMElement = _interopRequireDefault(require_DOMElement()); - var _Immutable = _interopRequireDefault(require_Immutable()); - var _ReactElement = _interopRequireDefault(require_ReactElement()); - var _ReactTestComponent = _interopRequireDefault( - require_ReactTestComponent() - ); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var toString = Object.prototype.toString; - var toISOString = Date.prototype.toISOString; - var errorToString = Error.prototype.toString; - var regExpToString = RegExp.prototype.toString; - var getConstructorName = (val) => typeof val.constructor === "function" && val.constructor.name || "Object"; - var isWindow = (val) => typeof window !== "undefined" && val === window; - var SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; - var NEWLINE_REGEXP = /\n/gi; - var PrettyFormatPluginError = class extends Error { - constructor(message, stack) { - super(message); - this.stack = stack; - this.name = this.constructor.name; - } - }; - function isToStringedArrayType(toStringed) { - return toStringed === "[object Array]" || toStringed === "[object ArrayBuffer]" || toStringed === "[object DataView]" || toStringed === "[object Float32Array]" || toStringed === "[object Float64Array]" || toStringed === "[object Int8Array]" || toStringed === "[object Int16Array]" || toStringed === "[object Int32Array]" || toStringed === "[object Uint8Array]" || toStringed === "[object Uint8ClampedArray]" || toStringed === "[object Uint16Array]" || toStringed === "[object Uint32Array]"; - } - function printNumber(val) { - return Object.is(val, -0) ? "-0" : String(val); - } - function printBigInt(val) { - return String(`${val}n`); - } - function printFunction(val, printFunctionName) { - if (!printFunctionName) { - return "[Function]"; - } - return `[Function ${val.name || "anonymous"}]`; - } - function printSymbol(val) { - return String(val).replace(SYMBOL_REGEXP, "Symbol($1)"); - } - function printError(val) { - return `[${errorToString.call(val)}]`; - } - function printBasicValue(val, printFunctionName, escapeRegex, escapeString) { - if (val === true || val === false) { - return `${val}`; - } - if (val === void 0) { - return "undefined"; - } - if (val === null) { - return "null"; - } - const typeOf = typeof val; - if (typeOf === "number") { - return printNumber(val); - } - if (typeOf === "bigint") { - return printBigInt(val); - } - if (typeOf === "string") { - if (escapeString) { - return `"${val.replace(/"|\\/g, "\\$&")}"`; - } - return `"${val}"`; - } - if (typeOf === "function") { - return printFunction(val, printFunctionName); - } - if (typeOf === "symbol") { - return printSymbol(val); - } - const toStringed = toString.call(val); - if (toStringed === "[object WeakMap]") { - return "WeakMap {}"; - } - if (toStringed === "[object WeakSet]") { - return "WeakSet {}"; - } - if (toStringed === "[object Function]" || toStringed === "[object GeneratorFunction]") { - return printFunction(val, printFunctionName); - } - if (toStringed === "[object Symbol]") { - return printSymbol(val); - } - if (toStringed === "[object Date]") { - return isNaN(+val) ? "Date { NaN }" : toISOString.call(val); - } - if (toStringed === "[object Error]") { - return printError(val); - } - if (toStringed === "[object RegExp]") { - if (escapeRegex) { - return regExpToString.call(val).replace(/[\\^$*+?.()|[\]{}]/g, "\\$&"); - } - return regExpToString.call(val); - } - if (val instanceof Error) { - return printError(val); - } - return null; - } - function printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON) { - if (refs.indexOf(val) !== -1) { - return "[Circular]"; - } - refs = refs.slice(); - refs.push(val); - const hitMaxDepth = ++depth > config.maxDepth; - const min = config.min; - if (config.callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === "function" && !hasCalledToJSON) { - return printer(val.toJSON(), config, indentation, depth, refs, true); - } - const toStringed = toString.call(val); - if (toStringed === "[object Arguments]") { - return hitMaxDepth ? "[Arguments]" : `${min ? "" : "Arguments "}[${(0, _collections.printListItems)( - val, - config, - indentation, - depth, - refs, - printer - )}]`; - } - if (isToStringedArrayType(toStringed)) { - return hitMaxDepth ? `[${val.constructor.name}]` : `${min ? "" : !config.printBasicPrototype && val.constructor.name === "Array" ? "" : `${val.constructor.name} `}[${(0, _collections.printListItems)( - val, - config, - indentation, - depth, - refs, - printer - )}]`; - } - if (toStringed === "[object Map]") { - return hitMaxDepth ? "[Map]" : `Map {${(0, _collections.printIteratorEntries)( - val.entries(), - config, - indentation, - depth, - refs, - printer, - " => " - )}}`; - } - if (toStringed === "[object Set]") { - return hitMaxDepth ? "[Set]" : `Set {${(0, _collections.printIteratorValues)( - val.values(), - config, - indentation, - depth, - refs, - printer - )}}`; - } - return hitMaxDepth || isWindow(val) ? `[${getConstructorName(val)}]` : `${min ? "" : !config.printBasicPrototype && getConstructorName(val) === "Object" ? "" : `${getConstructorName(val)} `}{${(0, _collections.printObjectProperties)( - val, - config, - indentation, - depth, - refs, - printer - )}}`; - } - function isNewPlugin(plugin) { - return plugin.serialize != null; - } - function printPlugin(plugin, val, config, indentation, depth, refs) { - let printed; - try { - printed = isNewPlugin(plugin) ? plugin.serialize(val, config, indentation, depth, refs, printer) : plugin.print( - val, - (valChild) => printer(valChild, config, indentation, depth, refs), - (str) => { - const indentationNext = indentation + config.indent; - return indentationNext + str.replace(NEWLINE_REGEXP, ` -${indentationNext}`); - }, - { - edgeSpacing: config.spacingOuter, - min: config.min, - spacing: config.spacingInner - }, - config.colors - ); - } catch (error) { - throw new PrettyFormatPluginError(error.message, error.stack); - } - if (typeof printed !== "string") { - throw new Error( - `pretty-format: Plugin must return type "string" but instead returned "${typeof printed}".` - ); - } - return printed; - } - function findPlugin(plugins2, val) { - for (let p = 0; p < plugins2.length; p++) { - try { - if (plugins2[p].test(val)) { - return plugins2[p]; - } - } catch (error) { - throw new PrettyFormatPluginError(error.message, error.stack); - } - } - return null; - } - function printer(val, config, indentation, depth, refs, hasCalledToJSON) { - const plugin = findPlugin(config.plugins, val); - if (plugin !== null) { - return printPlugin(plugin, val, config, indentation, depth, refs); - } - const basicResult = printBasicValue( - val, - config.printFunctionName, - config.escapeRegex, - config.escapeString - ); - if (basicResult !== null) { - return basicResult; - } - return printComplexValue( - val, - config, - indentation, - depth, - refs, - hasCalledToJSON - ); - } - var DEFAULT_THEME = { - comment: "gray", - content: "reset", - prop: "yellow", - tag: "cyan", - value: "green" - }; - var DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME); - var toOptionsSubtype = (options) => options; - var DEFAULT_OPTIONS = toOptionsSubtype({ - callToJSON: true, - compareKeys: void 0, - escapeRegex: false, - escapeString: true, - highlight: false, - indent: 2, - maxDepth: Infinity, - maxWidth: Infinity, - min: false, - plugins: [], - printBasicPrototype: true, - printFunctionName: true, - theme: DEFAULT_THEME - }); - exports.DEFAULT_OPTIONS = DEFAULT_OPTIONS; - function validateOptions(options) { - Object.keys(options).forEach((key) => { - if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) { - throw new Error(`pretty-format: Unknown option "${key}".`); - } - }); - if (options.min && options.indent !== void 0 && options.indent !== 0) { - throw new Error( - 'pretty-format: Options "min" and "indent" cannot be used together.' - ); - } - if (options.theme !== void 0) { - if (options.theme === null) { - throw new Error('pretty-format: Option "theme" must not be null.'); - } - if (typeof options.theme !== "object") { - throw new Error( - `pretty-format: Option "theme" must be of type "object" but instead received "${typeof options.theme}".` - ); - } - } - } - var getColorsHighlight = (options) => DEFAULT_THEME_KEYS.reduce((colors, key) => { - const value = options.theme && options.theme[key] !== void 0 ? options.theme[key] : DEFAULT_THEME[key]; - const color = value && _ansiStyles.default[value]; - if (color && typeof color.close === "string" && typeof color.open === "string") { - colors[key] = color; - } else { - throw new Error( - `pretty-format: Option "theme" has a key "${key}" whose value "${value}" is undefined in ansi-styles.` - ); - } - return colors; - }, /* @__PURE__ */ Object.create(null)); - var getColorsEmpty = () => DEFAULT_THEME_KEYS.reduce((colors, key) => { - colors[key] = { - close: "", - open: "" - }; - return colors; - }, /* @__PURE__ */ Object.create(null)); - var getPrintFunctionName = (options) => (options == null ? void 0 : options.printFunctionName) ?? DEFAULT_OPTIONS.printFunctionName; - var getEscapeRegex = (options) => (options == null ? void 0 : options.escapeRegex) ?? DEFAULT_OPTIONS.escapeRegex; - var getEscapeString = (options) => (options == null ? void 0 : options.escapeString) ?? DEFAULT_OPTIONS.escapeString; - var getConfig = (options) => ({ - callToJSON: (options == null ? void 0 : options.callToJSON) ?? DEFAULT_OPTIONS.callToJSON, - colors: (options == null ? void 0 : options.highlight) ? getColorsHighlight(options) : getColorsEmpty(), - compareKeys: typeof (options == null ? void 0 : options.compareKeys) === "function" || (options == null ? void 0 : options.compareKeys) === null ? options.compareKeys : DEFAULT_OPTIONS.compareKeys, - escapeRegex: getEscapeRegex(options), - escapeString: getEscapeString(options), - indent: (options == null ? void 0 : options.min) ? "" : createIndent((options == null ? void 0 : options.indent) ?? DEFAULT_OPTIONS.indent), - maxDepth: (options == null ? void 0 : options.maxDepth) ?? DEFAULT_OPTIONS.maxDepth, - maxWidth: (options == null ? void 0 : options.maxWidth) ?? DEFAULT_OPTIONS.maxWidth, - min: (options == null ? void 0 : options.min) ?? DEFAULT_OPTIONS.min, - plugins: (options == null ? void 0 : options.plugins) ?? DEFAULT_OPTIONS.plugins, - printBasicPrototype: (options == null ? void 0 : options.printBasicPrototype) ?? true, - printFunctionName: getPrintFunctionName(options), - spacingInner: (options == null ? void 0 : options.min) ? " " : "\n", - spacingOuter: (options == null ? void 0 : options.min) ? "" : "\n" - }); - function createIndent(indent) { - return new Array(indent + 1).join(" "); - } - function format(val, options) { - if (options) { - validateOptions(options); - if (options.plugins) { - const plugin = findPlugin(options.plugins, val); - if (plugin !== null) { - return printPlugin(plugin, val, getConfig(options), "", 0, []); - } - } - } - const basicResult = printBasicValue( - val, - getPrintFunctionName(options), - getEscapeRegex(options), - getEscapeString(options) - ); - if (basicResult !== null) { - return basicResult; - } - return printComplexValue(val, getConfig(options), "", 0, []); - } - var plugins = { - AsymmetricMatcher: _AsymmetricMatcher.default, - DOMCollection: _DOMCollection.default, - DOMElement: _DOMElement.default, - Immutable: _Immutable.default, - ReactElement: _ReactElement.default, - ReactTestComponent: _ReactTestComponent.default - }; - exports.plugins = plugins; - var _default = format; - exports.default = _default; - } -}); - -export { - require_build -}; -/*! Bundled license information: - -react-is/cjs/react-is.development.js: - (** - * @license React - * react-is.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) -*/ -//# sourceMappingURL=chunk-UCU27OGC.js.map diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map b/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map deleted file mode 100644 index e98115c..0000000 --- a/packages/ridb/node_modules/.vite/deps/chunk-UCU27OGC.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/pretty-format/build/collections.js", "../../../../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js", "../../../../../node_modules/pretty-format/build/plugins/DOMCollection.js", "../../../../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js", "../../../../../node_modules/pretty-format/build/plugins/lib/markup.js", "../../../../../node_modules/pretty-format/build/plugins/DOMElement.js", "../../../../../node_modules/pretty-format/build/plugins/Immutable.js", "../../../../../node_modules/react-is/cjs/react-is.development.js", "../../../../../node_modules/react-is/index.js", "../../../../../node_modules/pretty-format/build/plugins/ReactElement.js", "../../../../../node_modules/pretty-format/build/plugins/ReactTestComponent.js", "../../../../../node_modules/pretty-format/build/index.js"], - "sourcesContent": ["'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '…';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '…';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '…';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes, attr => attr.name).sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '…'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n"], - "mappings": "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", - "names": ["Symbol", "nodeInterop", "Symbol", "plugins"] -} diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js b/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js deleted file mode 100644 index 1a36c25..0000000 --- a/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js +++ /dev/null @@ -1,145 +0,0 @@ -import { - __commonJS -} from "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/ansi-styles/index.js -var require_ansi_styles = __commonJS({ - "../../node_modules/ansi-styles/index.js"(exports, module) { - var ANSI_BACKGROUND_OFFSET = 10; - var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`; - var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`; - function assembleStyles() { - const codes = /* @__PURE__ */ new Map(); - const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - overline: [53, 55], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - // Bright color - blackBright: [90, 39], - redBright: [91, 39], - greenBright: [92, 39], - yellowBright: [93, 39], - blueBright: [94, 39], - magentaBright: [95, 39], - cyanBright: [96, 39], - whiteBright: [97, 39] - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], - // Bright color - bgBlackBright: [100, 49], - bgRedBright: [101, 49], - bgGreenBright: [102, 49], - bgYellowBright: [103, 49], - bgBlueBright: [104, 49], - bgMagentaBright: [105, 49], - bgCyanBright: [106, 49], - bgWhiteBright: [107, 49] - } - }; - styles.color.gray = styles.color.blackBright; - styles.bgColor.bgGray = styles.bgColor.bgBlackBright; - styles.color.grey = styles.color.blackBright; - styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; - for (const [groupName, group] of Object.entries(styles)) { - for (const [styleName, style] of Object.entries(group)) { - styles[styleName] = { - open: `\x1B[${style[0]}m`, - close: `\x1B[${style[1]}m` - }; - group[styleName] = styles[styleName]; - codes.set(style[0], style[1]); - } - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); - } - Object.defineProperty(styles, "codes", { - value: codes, - enumerable: false - }); - styles.color.close = "\x1B[39m"; - styles.bgColor.close = "\x1B[49m"; - styles.color.ansi256 = wrapAnsi256(); - styles.color.ansi16m = wrapAnsi16m(); - styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET); - styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET); - Object.defineProperties(styles, { - rgbToAnsi256: { - value: (red, green, blue) => { - if (red === green && green === blue) { - if (red < 8) { - return 16; - } - if (red > 248) { - return 231; - } - return Math.round((red - 8) / 247 * 24) + 232; - } - return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5); - }, - enumerable: false - }, - hexToRgb: { - value: (hex) => { - const matches = /(?[a-f\d]{6}|[a-f\d]{3})/i.exec(hex.toString(16)); - if (!matches) { - return [0, 0, 0]; - } - let { colorString } = matches.groups; - if (colorString.length === 3) { - colorString = colorString.split("").map((character) => character + character).join(""); - } - const integer = Number.parseInt(colorString, 16); - return [ - integer >> 16 & 255, - integer >> 8 & 255, - integer & 255 - ]; - }, - enumerable: false - }, - hexToAnsi256: { - value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)), - enumerable: false - } - }); - return styles; - } - Object.defineProperty(module, "exports", { - enumerable: true, - get: assembleStyles - }); - } -}); - -export { - require_ansi_styles -}; -//# sourceMappingURL=chunk-UJ726J2L.js.map diff --git a/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map b/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map deleted file mode 100644 index a7ed0ae..0000000 --- a/packages/ridb/node_modules/.vite/deps/chunk-UJ726J2L.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/ansi-styles/index.js"], - "sourcesContent": ["'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n"], - "mappings": "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", - "names": [] -} diff --git a/packages/ridb/node_modules/.vite/deps/package.json b/packages/ridb/node_modules/.vite/deps/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/packages/ridb/node_modules/.vite/deps/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/packages/ridb/node_modules/.vite/deps/uuid.js b/packages/ridb/node_modules/.vite/deps/uuid.js deleted file mode 100644 index f360aa5..0000000 --- a/packages/ridb/node_modules/.vite/deps/uuid.js +++ /dev/null @@ -1,528 +0,0 @@ -import "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/uuid/dist/esm-browser/max.js -var max_default = "ffffffff-ffff-ffff-ffff-ffffffffffff"; - -// ../../node_modules/uuid/dist/esm-browser/nil.js -var nil_default = "00000000-0000-0000-0000-000000000000"; - -// ../../node_modules/uuid/dist/esm-browser/regex.js -var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i; - -// ../../node_modules/uuid/dist/esm-browser/validate.js -function validate(uuid) { - return typeof uuid === "string" && regex_default.test(uuid); -} -var validate_default = validate; - -// ../../node_modules/uuid/dist/esm-browser/parse.js -function parse(uuid) { - if (!validate_default(uuid)) { - throw TypeError("Invalid UUID"); - } - let v; - return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, v >>> 16 & 255, v >>> 8 & 255, v & 255, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255, v / 4294967296 & 255, v >>> 24 & 255, v >>> 16 & 255, v >>> 8 & 255, v & 255); -} -var parse_default = parse; - -// ../../node_modules/uuid/dist/esm-browser/stringify.js -var byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 256).toString(16).slice(1)); -} -function unsafeStringify(arr, offset = 0) { - return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); -} -function stringify(arr, offset = 0) { - const uuid = unsafeStringify(arr, offset); - if (!validate_default(uuid)) { - throw TypeError("Stringified UUID is invalid"); - } - return uuid; -} -var stringify_default = stringify; - -// ../../node_modules/uuid/dist/esm-browser/rng.js -var getRandomValues; -var rnds8 = new Uint8Array(16); -function rng() { - if (!getRandomValues) { - if (typeof crypto === "undefined" || !crypto.getRandomValues) { - throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); - } - getRandomValues = crypto.getRandomValues.bind(crypto); - } - return getRandomValues(rnds8); -} - -// ../../node_modules/uuid/dist/esm-browser/v1.js -var _state = {}; -function v1(options, buf, offset) { - var _a; - let bytes; - const isV6 = (options == null ? void 0 : options._v6) ?? false; - if (options) { - const optionsKeys = Object.keys(options); - if (optionsKeys.length === 1 && optionsKeys[0] === "_v6") { - options = void 0; - } - } - if (options) { - bytes = v1Bytes(options.random ?? ((_a = options.rng) == null ? void 0 : _a.call(options)) ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset); - } else { - const now = Date.now(); - const rnds = rng(); - updateV1State(_state, now, rnds); - bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? void 0 : _state.clockseq, isV6 ? void 0 : _state.node, buf, offset); - } - return buf ? bytes : unsafeStringify(bytes); -} -function updateV1State(state, now, rnds) { - state.msecs ?? (state.msecs = -Infinity); - state.nsecs ?? (state.nsecs = 0); - if (now === state.msecs) { - state.nsecs++; - if (state.nsecs >= 1e4) { - state.node = void 0; - state.nsecs = 0; - } - } else if (now > state.msecs) { - state.nsecs = 0; - } else if (now < state.msecs) { - state.node = void 0; - } - if (!state.node) { - state.node = rnds.slice(10, 16); - state.node[0] |= 1; - state.clockseq = (rnds[8] << 8 | rnds[9]) & 16383; - } - state.msecs = now; - return state; -} -function v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) { - if (!buf) { - buf = new Uint8Array(16); - offset = 0; - } - msecs ?? (msecs = Date.now()); - nsecs ?? (nsecs = 0); - clockseq ?? (clockseq = (rnds[8] << 8 | rnds[9]) & 16383); - node ?? (node = rnds.slice(10, 16)); - msecs += 122192928e5; - const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; - buf[offset++] = tl >>> 24 & 255; - buf[offset++] = tl >>> 16 & 255; - buf[offset++] = tl >>> 8 & 255; - buf[offset++] = tl & 255; - const tmh = msecs / 4294967296 * 1e4 & 268435455; - buf[offset++] = tmh >>> 8 & 255; - buf[offset++] = tmh & 255; - buf[offset++] = tmh >>> 24 & 15 | 16; - buf[offset++] = tmh >>> 16 & 255; - buf[offset++] = clockseq >>> 8 | 128; - buf[offset++] = clockseq & 255; - for (let n = 0; n < 6; ++n) { - buf[offset++] = node[n]; - } - return buf; -} -var v1_default = v1; - -// ../../node_modules/uuid/dist/esm-browser/v1ToV6.js -function v1ToV6(uuid) { - const v1Bytes2 = typeof uuid === "string" ? parse_default(uuid) : uuid; - const v6Bytes = _v1ToV6(v1Bytes2); - return typeof uuid === "string" ? unsafeStringify(v6Bytes) : v6Bytes; -} -function _v1ToV6(v1Bytes2) { - return Uint8Array.of((v1Bytes2[6] & 15) << 4 | v1Bytes2[7] >> 4 & 15, (v1Bytes2[7] & 15) << 4 | (v1Bytes2[4] & 240) >> 4, (v1Bytes2[4] & 15) << 4 | (v1Bytes2[5] & 240) >> 4, (v1Bytes2[5] & 15) << 4 | (v1Bytes2[0] & 240) >> 4, (v1Bytes2[0] & 15) << 4 | (v1Bytes2[1] & 240) >> 4, (v1Bytes2[1] & 15) << 4 | (v1Bytes2[2] & 240) >> 4, 96 | v1Bytes2[2] & 15, v1Bytes2[3], v1Bytes2[8], v1Bytes2[9], v1Bytes2[10], v1Bytes2[11], v1Bytes2[12], v1Bytes2[13], v1Bytes2[14], v1Bytes2[15]); -} - -// ../../node_modules/uuid/dist/esm-browser/md5.js -function md5(bytes) { - const words = uint8ToUint32(bytes); - const md5Bytes = wordsToMd5(words, bytes.length * 8); - return uint32ToUint8(md5Bytes); -} -function uint32ToUint8(input) { - const bytes = new Uint8Array(input.length * 4); - for (let i = 0; i < input.length * 4; i++) { - bytes[i] = input[i >> 2] >>> i % 4 * 8 & 255; - } - return bytes; -} -function getOutputLength(inputLength8) { - return (inputLength8 + 64 >>> 9 << 4) + 14 + 1; -} -function wordsToMd5(x, len) { - const xpad = new Uint32Array(getOutputLength(len)).fill(0); - xpad.set(x); - xpad[len >> 5] |= 128 << len % 32; - xpad[xpad.length - 1] = len; - x = xpad; - let a = 1732584193; - let b = -271733879; - let c = -1732584194; - let d = 271733878; - for (let i = 0; i < x.length; i += 16) { - const olda = a; - const oldb = b; - const oldc = c; - const oldd = d; - a = md5ff(a, b, c, d, x[i], 7, -680876936); - d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); - c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); - b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); - d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); - a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = md5ff(c, d, a, b, x[i + 10], 17, -42063); - b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); - c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); - a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); - d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); - b = md5gg(b, c, d, a, x[i], 20, -373897302); - a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); - d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); - c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); - b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); - a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); - d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); - b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); - c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); - a = md5hh(a, b, c, d, x[i + 5], 4, -378558); - d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); - a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); - b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); - d = md5hh(d, a, b, c, x[i], 11, -358537222); - c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); - b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); - a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); - d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); - c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); - b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); - a = md5ii(a, b, c, d, x[i], 6, -198630844); - d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); - a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); - b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); - c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); - d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); - b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); - a = safeAdd(a, olda); - b = safeAdd(b, oldb); - c = safeAdd(c, oldc); - d = safeAdd(d, oldd); - } - return Uint32Array.of(a, b, c, d); -} -function uint8ToUint32(input) { - if (input.length === 0) { - return new Uint32Array(); - } - const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0); - for (let i = 0; i < input.length; i++) { - output[i >> 2] |= (input[i] & 255) << i % 4 * 8; - } - return output; -} -function safeAdd(x, y) { - const lsw = (x & 65535) + (y & 65535); - const msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return msw << 16 | lsw & 65535; -} -function bitRotateLeft(num, cnt) { - return num << cnt | num >>> 32 - cnt; -} -function md5cmn(q, a, b, x, s, t) { - return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); -} -function md5ff(a, b, c, d, x, s, t) { - return md5cmn(b & c | ~b & d, a, b, x, s, t); -} -function md5gg(a, b, c, d, x, s, t) { - return md5cmn(b & d | c & ~d, a, b, x, s, t); -} -function md5hh(a, b, c, d, x, s, t) { - return md5cmn(b ^ c ^ d, a, b, x, s, t); -} -function md5ii(a, b, c, d, x, s, t) { - return md5cmn(c ^ (b | ~d), a, b, x, s, t); -} -var md5_default = md5; - -// ../../node_modules/uuid/dist/esm-browser/v35.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); - const bytes = new Uint8Array(str.length); - for (let i = 0; i < str.length; ++i) { - bytes[i] = str.charCodeAt(i); - } - return bytes; -} -var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; -var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; -function v35(version2, hash, value, namespace, buf, offset) { - const valueBytes = typeof value === "string" ? stringToBytes(value) : value; - const namespaceBytes = typeof namespace === "string" ? parse_default(namespace) : namespace; - if (typeof namespace === "string") { - namespace = parse_default(namespace); - } - if ((namespace == null ? void 0 : namespace.length) !== 16) { - throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); - } - let bytes = new Uint8Array(16 + valueBytes.length); - bytes.set(namespaceBytes); - bytes.set(valueBytes, namespaceBytes.length); - bytes = hash(bytes); - bytes[6] = bytes[6] & 15 | version2; - bytes[8] = bytes[8] & 63 | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - return buf; - } - return unsafeStringify(bytes); -} - -// ../../node_modules/uuid/dist/esm-browser/v3.js -function v3(value, namespace, buf, offset) { - return v35(48, md5_default, value, namespace, buf, offset); -} -v3.DNS = DNS; -v3.URL = URL; -var v3_default = v3; - -// ../../node_modules/uuid/dist/esm-browser/native.js -var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); -var native_default = { randomUUID }; - -// ../../node_modules/uuid/dist/esm-browser/v4.js -function v4(options, buf, offset) { - if (native_default.randomUUID && !buf && !options) { - return native_default.randomUUID(); - } - options = options || {}; - const rnds = options.random || (options.rng || rng)(); - rnds[6] = rnds[6] & 15 | 64; - rnds[8] = rnds[8] & 63 | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return unsafeStringify(rnds); -} -var v4_default = v4; - -// ../../node_modules/uuid/dist/esm-browser/sha1.js -function f(s, x, y, z) { - switch (s) { - case 0: - return x & y ^ ~x & z; - case 1: - return x ^ y ^ z; - case 2: - return x & y ^ x & z ^ y & z; - case 3: - return x ^ y ^ z; - } -} -function ROTL(x, n) { - return x << n | x >>> 32 - n; -} -function sha1(bytes) { - const K = [1518500249, 1859775393, 2400959708, 3395469782]; - const H = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; - const newBytes = new Uint8Array(bytes.length + 1); - newBytes.set(bytes); - newBytes[bytes.length] = 128; - bytes = newBytes; - const l = bytes.length / 4 + 2; - const N = Math.ceil(l / 16); - const M = new Array(N); - for (let i = 0; i < N; ++i) { - const arr = new Uint32Array(16); - for (let j = 0; j < 16; ++j) { - arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3]; - } - M[i] = arr; - } - M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); - M[N - 1][14] = Math.floor(M[N - 1][14]); - M[N - 1][15] = (bytes.length - 1) * 8 & 4294967295; - for (let i = 0; i < N; ++i) { - const W = new Uint32Array(80); - for (let t = 0; t < 16; ++t) { - W[t] = M[i][t]; - } - for (let t = 16; t < 80; ++t) { - W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1); - } - let a = H[0]; - let b = H[1]; - let c = H[2]; - let d = H[3]; - let e = H[4]; - for (let t = 0; t < 80; ++t) { - const s = Math.floor(t / 20); - const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0; - e = d; - d = c; - c = ROTL(b, 30) >>> 0; - b = a; - a = T; - } - H[0] = H[0] + a >>> 0; - H[1] = H[1] + b >>> 0; - H[2] = H[2] + c >>> 0; - H[3] = H[3] + d >>> 0; - H[4] = H[4] + e >>> 0; - } - return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]); -} -var sha1_default = sha1; - -// ../../node_modules/uuid/dist/esm-browser/v5.js -function v5(value, namespace, buf, offset) { - return v35(80, sha1_default, value, namespace, buf, offset); -} -v5.DNS = DNS; -v5.URL = URL; -var v5_default = v5; - -// ../../node_modules/uuid/dist/esm-browser/v6.js -function v6(options, buf, offset) { - options ?? (options = {}); - offset ?? (offset = 0); - let bytes = v1_default({ ...options, _v6: true }, new Uint8Array(16)); - bytes = v1ToV6(bytes); - if (buf) { - for (let i = 0; i < 16; i++) { - buf[offset + i] = bytes[i]; - } - return buf; - } - return unsafeStringify(bytes); -} -var v6_default = v6; - -// ../../node_modules/uuid/dist/esm-browser/v6ToV1.js -function v6ToV1(uuid) { - const v6Bytes = typeof uuid === "string" ? parse_default(uuid) : uuid; - const v1Bytes2 = _v6ToV1(v6Bytes); - return typeof uuid === "string" ? unsafeStringify(v1Bytes2) : v1Bytes2; -} -function _v6ToV1(v6Bytes) { - return Uint8Array.of((v6Bytes[3] & 15) << 4 | v6Bytes[4] >> 4 & 15, (v6Bytes[4] & 15) << 4 | (v6Bytes[5] & 240) >> 4, (v6Bytes[5] & 15) << 4 | v6Bytes[6] & 15, v6Bytes[7], (v6Bytes[1] & 15) << 4 | (v6Bytes[2] & 240) >> 4, (v6Bytes[2] & 15) << 4 | (v6Bytes[3] & 240) >> 4, 16 | (v6Bytes[0] & 240) >> 4, (v6Bytes[0] & 15) << 4 | (v6Bytes[1] & 240) >> 4, v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]); -} - -// ../../node_modules/uuid/dist/esm-browser/v7.js -var _state2 = {}; -function v7(options, buf, offset) { - var _a; - let bytes; - if (options) { - bytes = v7Bytes(options.random ?? ((_a = options.rng) == null ? void 0 : _a.call(options)) ?? rng(), options.msecs, options.seq, buf, offset); - } else { - const now = Date.now(); - const rnds = rng(); - updateV7State(_state2, now, rnds); - bytes = v7Bytes(rnds, _state2.msecs, _state2.seq, buf, offset); - } - return buf ? bytes : unsafeStringify(bytes); -} -function updateV7State(state, now, rnds) { - state.msecs ?? (state.msecs = -Infinity); - state.seq ?? (state.seq = 0); - if (now > state.msecs) { - state.seq = rnds[6] << 23 | rnds[7] << 16 | rnds[8] << 8 | rnds[9]; - state.msecs = now; - } else { - state.seq = state.seq + 1 | 0; - if (state.seq === 0) { - state.msecs++; - } - } - return state; -} -function v7Bytes(rnds, msecs, seq, buf, offset = 0) { - if (!buf) { - buf = new Uint8Array(16); - offset = 0; - } - msecs ?? (msecs = Date.now()); - seq ?? (seq = rnds[6] * 127 << 24 | rnds[7] << 16 | rnds[8] << 8 | rnds[9]); - buf[offset++] = msecs / 1099511627776 & 255; - buf[offset++] = msecs / 4294967296 & 255; - buf[offset++] = msecs / 16777216 & 255; - buf[offset++] = msecs / 65536 & 255; - buf[offset++] = msecs / 256 & 255; - buf[offset++] = msecs & 255; - buf[offset++] = 112 | seq >>> 28 & 15; - buf[offset++] = seq >>> 20 & 255; - buf[offset++] = 128 | seq >>> 14 & 63; - buf[offset++] = seq >>> 6 & 255; - buf[offset++] = seq << 2 & 255 | rnds[10] & 3; - buf[offset++] = rnds[11]; - buf[offset++] = rnds[12]; - buf[offset++] = rnds[13]; - buf[offset++] = rnds[14]; - buf[offset++] = rnds[15]; - return buf; -} -var v7_default = v7; - -// ../../node_modules/uuid/dist/esm-browser/version.js -function version(uuid) { - if (!validate_default(uuid)) { - throw TypeError("Invalid UUID"); - } - return parseInt(uuid.slice(14, 15), 16); -} -var version_default = version; -export { - max_default as MAX, - nil_default as NIL, - parse_default as parse, - stringify_default as stringify, - v1_default as v1, - v1ToV6, - v3_default as v3, - v4_default as v4, - v5_default as v5, - v6_default as v6, - v6ToV1, - v7_default as v7, - validate_default as validate, - version_default as version -}; -//# sourceMappingURL=uuid.js.map diff --git a/packages/ridb/node_modules/.vite/deps/uuid.js.map b/packages/ridb/node_modules/.vite/deps/uuid.js.map deleted file mode 100644 index 00f84f9..0000000 --- a/packages/ridb/node_modules/.vite/deps/uuid.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/uuid/dist/esm-browser/max.js", "../../../../../node_modules/uuid/dist/esm-browser/nil.js", "../../../../../node_modules/uuid/dist/esm-browser/regex.js", "../../../../../node_modules/uuid/dist/esm-browser/validate.js", "../../../../../node_modules/uuid/dist/esm-browser/parse.js", "../../../../../node_modules/uuid/dist/esm-browser/stringify.js", "../../../../../node_modules/uuid/dist/esm-browser/rng.js", "../../../../../node_modules/uuid/dist/esm-browser/v1.js", "../../../../../node_modules/uuid/dist/esm-browser/v1ToV6.js", "../../../../../node_modules/uuid/dist/esm-browser/md5.js", "../../../../../node_modules/uuid/dist/esm-browser/v35.js", "../../../../../node_modules/uuid/dist/esm-browser/v3.js", "../../../../../node_modules/uuid/dist/esm-browser/native.js", "../../../../../node_modules/uuid/dist/esm-browser/v4.js", "../../../../../node_modules/uuid/dist/esm-browser/sha1.js", "../../../../../node_modules/uuid/dist/esm-browser/v5.js", "../../../../../node_modules/uuid/dist/esm-browser/v6.js", "../../../../../node_modules/uuid/dist/esm-browser/v6ToV1.js", "../../../../../node_modules/uuid/dist/esm-browser/v7.js", "../../../../../node_modules/uuid/dist/esm-browser/version.js"], - "sourcesContent": ["export default 'ffffffff-ffff-ffff-ffff-ffffffffffff';\n", "export default '00000000-0000-0000-0000-000000000000';\n", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n", "import REGEX from './regex.js';\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;\n", "import validate from './validate.js';\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n let v;\n return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexport default parse;\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v1(options, buf, offset) {\n let bytes;\n const isV6 = options?._v6 ?? false;\n if (options) {\n const optionsKeys = Object.keys(options);\n if (optionsKeys.length === 1 && optionsKeys[0] === '_v6') {\n options = undefined;\n }\n }\n if (options) {\n bytes = v1Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);\n }\n else {\n const now = Date.now();\n const rnds = rng();\n updateV1State(_state, now, rnds);\n bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? undefined : _state.clockseq, isV6 ? undefined : _state.node, buf, offset);\n }\n return buf ? bytes : unsafeStringify(bytes);\n}\nexport function updateV1State(state, now, rnds) {\n state.msecs ??= -Infinity;\n state.nsecs ??= 0;\n if (now === state.msecs) {\n state.nsecs++;\n if (state.nsecs >= 10000) {\n state.node = undefined;\n state.nsecs = 0;\n }\n }\n else if (now > state.msecs) {\n state.nsecs = 0;\n }\n else if (now < state.msecs) {\n state.node = undefined;\n }\n if (!state.node) {\n state.node = rnds.slice(10, 16);\n state.node[0] |= 0x01;\n state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n }\n state.msecs = now;\n return state;\n}\nfunction v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n }\n msecs ??= Date.now();\n nsecs ??= 0;\n clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n node ??= rnds.slice(10, 16);\n msecs += 12219292800000;\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n buf[offset++] = (tl >>> 24) & 0xff;\n buf[offset++] = (tl >>> 16) & 0xff;\n buf[offset++] = (tl >>> 8) & 0xff;\n buf[offset++] = tl & 0xff;\n const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n buf[offset++] = (tmh >>> 8) & 0xff;\n buf[offset++] = tmh & 0xff;\n buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10;\n buf[offset++] = (tmh >>> 16) & 0xff;\n buf[offset++] = (clockseq >>> 8) | 0x80;\n buf[offset++] = clockseq & 0xff;\n for (let n = 0; n < 6; ++n) {\n buf[offset++] = node[n];\n }\n return buf;\n}\nexport default v1;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v1ToV6(uuid) {\n const v1Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n const v6Bytes = _v1ToV6(v1Bytes);\n return typeof uuid === 'string' ? unsafeStringify(v6Bytes) : v6Bytes;\n}\nfunction _v1ToV6(v1Bytes) {\n return Uint8Array.of(((v1Bytes[6] & 0x0f) << 4) | ((v1Bytes[7] >> 4) & 0x0f), ((v1Bytes[7] & 0x0f) << 4) | ((v1Bytes[4] & 0xf0) >> 4), ((v1Bytes[4] & 0x0f) << 4) | ((v1Bytes[5] & 0xf0) >> 4), ((v1Bytes[5] & 0x0f) << 4) | ((v1Bytes[0] & 0xf0) >> 4), ((v1Bytes[0] & 0x0f) << 4) | ((v1Bytes[1] & 0xf0) >> 4), ((v1Bytes[1] & 0x0f) << 4) | ((v1Bytes[2] & 0xf0) >> 4), 0x60 | (v1Bytes[2] & 0x0f), v1Bytes[3], v1Bytes[8], v1Bytes[9], v1Bytes[10], v1Bytes[11], v1Bytes[12], v1Bytes[13], v1Bytes[14], v1Bytes[15]);\n}\n", "function md5(bytes) {\n const words = uint8ToUint32(bytes);\n const md5Bytes = wordsToMd5(words, bytes.length * 8);\n return uint32ToUint8(md5Bytes);\n}\nfunction uint32ToUint8(input) {\n const bytes = new Uint8Array(input.length * 4);\n for (let i = 0; i < input.length * 4; i++) {\n bytes[i] = (input[i >> 2] >>> ((i % 4) * 8)) & 0xff;\n }\n return bytes;\n}\nfunction getOutputLength(inputLength8) {\n return (((inputLength8 + 64) >>> 9) << 4) + 14 + 1;\n}\nfunction wordsToMd5(x, len) {\n const xpad = new Uint32Array(getOutputLength(len)).fill(0);\n xpad.set(x);\n xpad[len >> 5] |= 0x80 << len % 32;\n xpad[xpad.length - 1] = len;\n x = xpad;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return Uint32Array.of(a, b, c, d);\n}\nfunction uint8ToUint32(input) {\n if (input.length === 0) {\n return new Uint32Array();\n }\n const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0);\n for (let i = 0; i < input.length; i++) {\n output[i >> 2] |= (input[i] & 0xff) << ((i % 4) * 8);\n }\n return output;\n}\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\nfunction bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nexport default md5;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport function stringToBytes(str) {\n str = unescape(encodeURIComponent(str));\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n return bytes;\n}\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(version, hash, value, namespace, buf, offset) {\n const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace;\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n if (namespace?.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n }\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\n", "import md5 from './md5.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v3(value, namespace, buf, offset) {\n return v35(0x30, md5, value, namespace, buf, offset);\n}\nv3.DNS = DNS;\nv3.URL = URL;\nexport default v3;\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n", "function f(s, x, y, z) {\n switch (s) {\n case 0:\n return (x & y) ^ (~x & z);\n case 1:\n return x ^ y ^ z;\n case 2:\n return (x & y) ^ (x & z) ^ (y & z);\n case 3:\n return x ^ y ^ z;\n }\n}\nfunction ROTL(x, n) {\n return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n const newBytes = new Uint8Array(bytes.length + 1);\n newBytes.set(bytes);\n newBytes[bytes.length] = 0x80;\n bytes = newBytes;\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n for (let j = 0; j < 16; ++j) {\n arr[j] =\n (bytes[i * 64 + j * 4] << 24) |\n (bytes[i * 64 + j * 4 + 1] << 16) |\n (bytes[i * 64 + j * 4 + 2] << 8) |\n bytes[i * 64 + j * 4 + 3];\n }\n M[i] = arr;\n }\n M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n }\n return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexport default sha1;\n", "import sha1 from './sha1.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v5(value, namespace, buf, offset) {\n return v35(0x50, sha1, value, namespace, buf, offset);\n}\nv5.DNS = DNS;\nv5.URL = URL;\nexport default v5;\n", "import { unsafeStringify } from './stringify.js';\nimport v1 from './v1.js';\nimport v1ToV6 from './v1ToV6.js';\nfunction v6(options, buf, offset) {\n options ??= {};\n offset ??= 0;\n let bytes = v1({ ...options, _v6: true }, new Uint8Array(16));\n bytes = v1ToV6(bytes);\n if (buf) {\n for (let i = 0; i < 16; i++) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\nexport default v6;\n", "import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v6ToV1(uuid) {\n const v6Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n const v1Bytes = _v6ToV1(v6Bytes);\n return typeof uuid === 'string' ? unsafeStringify(v1Bytes) : v1Bytes;\n}\nfunction _v6ToV1(v6Bytes) {\n return Uint8Array.of(((v6Bytes[3] & 0x0f) << 4) | ((v6Bytes[4] >> 4) & 0x0f), ((v6Bytes[4] & 0x0f) << 4) | ((v6Bytes[5] & 0xf0) >> 4), ((v6Bytes[5] & 0x0f) << 4) | (v6Bytes[6] & 0x0f), v6Bytes[7], ((v6Bytes[1] & 0x0f) << 4) | ((v6Bytes[2] & 0xf0) >> 4), ((v6Bytes[2] & 0x0f) << 4) | ((v6Bytes[3] & 0xf0) >> 4), 0x10 | ((v6Bytes[0] & 0xf0) >> 4), ((v6Bytes[0] & 0x0f) << 4) | ((v6Bytes[1] & 0xf0) >> 4), v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v7(options, buf, offset) {\n let bytes;\n if (options) {\n bytes = v7Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.seq, buf, offset);\n }\n else {\n const now = Date.now();\n const rnds = rng();\n updateV7State(_state, now, rnds);\n bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);\n }\n return buf ? bytes : unsafeStringify(bytes);\n}\nexport function updateV7State(state, now, rnds) {\n state.msecs ??= -Infinity;\n state.seq ??= 0;\n if (now > state.msecs) {\n state.seq = (rnds[6] << 23) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n state.msecs = now;\n }\n else {\n state.seq = (state.seq + 1) | 0;\n if (state.seq === 0) {\n state.msecs++;\n }\n }\n return state;\n}\nfunction v7Bytes(rnds, msecs, seq, buf, offset = 0) {\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n }\n msecs ??= Date.now();\n seq ??= ((rnds[6] * 0x7f) << 24) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n buf[offset++] = (msecs / 0x10000000000) & 0xff;\n buf[offset++] = (msecs / 0x100000000) & 0xff;\n buf[offset++] = (msecs / 0x1000000) & 0xff;\n buf[offset++] = (msecs / 0x10000) & 0xff;\n buf[offset++] = (msecs / 0x100) & 0xff;\n buf[offset++] = msecs & 0xff;\n buf[offset++] = 0x70 | ((seq >>> 28) & 0x0f);\n buf[offset++] = (seq >>> 20) & 0xff;\n buf[offset++] = 0x80 | ((seq >>> 14) & 0x3f);\n buf[offset++] = (seq >>> 6) & 0xff;\n buf[offset++] = ((seq << 2) & 0xff) | (rnds[10] & 0x03);\n buf[offset++] = rnds[11];\n buf[offset++] = rnds[12];\n buf[offset++] = rnds[13];\n buf[offset++] = rnds[14];\n buf[offset++] = rnds[15];\n return buf;\n}\nexport default v7;\n", "import validate from './validate.js';\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n return parseInt(uuid.slice(14, 15), 16);\n}\nexport default version;\n"], - "mappings": "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", - "names": ["v1Bytes", "version", "v1Bytes", "_state"] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js deleted file mode 100644 index e26d981..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js +++ /dev/null @@ -1,1640 +0,0 @@ -import { - __commonJS, - __toESM -} from "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js -var require_sourcemap_codec_umd = __commonJS({ - "../../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js"(exports, module) { - (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.sourcemapCodec = {})); - })(exports, function(exports2) { - "use strict"; - const comma = ",".charCodeAt(0); - const semicolon = ";".charCodeAt(0); - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - const intToChar = new Uint8Array(64); - const charToInt = new Uint8Array(128); - for (let i = 0; i < chars.length; i++) { - const c = chars.charCodeAt(i); - intToChar[i] = c; - charToInt[c] = i; - } - function decodeInteger(reader, relative) { - let value = 0; - let shift = 0; - let integer = 0; - do { - const c = reader.next(); - integer = charToInt[c]; - value |= (integer & 31) << shift; - shift += 5; - } while (integer & 32); - const shouldNegate = value & 1; - value >>>= 1; - if (shouldNegate) { - value = -2147483648 | -value; - } - return relative + value; - } - function encodeInteger(builder, num, relative) { - let delta = num - relative; - delta = delta < 0 ? -delta << 1 | 1 : delta << 1; - do { - let clamped = delta & 31; - delta >>>= 5; - if (delta > 0) - clamped |= 32; - builder.write(intToChar[clamped]); - } while (delta > 0); - return num; - } - function hasMoreVlq(reader, max) { - if (reader.pos >= max) - return false; - return reader.peek() !== comma; - } - const bufLength = 1024 * 16; - const td = typeof TextDecoder !== "undefined" ? new TextDecoder() : typeof Buffer !== "undefined" ? { - decode(buf) { - const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); - return out.toString(); - } - } : { - decode(buf) { - let out = ""; - for (let i = 0; i < buf.length; i++) { - out += String.fromCharCode(buf[i]); - } - return out; - } - }; - class StringWriter { - constructor() { - this.pos = 0; - this.out = ""; - this.buffer = new Uint8Array(bufLength); - } - write(v) { - const { buffer } = this; - buffer[this.pos++] = v; - if (this.pos === bufLength) { - this.out += td.decode(buffer); - this.pos = 0; - } - } - flush() { - const { buffer, out, pos } = this; - return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; - } - } - class StringReader { - constructor(buffer) { - this.pos = 0; - this.buffer = buffer; - } - next() { - return this.buffer.charCodeAt(this.pos++); - } - peek() { - return this.buffer.charCodeAt(this.pos); - } - indexOf(char) { - const { buffer, pos } = this; - const idx = buffer.indexOf(char, pos); - return idx === -1 ? buffer.length : idx; - } - } - const EMPTY = []; - function decodeOriginalScopes(input) { - const { length } = input; - const reader = new StringReader(input); - const scopes = []; - const stack = []; - let line = 0; - for (; reader.pos < length; reader.pos++) { - line = decodeInteger(reader, line); - const column = decodeInteger(reader, 0); - if (!hasMoreVlq(reader, length)) { - const last = stack.pop(); - last[2] = line; - last[3] = column; - continue; - } - const kind = decodeInteger(reader, 0); - const fields = decodeInteger(reader, 0); - const hasName = fields & 1; - const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]; - let vars = EMPTY; - if (hasMoreVlq(reader, length)) { - vars = []; - do { - const varsIndex = decodeInteger(reader, 0); - vars.push(varsIndex); - } while (hasMoreVlq(reader, length)); - } - scope.vars = vars; - scopes.push(scope); - stack.push(scope); - } - return scopes; - } - function encodeOriginalScopes(scopes) { - const writer = new StringWriter(); - for (let i = 0; i < scopes.length; ) { - i = _encodeOriginalScopes(scopes, i, writer, [0]); - } - return writer.flush(); - } - function _encodeOriginalScopes(scopes, index, writer, state) { - const scope = scopes[index]; - const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; - if (index > 0) - writer.write(comma); - state[0] = encodeInteger(writer, startLine, state[0]); - encodeInteger(writer, startColumn, 0); - encodeInteger(writer, kind, 0); - const fields = scope.length === 6 ? 1 : 0; - encodeInteger(writer, fields, 0); - if (scope.length === 6) - encodeInteger(writer, scope[5], 0); - for (const v of vars) { - encodeInteger(writer, v, 0); - } - for (index++; index < scopes.length; ) { - const next = scopes[index]; - const { 0: l, 1: c } = next; - if (l > endLine || l === endLine && c >= endColumn) { - break; - } - index = _encodeOriginalScopes(scopes, index, writer, state); - } - writer.write(comma); - state[0] = encodeInteger(writer, endLine, state[0]); - encodeInteger(writer, endColumn, 0); - return index; - } - function decodeGeneratedRanges(input) { - const { length } = input; - const reader = new StringReader(input); - const ranges = []; - const stack = []; - let genLine = 0; - let definitionSourcesIndex = 0; - let definitionScopeIndex = 0; - let callsiteSourcesIndex = 0; - let callsiteLine = 0; - let callsiteColumn = 0; - let bindingLine = 0; - let bindingColumn = 0; - do { - const semi = reader.indexOf(";"); - let genColumn = 0; - for (; reader.pos < semi; reader.pos++) { - genColumn = decodeInteger(reader, genColumn); - if (!hasMoreVlq(reader, semi)) { - const last = stack.pop(); - last[2] = genLine; - last[3] = genColumn; - continue; - } - const fields = decodeInteger(reader, 0); - const hasDefinition = fields & 1; - const hasCallsite = fields & 2; - const hasScope = fields & 4; - let callsite = null; - let bindings = EMPTY; - let range; - if (hasDefinition) { - const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); - definitionScopeIndex = decodeInteger(reader, definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0); - definitionSourcesIndex = defSourcesIndex; - range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex]; - } else { - range = [genLine, genColumn, 0, 0]; - } - range.isScope = !!hasScope; - if (hasCallsite) { - const prevCsi = callsiteSourcesIndex; - const prevLine = callsiteLine; - callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); - const sameSource = prevCsi === callsiteSourcesIndex; - callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); - callsiteColumn = decodeInteger(reader, sameSource && prevLine === callsiteLine ? callsiteColumn : 0); - callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; - } - range.callsite = callsite; - if (hasMoreVlq(reader, semi)) { - bindings = []; - do { - bindingLine = genLine; - bindingColumn = genColumn; - const expressionsCount = decodeInteger(reader, 0); - let expressionRanges; - if (expressionsCount < -1) { - expressionRanges = [[decodeInteger(reader, 0)]]; - for (let i = -1; i > expressionsCount; i--) { - const prevBl = bindingLine; - bindingLine = decodeInteger(reader, bindingLine); - bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); - const expression = decodeInteger(reader, 0); - expressionRanges.push([expression, bindingLine, bindingColumn]); - } - } else { - expressionRanges = [[expressionsCount]]; - } - bindings.push(expressionRanges); - } while (hasMoreVlq(reader, semi)); - } - range.bindings = bindings; - ranges.push(range); - stack.push(range); - } - genLine++; - reader.pos = semi + 1; - } while (reader.pos < length); - return ranges; - } - function encodeGeneratedRanges(ranges) { - if (ranges.length === 0) - return ""; - const writer = new StringWriter(); - for (let i = 0; i < ranges.length; ) { - i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); - } - return writer.flush(); - } - function _encodeGeneratedRanges(ranges, index, writer, state) { - const range = ranges[index]; - const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, isScope, callsite, bindings } = range; - if (state[0] < startLine) { - catchupLine(writer, state[0], startLine); - state[0] = startLine; - state[1] = 0; - } else if (index > 0) { - writer.write(comma); - } - state[1] = encodeInteger(writer, range[1], state[1]); - const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0); - encodeInteger(writer, fields, 0); - if (range.length === 6) { - const { 4: sourcesIndex, 5: scopesIndex } = range; - if (sourcesIndex !== state[2]) { - state[3] = 0; - } - state[2] = encodeInteger(writer, sourcesIndex, state[2]); - state[3] = encodeInteger(writer, scopesIndex, state[3]); - } - if (callsite) { - const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite; - if (sourcesIndex !== state[4]) { - state[5] = 0; - state[6] = 0; - } else if (callLine !== state[5]) { - state[6] = 0; - } - state[4] = encodeInteger(writer, sourcesIndex, state[4]); - state[5] = encodeInteger(writer, callLine, state[5]); - state[6] = encodeInteger(writer, callColumn, state[6]); - } - if (bindings) { - for (const binding of bindings) { - if (binding.length > 1) - encodeInteger(writer, -binding.length, 0); - const expression = binding[0][0]; - encodeInteger(writer, expression, 0); - let bindingStartLine = startLine; - let bindingStartColumn = startColumn; - for (let i = 1; i < binding.length; i++) { - const expRange = binding[i]; - bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine); - bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn); - encodeInteger(writer, expRange[0], 0); - } - } - } - for (index++; index < ranges.length; ) { - const next = ranges[index]; - const { 0: l, 1: c } = next; - if (l > endLine || l === endLine && c >= endColumn) { - break; - } - index = _encodeGeneratedRanges(ranges, index, writer, state); - } - if (state[0] < endLine) { - catchupLine(writer, state[0], endLine); - state[0] = endLine; - state[1] = 0; - } else { - writer.write(comma); - } - state[1] = encodeInteger(writer, endColumn, state[1]); - return index; - } - function catchupLine(writer, lastLine, line) { - do { - writer.write(semicolon); - } while (++lastLine < line); - } - function decode(mappings) { - const { length } = mappings; - const reader = new StringReader(mappings); - const decoded = []; - let genColumn = 0; - let sourcesIndex = 0; - let sourceLine = 0; - let sourceColumn = 0; - let namesIndex = 0; - do { - const semi = reader.indexOf(";"); - const line = []; - let sorted = true; - let lastCol = 0; - genColumn = 0; - while (reader.pos < semi) { - let seg; - genColumn = decodeInteger(reader, genColumn); - if (genColumn < lastCol) - sorted = false; - lastCol = genColumn; - if (hasMoreVlq(reader, semi)) { - sourcesIndex = decodeInteger(reader, sourcesIndex); - sourceLine = decodeInteger(reader, sourceLine); - sourceColumn = decodeInteger(reader, sourceColumn); - if (hasMoreVlq(reader, semi)) { - namesIndex = decodeInteger(reader, namesIndex); - seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; - } else { - seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; - } - } else { - seg = [genColumn]; - } - line.push(seg); - reader.pos++; - } - if (!sorted) - sort(line); - decoded.push(line); - reader.pos = semi + 1; - } while (reader.pos <= length); - return decoded; - } - function sort(line) { - line.sort(sortComparator); - } - function sortComparator(a, b) { - return a[0] - b[0]; - } - function encode2(decoded) { - const writer = new StringWriter(); - let sourcesIndex = 0; - let sourceLine = 0; - let sourceColumn = 0; - let namesIndex = 0; - for (let i = 0; i < decoded.length; i++) { - const line = decoded[i]; - if (i > 0) - writer.write(semicolon); - if (line.length === 0) - continue; - let genColumn = 0; - for (let j = 0; j < line.length; j++) { - const segment = line[j]; - if (j > 0) - writer.write(comma); - genColumn = encodeInteger(writer, segment[0], genColumn); - if (segment.length === 1) - continue; - sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); - sourceLine = encodeInteger(writer, segment[2], sourceLine); - sourceColumn = encodeInteger(writer, segment[3], sourceColumn); - if (segment.length === 4) - continue; - namesIndex = encodeInteger(writer, segment[4], namesIndex); - } - } - return writer.flush(); - } - exports2.decode = decode; - exports2.decodeGeneratedRanges = decodeGeneratedRanges; - exports2.decodeOriginalScopes = decodeOriginalScopes; - exports2.encode = encode2; - exports2.encodeGeneratedRanges = encodeGeneratedRanges; - exports2.encodeOriginalScopes = encodeOriginalScopes; - Object.defineProperty(exports2, "__esModule", { value: true }); - }); - } -}); - -// ../../node_modules/magic-string/dist/magic-string.es.mjs -var import_sourcemap_codec = __toESM(require_sourcemap_codec_umd(), 1); -var BitSet = class _BitSet { - constructor(arg) { - this.bits = arg instanceof _BitSet ? arg.bits.slice() : []; - } - add(n2) { - this.bits[n2 >> 5] |= 1 << (n2 & 31); - } - has(n2) { - return !!(this.bits[n2 >> 5] & 1 << (n2 & 31)); - } -}; -var Chunk = class _Chunk { - constructor(start, end, content) { - this.start = start; - this.end = end; - this.original = content; - this.intro = ""; - this.outro = ""; - this.content = content; - this.storeName = false; - this.edited = false; - { - this.previous = null; - this.next = null; - } - } - appendLeft(content) { - this.outro += content; - } - appendRight(content) { - this.intro = this.intro + content; - } - clone() { - const chunk = new _Chunk(this.start, this.end, this.original); - chunk.intro = this.intro; - chunk.outro = this.outro; - chunk.content = this.content; - chunk.storeName = this.storeName; - chunk.edited = this.edited; - return chunk; - } - contains(index) { - return this.start < index && index < this.end; - } - eachNext(fn) { - let chunk = this; - while (chunk) { - fn(chunk); - chunk = chunk.next; - } - } - eachPrevious(fn) { - let chunk = this; - while (chunk) { - fn(chunk); - chunk = chunk.previous; - } - } - edit(content, storeName, contentOnly) { - this.content = content; - if (!contentOnly) { - this.intro = ""; - this.outro = ""; - } - this.storeName = storeName; - this.edited = true; - return this; - } - prependLeft(content) { - this.outro = content + this.outro; - } - prependRight(content) { - this.intro = content + this.intro; - } - reset() { - this.intro = ""; - this.outro = ""; - if (this.edited) { - this.content = this.original; - this.storeName = false; - this.edited = false; - } - } - split(index) { - const sliceIndex = index - this.start; - const originalBefore = this.original.slice(0, sliceIndex); - const originalAfter = this.original.slice(sliceIndex); - this.original = originalBefore; - const newChunk = new _Chunk(index, this.end, originalAfter); - newChunk.outro = this.outro; - this.outro = ""; - this.end = index; - if (this.edited) { - newChunk.edit("", false); - this.content = ""; - } else { - this.content = originalBefore; - } - newChunk.next = this.next; - if (newChunk.next) newChunk.next.previous = newChunk; - newChunk.previous = this; - this.next = newChunk; - return newChunk; - } - toString() { - return this.intro + this.content + this.outro; - } - trimEnd(rx) { - this.outro = this.outro.replace(rx, ""); - if (this.outro.length) return true; - const trimmed = this.content.replace(rx, ""); - if (trimmed.length) { - if (trimmed !== this.content) { - this.split(this.start + trimmed.length).edit("", void 0, true); - if (this.edited) { - this.edit(trimmed, this.storeName, true); - } - } - return true; - } else { - this.edit("", void 0, true); - this.intro = this.intro.replace(rx, ""); - if (this.intro.length) return true; - } - } - trimStart(rx) { - this.intro = this.intro.replace(rx, ""); - if (this.intro.length) return true; - const trimmed = this.content.replace(rx, ""); - if (trimmed.length) { - if (trimmed !== this.content) { - const newChunk = this.split(this.end - trimmed.length); - if (this.edited) { - newChunk.edit(trimmed, this.storeName, true); - } - this.edit("", void 0, true); - } - return true; - } else { - this.edit("", void 0, true); - this.outro = this.outro.replace(rx, ""); - if (this.outro.length) return true; - } - } -}; -function getBtoa() { - if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") { - return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); - } else if (typeof Buffer === "function") { - return (str) => Buffer.from(str, "utf-8").toString("base64"); - } else { - return () => { - throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported."); - }; - } -} -var btoa = getBtoa(); -var SourceMap = class { - constructor(properties) { - this.version = 3; - this.file = properties.file; - this.sources = properties.sources; - this.sourcesContent = properties.sourcesContent; - this.names = properties.names; - this.mappings = (0, import_sourcemap_codec.encode)(properties.mappings); - if (typeof properties.x_google_ignoreList !== "undefined") { - this.x_google_ignoreList = properties.x_google_ignoreList; - } - if (typeof properties.debugId !== "undefined") { - this.debugId = properties.debugId; - } - } - toString() { - return JSON.stringify(this); - } - toUrl() { - return "data:application/json;charset=utf-8;base64," + btoa(this.toString()); - } -}; -function guessIndent(code) { - const lines = code.split("\n"); - const tabbed = lines.filter((line) => /^\t+/.test(line)); - const spaced = lines.filter((line) => /^ {2,}/.test(line)); - if (tabbed.length === 0 && spaced.length === 0) { - return null; - } - if (tabbed.length >= spaced.length) { - return " "; - } - const min = spaced.reduce((previous, current) => { - const numSpaces = /^ +/.exec(current)[0].length; - return Math.min(numSpaces, previous); - }, Infinity); - return new Array(min + 1).join(" "); -} -function getRelativePath(from, to) { - const fromParts = from.split(/[/\\]/); - const toParts = to.split(/[/\\]/); - fromParts.pop(); - while (fromParts[0] === toParts[0]) { - fromParts.shift(); - toParts.shift(); - } - if (fromParts.length) { - let i = fromParts.length; - while (i--) fromParts[i] = ".."; - } - return fromParts.concat(toParts).join("/"); -} -var toString = Object.prototype.toString; -function isObject(thing) { - return toString.call(thing) === "[object Object]"; -} -function getLocator(source) { - const originalLines = source.split("\n"); - const lineOffsets = []; - for (let i = 0, pos = 0; i < originalLines.length; i++) { - lineOffsets.push(pos); - pos += originalLines[i].length + 1; - } - return function locate(index) { - let i = 0; - let j = lineOffsets.length; - while (i < j) { - const m = i + j >> 1; - if (index < lineOffsets[m]) { - j = m; - } else { - i = m + 1; - } - } - const line = i - 1; - const column = index - lineOffsets[line]; - return { line, column }; - }; -} -var wordRegex = /\w/; -var Mappings = class { - constructor(hires) { - this.hires = hires; - this.generatedCodeLine = 0; - this.generatedCodeColumn = 0; - this.raw = []; - this.rawSegments = this.raw[this.generatedCodeLine] = []; - this.pending = null; - } - addEdit(sourceIndex, content, loc, nameIndex) { - if (content.length) { - const contentLengthMinusOne = content.length - 1; - let contentLineEnd = content.indexOf("\n", 0); - let previousContentLineEnd = -1; - while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { - const segment2 = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; - if (nameIndex >= 0) { - segment2.push(nameIndex); - } - this.rawSegments.push(segment2); - this.generatedCodeLine += 1; - this.raw[this.generatedCodeLine] = this.rawSegments = []; - this.generatedCodeColumn = 0; - previousContentLineEnd = contentLineEnd; - contentLineEnd = content.indexOf("\n", contentLineEnd + 1); - } - const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; - if (nameIndex >= 0) { - segment.push(nameIndex); - } - this.rawSegments.push(segment); - this.advance(content.slice(previousContentLineEnd + 1)); - } else if (this.pending) { - this.rawSegments.push(this.pending); - this.advance(content); - } - this.pending = null; - } - addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { - let originalCharIndex = chunk.start; - let first = true; - let charInHiresBoundary = false; - while (originalCharIndex < chunk.end) { - if (original[originalCharIndex] === "\n") { - loc.line += 1; - loc.column = 0; - this.generatedCodeLine += 1; - this.raw[this.generatedCodeLine] = this.rawSegments = []; - this.generatedCodeColumn = 0; - first = true; - charInHiresBoundary = false; - } else { - if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { - const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; - if (this.hires === "boundary") { - if (wordRegex.test(original[originalCharIndex])) { - if (!charInHiresBoundary) { - this.rawSegments.push(segment); - charInHiresBoundary = true; - } - } else { - this.rawSegments.push(segment); - charInHiresBoundary = false; - } - } else { - this.rawSegments.push(segment); - } - } - loc.column += 1; - this.generatedCodeColumn += 1; - first = false; - } - originalCharIndex += 1; - } - this.pending = null; - } - advance(str) { - if (!str) return; - const lines = str.split("\n"); - if (lines.length > 1) { - for (let i = 0; i < lines.length - 1; i++) { - this.generatedCodeLine++; - this.raw[this.generatedCodeLine] = this.rawSegments = []; - } - this.generatedCodeColumn = 0; - } - this.generatedCodeColumn += lines[lines.length - 1].length; - } -}; -var n = "\n"; -var warned = { - insertLeft: false, - insertRight: false, - storeName: false -}; -var MagicString = class _MagicString { - constructor(string, options = {}) { - const chunk = new Chunk(0, string.length, string); - Object.defineProperties(this, { - original: { writable: true, value: string }, - outro: { writable: true, value: "" }, - intro: { writable: true, value: "" }, - firstChunk: { writable: true, value: chunk }, - lastChunk: { writable: true, value: chunk }, - lastSearchedChunk: { writable: true, value: chunk }, - byStart: { writable: true, value: {} }, - byEnd: { writable: true, value: {} }, - filename: { writable: true, value: options.filename }, - indentExclusionRanges: { writable: true, value: options.indentExclusionRanges }, - sourcemapLocations: { writable: true, value: new BitSet() }, - storedNames: { writable: true, value: {} }, - indentStr: { writable: true, value: void 0 }, - ignoreList: { writable: true, value: options.ignoreList }, - offset: { writable: true, value: options.offset || 0 } - }); - this.byStart[0] = chunk; - this.byEnd[string.length] = chunk; - } - addSourcemapLocation(char) { - this.sourcemapLocations.add(char); - } - append(content) { - if (typeof content !== "string") throw new TypeError("outro content must be a string"); - this.outro += content; - return this; - } - appendLeft(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byEnd[index]; - if (chunk) { - chunk.appendLeft(content); - } else { - this.intro += content; - } - return this; - } - appendRight(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byStart[index]; - if (chunk) { - chunk.appendRight(content); - } else { - this.outro += content; - } - return this; - } - clone() { - const cloned = new _MagicString(this.original, { filename: this.filename, offset: this.offset }); - let originalChunk = this.firstChunk; - let clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone(); - while (originalChunk) { - cloned.byStart[clonedChunk.start] = clonedChunk; - cloned.byEnd[clonedChunk.end] = clonedChunk; - const nextOriginalChunk = originalChunk.next; - const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); - if (nextClonedChunk) { - clonedChunk.next = nextClonedChunk; - nextClonedChunk.previous = clonedChunk; - clonedChunk = nextClonedChunk; - } - originalChunk = nextOriginalChunk; - } - cloned.lastChunk = clonedChunk; - if (this.indentExclusionRanges) { - cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); - } - cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); - cloned.intro = this.intro; - cloned.outro = this.outro; - return cloned; - } - generateDecodedMap(options) { - options = options || {}; - const sourceIndex = 0; - const names = Object.keys(this.storedNames); - const mappings = new Mappings(options.hires); - const locate = getLocator(this.original); - if (this.intro) { - mappings.advance(this.intro); - } - this.firstChunk.eachNext((chunk) => { - const loc = locate(chunk.start); - if (chunk.intro.length) mappings.advance(chunk.intro); - if (chunk.edited) { - mappings.addEdit( - sourceIndex, - chunk.content, - loc, - chunk.storeName ? names.indexOf(chunk.original) : -1 - ); - } else { - mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); - } - if (chunk.outro.length) mappings.advance(chunk.outro); - }); - return { - file: options.file ? options.file.split(/[/\\]/).pop() : void 0, - sources: [ - options.source ? getRelativePath(options.file || "", options.source) : options.file || "" - ], - sourcesContent: options.includeContent ? [this.original] : void 0, - names, - mappings: mappings.raw, - x_google_ignoreList: this.ignoreList ? [sourceIndex] : void 0 - }; - } - generateMap(options) { - return new SourceMap(this.generateDecodedMap(options)); - } - _ensureindentStr() { - if (this.indentStr === void 0) { - this.indentStr = guessIndent(this.original); - } - } - _getRawIndentString() { - this._ensureindentStr(); - return this.indentStr; - } - getIndentString() { - this._ensureindentStr(); - return this.indentStr === null ? " " : this.indentStr; - } - indent(indentStr, options) { - const pattern = /^[^\r\n]/gm; - if (isObject(indentStr)) { - options = indentStr; - indentStr = void 0; - } - if (indentStr === void 0) { - this._ensureindentStr(); - indentStr = this.indentStr || " "; - } - if (indentStr === "") return this; - options = options || {}; - const isExcluded = {}; - if (options.exclude) { - const exclusions = typeof options.exclude[0] === "number" ? [options.exclude] : options.exclude; - exclusions.forEach((exclusion) => { - for (let i = exclusion[0]; i < exclusion[1]; i += 1) { - isExcluded[i] = true; - } - }); - } - let shouldIndentNextCharacter = options.indentStart !== false; - const replacer = (match) => { - if (shouldIndentNextCharacter) return `${indentStr}${match}`; - shouldIndentNextCharacter = true; - return match; - }; - this.intro = this.intro.replace(pattern, replacer); - let charIndex = 0; - let chunk = this.firstChunk; - while (chunk) { - const end = chunk.end; - if (chunk.edited) { - if (!isExcluded[charIndex]) { - chunk.content = chunk.content.replace(pattern, replacer); - if (chunk.content.length) { - shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === "\n"; - } - } - } else { - charIndex = chunk.start; - while (charIndex < end) { - if (!isExcluded[charIndex]) { - const char = this.original[charIndex]; - if (char === "\n") { - shouldIndentNextCharacter = true; - } else if (char !== "\r" && shouldIndentNextCharacter) { - shouldIndentNextCharacter = false; - if (charIndex === chunk.start) { - chunk.prependRight(indentStr); - } else { - this._splitChunk(chunk, charIndex); - chunk = chunk.next; - chunk.prependRight(indentStr); - } - } - } - charIndex += 1; - } - } - charIndex = chunk.end; - chunk = chunk.next; - } - this.outro = this.outro.replace(pattern, replacer); - return this; - } - insert() { - throw new Error( - "magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)" - ); - } - insertLeft(index, content) { - if (!warned.insertLeft) { - console.warn( - "magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead" - ); - warned.insertLeft = true; - } - return this.appendLeft(index, content); - } - insertRight(index, content) { - if (!warned.insertRight) { - console.warn( - "magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead" - ); - warned.insertRight = true; - } - return this.prependRight(index, content); - } - move(start, end, index) { - start = start + this.offset; - end = end + this.offset; - index = index + this.offset; - if (index >= start && index <= end) throw new Error("Cannot move a selection inside itself"); - this._split(start); - this._split(end); - this._split(index); - const first = this.byStart[start]; - const last = this.byEnd[end]; - const oldLeft = first.previous; - const oldRight = last.next; - const newRight = this.byStart[index]; - if (!newRight && last === this.lastChunk) return this; - const newLeft = newRight ? newRight.previous : this.lastChunk; - if (oldLeft) oldLeft.next = oldRight; - if (oldRight) oldRight.previous = oldLeft; - if (newLeft) newLeft.next = first; - if (newRight) newRight.previous = last; - if (!first.previous) this.firstChunk = last.next; - if (!last.next) { - this.lastChunk = first.previous; - this.lastChunk.next = null; - } - first.previous = newLeft; - last.next = newRight || null; - if (!newLeft) this.firstChunk = first; - if (!newRight) this.lastChunk = last; - return this; - } - overwrite(start, end, content, options) { - options = options || {}; - return this.update(start, end, content, { ...options, overwrite: !options.contentOnly }); - } - update(start, end, content, options) { - start = start + this.offset; - end = end + this.offset; - if (typeof content !== "string") throw new TypeError("replacement content must be a string"); - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - if (end > this.original.length) throw new Error("end is out of bounds"); - if (start === end) - throw new Error( - "Cannot overwrite a zero-length range – use appendLeft or prependRight instead" - ); - this._split(start); - this._split(end); - if (options === true) { - if (!warned.storeName) { - console.warn( - "The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string" - ); - warned.storeName = true; - } - options = { storeName: true }; - } - const storeName = options !== void 0 ? options.storeName : false; - const overwrite = options !== void 0 ? options.overwrite : false; - if (storeName) { - const original = this.original.slice(start, end); - Object.defineProperty(this.storedNames, original, { - writable: true, - value: true, - enumerable: true - }); - } - const first = this.byStart[start]; - const last = this.byEnd[end]; - if (first) { - let chunk = first; - while (chunk !== last) { - if (chunk.next !== this.byStart[chunk.end]) { - throw new Error("Cannot overwrite across a split point"); - } - chunk = chunk.next; - chunk.edit("", false); - } - first.edit(content, storeName, !overwrite); - } else { - const newChunk = new Chunk(start, end, "").edit(content, storeName); - last.next = newChunk; - newChunk.previous = last; - } - return this; - } - prepend(content) { - if (typeof content !== "string") throw new TypeError("outro content must be a string"); - this.intro = content + this.intro; - return this; - } - prependLeft(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byEnd[index]; - if (chunk) { - chunk.prependLeft(content); - } else { - this.intro = content + this.intro; - } - return this; - } - prependRight(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byStart[index]; - if (chunk) { - chunk.prependRight(content); - } else { - this.outro = content + this.outro; - } - return this; - } - remove(start, end) { - start = start + this.offset; - end = end + this.offset; - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - if (start === end) return this; - if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); - if (start > end) throw new Error("end must be greater than start"); - this._split(start); - this._split(end); - let chunk = this.byStart[start]; - while (chunk) { - chunk.intro = ""; - chunk.outro = ""; - chunk.edit(""); - chunk = end > chunk.end ? this.byStart[chunk.end] : null; - } - return this; - } - reset(start, end) { - start = start + this.offset; - end = end + this.offset; - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - if (start === end) return this; - if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); - if (start > end) throw new Error("end must be greater than start"); - this._split(start); - this._split(end); - let chunk = this.byStart[start]; - while (chunk) { - chunk.reset(); - chunk = end > chunk.end ? this.byStart[chunk.end] : null; - } - return this; - } - lastChar() { - if (this.outro.length) return this.outro[this.outro.length - 1]; - let chunk = this.lastChunk; - do { - if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; - if (chunk.content.length) return chunk.content[chunk.content.length - 1]; - if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; - } while (chunk = chunk.previous); - if (this.intro.length) return this.intro[this.intro.length - 1]; - return ""; - } - lastLine() { - let lineIndex = this.outro.lastIndexOf(n); - if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); - let lineStr = this.outro; - let chunk = this.lastChunk; - do { - if (chunk.outro.length > 0) { - lineIndex = chunk.outro.lastIndexOf(n); - if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; - lineStr = chunk.outro + lineStr; - } - if (chunk.content.length > 0) { - lineIndex = chunk.content.lastIndexOf(n); - if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; - lineStr = chunk.content + lineStr; - } - if (chunk.intro.length > 0) { - lineIndex = chunk.intro.lastIndexOf(n); - if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; - lineStr = chunk.intro + lineStr; - } - } while (chunk = chunk.previous); - lineIndex = this.intro.lastIndexOf(n); - if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; - return this.intro + lineStr; - } - slice(start = 0, end = this.original.length - this.offset) { - start = start + this.offset; - end = end + this.offset; - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - let result = ""; - let chunk = this.firstChunk; - while (chunk && (chunk.start > start || chunk.end <= start)) { - if (chunk.start < end && chunk.end >= end) { - return result; - } - chunk = chunk.next; - } - if (chunk && chunk.edited && chunk.start !== start) - throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); - const startChunk = chunk; - while (chunk) { - if (chunk.intro && (startChunk !== chunk || chunk.start === start)) { - result += chunk.intro; - } - const containsEnd = chunk.start < end && chunk.end >= end; - if (containsEnd && chunk.edited && chunk.end !== end) - throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); - const sliceStart = startChunk === chunk ? start - chunk.start : 0; - const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; - result += chunk.content.slice(sliceStart, sliceEnd); - if (chunk.outro && (!containsEnd || chunk.end === end)) { - result += chunk.outro; - } - if (containsEnd) { - break; - } - chunk = chunk.next; - } - return result; - } - // TODO deprecate this? not really very useful - snip(start, end) { - const clone = this.clone(); - clone.remove(0, start); - clone.remove(end, clone.original.length); - return clone; - } - _split(index) { - if (this.byStart[index] || this.byEnd[index]) return; - let chunk = this.lastSearchedChunk; - const searchForward = index > chunk.end; - while (chunk) { - if (chunk.contains(index)) return this._splitChunk(chunk, index); - chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; - } - } - _splitChunk(chunk, index) { - if (chunk.edited && chunk.content.length) { - const loc = getLocator(this.original)(index); - throw new Error( - `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")` - ); - } - const newChunk = chunk.split(index); - this.byEnd[index] = chunk; - this.byStart[index] = newChunk; - this.byEnd[newChunk.end] = newChunk; - if (chunk === this.lastChunk) this.lastChunk = newChunk; - this.lastSearchedChunk = chunk; - return true; - } - toString() { - let str = this.intro; - let chunk = this.firstChunk; - while (chunk) { - str += chunk.toString(); - chunk = chunk.next; - } - return str + this.outro; - } - isEmpty() { - let chunk = this.firstChunk; - do { - if (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) - return false; - } while (chunk = chunk.next); - return true; - } - length() { - let chunk = this.firstChunk; - let length = 0; - do { - length += chunk.intro.length + chunk.content.length + chunk.outro.length; - } while (chunk = chunk.next); - return length; - } - trimLines() { - return this.trim("[\\r\\n]"); - } - trim(charType) { - return this.trimStart(charType).trimEnd(charType); - } - trimEndAborted(charType) { - const rx = new RegExp((charType || "\\s") + "+$"); - this.outro = this.outro.replace(rx, ""); - if (this.outro.length) return true; - let chunk = this.lastChunk; - do { - const end = chunk.end; - const aborted = chunk.trimEnd(rx); - if (chunk.end !== end) { - if (this.lastChunk === chunk) { - this.lastChunk = chunk.next; - } - this.byEnd[chunk.end] = chunk; - this.byStart[chunk.next.start] = chunk.next; - this.byEnd[chunk.next.end] = chunk.next; - } - if (aborted) return true; - chunk = chunk.previous; - } while (chunk); - return false; - } - trimEnd(charType) { - this.trimEndAborted(charType); - return this; - } - trimStartAborted(charType) { - const rx = new RegExp("^" + (charType || "\\s") + "+"); - this.intro = this.intro.replace(rx, ""); - if (this.intro.length) return true; - let chunk = this.firstChunk; - do { - const end = chunk.end; - const aborted = chunk.trimStart(rx); - if (chunk.end !== end) { - if (chunk === this.lastChunk) this.lastChunk = chunk.next; - this.byEnd[chunk.end] = chunk; - this.byStart[chunk.next.start] = chunk.next; - this.byEnd[chunk.next.end] = chunk.next; - } - if (aborted) return true; - chunk = chunk.next; - } while (chunk); - return false; - } - trimStart(charType) { - this.trimStartAborted(charType); - return this; - } - hasChanged() { - return this.original !== this.toString(); - } - _replaceRegexp(searchValue, replacement) { - function getReplacement(match, str) { - if (typeof replacement === "string") { - return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { - if (i === "$") return "$"; - if (i === "&") return match[0]; - const num = +i; - if (num < match.length) return match[+i]; - return `$${i}`; - }); - } else { - return replacement(...match, match.index, str, match.groups); - } - } - function matchAll(re, str) { - let match; - const matches = []; - while (match = re.exec(str)) { - matches.push(match); - } - return matches; - } - if (searchValue.global) { - const matches = matchAll(searchValue, this.original); - matches.forEach((match) => { - if (match.index != null) { - const replacement2 = getReplacement(match, this.original); - if (replacement2 !== match[0]) { - this.overwrite(match.index, match.index + match[0].length, replacement2); - } - } - }); - } else { - const match = this.original.match(searchValue); - if (match && match.index != null) { - const replacement2 = getReplacement(match, this.original); - if (replacement2 !== match[0]) { - this.overwrite(match.index, match.index + match[0].length, replacement2); - } - } - } - return this; - } - _replaceString(string, replacement) { - const { original } = this; - const index = original.indexOf(string); - if (index !== -1) { - this.overwrite(index, index + string.length, replacement); - } - return this; - } - replace(searchValue, replacement) { - if (typeof searchValue === "string") { - return this._replaceString(searchValue, replacement); - } - return this._replaceRegexp(searchValue, replacement); - } - _replaceAllString(string, replacement) { - const { original } = this; - const stringLength = string.length; - for (let index = original.indexOf(string); index !== -1; index = original.indexOf(string, index + stringLength)) { - const previous = original.slice(index, index + stringLength); - if (previous !== replacement) this.overwrite(index, index + stringLength, replacement); - } - return this; - } - replaceAll(searchValue, replacement) { - if (typeof searchValue === "string") { - return this._replaceAllString(searchValue, replacement); - } - if (!searchValue.global) { - throw new TypeError( - "MagicString.prototype.replaceAll called with a non-global RegExp argument" - ); - } - return this._replaceRegexp(searchValue, replacement); - } -}; -var hasOwnProp = Object.prototype.hasOwnProperty; -var Bundle = class _Bundle { - constructor(options = {}) { - this.intro = options.intro || ""; - this.separator = options.separator !== void 0 ? options.separator : "\n"; - this.sources = []; - this.uniqueSources = []; - this.uniqueSourceIndexByFilename = {}; - } - addSource(source) { - if (source instanceof MagicString) { - return this.addSource({ - content: source, - filename: source.filename, - separator: this.separator - }); - } - if (!isObject(source) || !source.content) { - throw new Error( - "bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`" - ); - } - ["filename", "ignoreList", "indentExclusionRanges", "separator"].forEach((option) => { - if (!hasOwnProp.call(source, option)) source[option] = source.content[option]; - }); - if (source.separator === void 0) { - source.separator = this.separator; - } - if (source.filename) { - if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) { - this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length; - this.uniqueSources.push({ filename: source.filename, content: source.content.original }); - } else { - const uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]]; - if (source.content.original !== uniqueSource.content) { - throw new Error(`Illegal source: same filename (${source.filename}), different contents`); - } - } - } - this.sources.push(source); - return this; - } - append(str, options) { - this.addSource({ - content: new MagicString(str), - separator: options && options.separator || "" - }); - return this; - } - clone() { - const bundle = new _Bundle({ - intro: this.intro, - separator: this.separator - }); - this.sources.forEach((source) => { - bundle.addSource({ - filename: source.filename, - content: source.content.clone(), - separator: source.separator - }); - }); - return bundle; - } - generateDecodedMap(options = {}) { - const names = []; - let x_google_ignoreList = void 0; - this.sources.forEach((source) => { - Object.keys(source.content.storedNames).forEach((name) => { - if (!~names.indexOf(name)) names.push(name); - }); - }); - const mappings = new Mappings(options.hires); - if (this.intro) { - mappings.advance(this.intro); - } - this.sources.forEach((source, i) => { - if (i > 0) { - mappings.advance(this.separator); - } - const sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1; - const magicString = source.content; - const locate = getLocator(magicString.original); - if (magicString.intro) { - mappings.advance(magicString.intro); - } - magicString.firstChunk.eachNext((chunk) => { - const loc = locate(chunk.start); - if (chunk.intro.length) mappings.advance(chunk.intro); - if (source.filename) { - if (chunk.edited) { - mappings.addEdit( - sourceIndex, - chunk.content, - loc, - chunk.storeName ? names.indexOf(chunk.original) : -1 - ); - } else { - mappings.addUneditedChunk( - sourceIndex, - chunk, - magicString.original, - loc, - magicString.sourcemapLocations - ); - } - } else { - mappings.advance(chunk.content); - } - if (chunk.outro.length) mappings.advance(chunk.outro); - }); - if (magicString.outro) { - mappings.advance(magicString.outro); - } - if (source.ignoreList && sourceIndex !== -1) { - if (x_google_ignoreList === void 0) { - x_google_ignoreList = []; - } - x_google_ignoreList.push(sourceIndex); - } - }); - return { - file: options.file ? options.file.split(/[/\\]/).pop() : void 0, - sources: this.uniqueSources.map((source) => { - return options.file ? getRelativePath(options.file, source.filename) : source.filename; - }), - sourcesContent: this.uniqueSources.map((source) => { - return options.includeContent ? source.content : null; - }), - names, - mappings: mappings.raw, - x_google_ignoreList - }; - } - generateMap(options) { - return new SourceMap(this.generateDecodedMap(options)); - } - getIndentString() { - const indentStringCounts = {}; - this.sources.forEach((source) => { - const indentStr = source.content._getRawIndentString(); - if (indentStr === null) return; - if (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0; - indentStringCounts[indentStr] += 1; - }); - return Object.keys(indentStringCounts).sort((a, b) => { - return indentStringCounts[a] - indentStringCounts[b]; - })[0] || " "; - } - indent(indentStr) { - if (!arguments.length) { - indentStr = this.getIndentString(); - } - if (indentStr === "") return this; - let trailingNewline = !this.intro || this.intro.slice(-1) === "\n"; - this.sources.forEach((source, i) => { - const separator = source.separator !== void 0 ? source.separator : this.separator; - const indentStart = trailingNewline || i > 0 && /\r?\n$/.test(separator); - source.content.indent(indentStr, { - exclude: source.indentExclusionRanges, - indentStart - //: trailingNewline || /\r?\n$/.test( separator ) //true///\r?\n/.test( separator ) - }); - trailingNewline = source.content.lastChar() === "\n"; - }); - if (this.intro) { - this.intro = indentStr + this.intro.replace(/^[^\n]/gm, (match, index) => { - return index > 0 ? indentStr + match : match; - }); - } - return this; - } - prepend(str) { - this.intro = str + this.intro; - return this; - } - toString() { - const body = this.sources.map((source, i) => { - const separator = source.separator !== void 0 ? source.separator : this.separator; - const str = (i > 0 ? separator : "") + source.content.toString(); - return str; - }).join(""); - return this.intro + body; - } - isEmpty() { - if (this.intro.length && this.intro.trim()) return false; - if (this.sources.some((source) => !source.content.isEmpty())) return false; - return true; - } - length() { - return this.sources.reduce( - (length, source) => length + source.content.length(), - this.intro.length - ); - } - trimLines() { - return this.trim("[\\r\\n]"); - } - trim(charType) { - return this.trimStart(charType).trimEnd(charType); - } - trimStart(charType) { - const rx = new RegExp("^" + (charType || "\\s") + "+"); - this.intro = this.intro.replace(rx, ""); - if (!this.intro) { - let source; - let i = 0; - do { - source = this.sources[i++]; - if (!source) { - break; - } - } while (!source.content.trimStartAborted(charType)); - } - return this; - } - trimEnd(charType) { - const rx = new RegExp((charType || "\\s") + "+$"); - let source; - let i = this.sources.length - 1; - do { - source = this.sources[i--]; - if (!source) { - this.intro = this.intro.replace(rx, ""); - break; - } - } while (!source.content.trimEndAborted(charType)); - return this; - } -}; -export { - Bundle, - SourceMap, - MagicString as default -}; -//# sourceMappingURL=vitest___@vitest_snapshot___magic-string.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map deleted file mode 100644 index 07d58a1..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___magic-string.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@jridgewell/sourcemap-codec/src/vlq.ts", "../../../../../node_modules/@jridgewell/sourcemap-codec/src/strings.ts", "../../../../../node_modules/@jridgewell/sourcemap-codec/src/scopes.ts", "../../../../../node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts", "../../../../../node_modules/magic-string/src/BitSet.js", "../../../../../node_modules/magic-string/src/Chunk.js", "../../../../../node_modules/magic-string/src/SourceMap.js", "../../../../../node_modules/magic-string/src/utils/guessIndent.js", "../../../../../node_modules/magic-string/src/utils/getRelativePath.js", "../../../../../node_modules/magic-string/src/utils/isObject.js", "../../../../../node_modules/magic-string/src/utils/getLocator.js", "../../../../../node_modules/magic-string/src/utils/Mappings.js", "../../../../../node_modules/magic-string/src/MagicString.js", "../../../../../node_modules/magic-string/src/Bundle.js"], - "sourcesContent": ["import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n", "const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n private declare buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n", "import { StringReader, StringWriter } from './strings';\nimport { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,\n );\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0,\n );\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n state[1] = encodeInteger(writer, range[1], state[1]);\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);\n encodeInteger(writer, expRange[0]!, 0);\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n", "import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly): string;\nexport function encode(decoded: Readonly): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n", "export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n", "export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n", "import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n", "export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n", "export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n", "const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n", "export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n", "const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n", "import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement) this.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n", "import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n"], - "mappings": "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", - "names": ["encode", "n", "segment", "replacement"] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js deleted file mode 100644 index 1c189cd..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js +++ /dev/null @@ -1,7 +0,0 @@ -import { - require_build -} from "./chunk-UCU27OGC.js"; -import "./chunk-UJ726J2L.js"; -import "./chunk-5WRI5ZAA.js"; -export default require_build(); -//# sourceMappingURL=vitest___@vitest_snapshot___pretty-format.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map deleted file mode 100644 index 9865211..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_snapshot___pretty-format.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js deleted file mode 100644 index dc9747f..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js +++ /dev/null @@ -1,7 +0,0 @@ -import { - require_build -} from "./chunk-UCU27OGC.js"; -import "./chunk-UJ726J2L.js"; -import "./chunk-5WRI5ZAA.js"; -export default require_build(); -//# sourceMappingURL=vitest___@vitest_utils___pretty-format.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map b/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map deleted file mode 100644 index 9865211..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___@vitest_utils___pretty-format.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___chai.js b/packages/ridb/node_modules/.vite/deps/vitest___chai.js deleted file mode 100644 index 80e475b..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___chai.js +++ /dev/null @@ -1,3946 +0,0 @@ -import { - __commonJS, - __toESM -} from "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/assertion-error/index.js -var require_assertion_error = __commonJS({ - "../../node_modules/assertion-error/index.js"(exports, module) { - function exclude() { - var excludes = [].slice.call(arguments); - function excludeProps(res, obj) { - Object.keys(obj).forEach(function(key) { - if (!~excludes.indexOf(key)) res[key] = obj[key]; - }); - } - return function extendExclude() { - var args = [].slice.call(arguments), i = 0, res = {}; - for (; i < args.length; i++) { - excludeProps(res, args[i]); - } - return res; - }; - } - module.exports = AssertionError2; - function AssertionError2(message, _props, ssf) { - var extend = exclude("name", "message", "stack", "constructor", "toJSON"), props = extend(_props || {}); - this.message = message || "Unspecified AssertionError"; - this.showDiff = false; - for (var key in props) { - this[key] = props[key]; - } - ssf = ssf || AssertionError2; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, ssf); - } else { - try { - throw new Error(); - } catch (e) { - this.stack = e.stack; - } - } - } - AssertionError2.prototype = Object.create(Error.prototype); - AssertionError2.prototype.name = "AssertionError"; - AssertionError2.prototype.constructor = AssertionError2; - AssertionError2.prototype.toJSON = function(stack) { - var extend = exclude("constructor", "toJSON", "stack"), props = extend({ name: this.name }, this); - if (false !== stack && this.stack) { - props.stack = this.stack; - } - return props; - }; - } -}); - -// ../../node_modules/pathval/index.js -var require_pathval = __commonJS({ - "../../node_modules/pathval/index.js"(exports, module) { - "use strict"; - function hasProperty(obj, name) { - if (typeof obj === "undefined" || obj === null) { - return false; - } - return name in Object(obj); - } - function parsePath(path) { - var str = path.replace(/([^\\])\[/g, "$1.["); - var parts = str.match(/(\\\.|[^.]+?)+/g); - return parts.map(function mapMatches(value) { - if (value === "constructor" || value === "__proto__" || value === "prototype") { - return {}; - } - var regexp = /^\[(\d+)\]$/; - var mArr = regexp.exec(value); - var parsed = null; - if (mArr) { - parsed = { i: parseFloat(mArr[1]) }; - } else { - parsed = { p: value.replace(/\\([.[\]])/g, "$1") }; - } - return parsed; - }); - } - function internalGetPathValue(obj, parsed, pathDepth) { - var temporaryValue = obj; - var res = null; - pathDepth = typeof pathDepth === "undefined" ? parsed.length : pathDepth; - for (var i = 0; i < pathDepth; i++) { - var part = parsed[i]; - if (temporaryValue) { - if (typeof part.p === "undefined") { - temporaryValue = temporaryValue[part.i]; - } else { - temporaryValue = temporaryValue[part.p]; - } - if (i === pathDepth - 1) { - res = temporaryValue; - } - } - } - return res; - } - function internalSetPathValue(obj, val, parsed) { - var tempObj = obj; - var pathDepth = parsed.length; - var part = null; - for (var i = 0; i < pathDepth; i++) { - var propName = null; - var propVal = null; - part = parsed[i]; - if (i === pathDepth - 1) { - propName = typeof part.p === "undefined" ? part.i : part.p; - tempObj[propName] = val; - } else if (typeof part.p !== "undefined" && tempObj[part.p]) { - tempObj = tempObj[part.p]; - } else if (typeof part.i !== "undefined" && tempObj[part.i]) { - tempObj = tempObj[part.i]; - } else { - var next = parsed[i + 1]; - propName = typeof part.p === "undefined" ? part.i : part.p; - propVal = typeof next.p === "undefined" ? [] : {}; - tempObj[propName] = propVal; - tempObj = tempObj[propName]; - } - } - } - function getPathInfo(obj, path) { - var parsed = parsePath(path); - var last = parsed[parsed.length - 1]; - var info = { - parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj, - name: last.p || last.i, - value: internalGetPathValue(obj, parsed) - }; - info.exists = hasProperty(info.parent, info.name); - return info; - } - function getPathValue(obj, path) { - var info = getPathInfo(obj, path); - return info.value; - } - function setPathValue(obj, path, val) { - var parsed = parsePath(path); - internalSetPathValue(obj, val, parsed); - return obj; - } - module.exports = { - hasProperty, - getPathInfo, - getPathValue, - setPathValue - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/flag.js -var require_flag = __commonJS({ - "../../node_modules/chai/lib/chai/utils/flag.js"(exports, module) { - module.exports = function flag(obj, key, value) { - var flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null)); - if (arguments.length === 3) { - flags[key] = value; - } else { - return flags[key]; - } - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/test.js -var require_test = __commonJS({ - "../../node_modules/chai/lib/chai/utils/test.js"(exports, module) { - var flag = require_flag(); - module.exports = function test(obj, args) { - var negate = flag(obj, "negate"), expr = args[0]; - return negate ? !expr : expr; - }; - } -}); - -// ../../node_modules/type-detect/type-detect.js -var require_type_detect = __commonJS({ - "../../node_modules/type-detect/type-detect.js"(exports, module) { - (function(global, factory) { - typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.typeDetect = factory()); - })(exports, function() { - "use strict"; - var promiseExists = typeof Promise === "function"; - var globalObject = function(Obj) { - if (typeof globalThis === "object") { - return globalThis; - } - Object.defineProperty(Obj, "typeDetectGlobalObject", { - get: function get() { - return this; - }, - configurable: true - }); - var global = typeDetectGlobalObject; - delete Obj.typeDetectGlobalObject; - return global; - }(Object.prototype); - var symbolExists = typeof Symbol !== "undefined"; - var mapExists = typeof Map !== "undefined"; - var setExists = typeof Set !== "undefined"; - var weakMapExists = typeof WeakMap !== "undefined"; - var weakSetExists = typeof WeakSet !== "undefined"; - var dataViewExists = typeof DataView !== "undefined"; - var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== "undefined"; - var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== "undefined"; - var setEntriesExists = setExists && typeof Set.prototype.entries === "function"; - var mapEntriesExists = mapExists && typeof Map.prototype.entries === "function"; - var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Set()).entries()); - var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Map()).entries()); - var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === "function"; - var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]()); - var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === "function"; - var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(""[Symbol.iterator]()); - var toStringLeftSliceLength = 8; - var toStringRightSliceLength = -1; - function typeDetect(obj) { - var typeofObj = typeof obj; - if (typeofObj !== "object") { - return typeofObj; - } - if (obj === null) { - return "null"; - } - if (obj === globalObject) { - return "global"; - } - if (Array.isArray(obj) && (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) { - return "Array"; - } - if (typeof window === "object" && window !== null) { - if (typeof window.location === "object" && obj === window.location) { - return "Location"; - } - if (typeof window.document === "object" && obj === window.document) { - return "Document"; - } - if (typeof window.navigator === "object") { - if (typeof window.navigator.mimeTypes === "object" && obj === window.navigator.mimeTypes) { - return "MimeTypeArray"; - } - if (typeof window.navigator.plugins === "object" && obj === window.navigator.plugins) { - return "PluginArray"; - } - } - if ((typeof window.HTMLElement === "function" || typeof window.HTMLElement === "object") && obj instanceof window.HTMLElement) { - if (obj.tagName === "BLOCKQUOTE") { - return "HTMLQuoteElement"; - } - if (obj.tagName === "TD") { - return "HTMLTableDataCellElement"; - } - if (obj.tagName === "TH") { - return "HTMLTableHeaderCellElement"; - } - } - } - var stringTag = symbolToStringTagExists && obj[Symbol.toStringTag]; - if (typeof stringTag === "string") { - return stringTag; - } - var objPrototype = Object.getPrototypeOf(obj); - if (objPrototype === RegExp.prototype) { - return "RegExp"; - } - if (objPrototype === Date.prototype) { - return "Date"; - } - if (promiseExists && objPrototype === Promise.prototype) { - return "Promise"; - } - if (setExists && objPrototype === Set.prototype) { - return "Set"; - } - if (mapExists && objPrototype === Map.prototype) { - return "Map"; - } - if (weakSetExists && objPrototype === WeakSet.prototype) { - return "WeakSet"; - } - if (weakMapExists && objPrototype === WeakMap.prototype) { - return "WeakMap"; - } - if (dataViewExists && objPrototype === DataView.prototype) { - return "DataView"; - } - if (mapExists && objPrototype === mapIteratorPrototype) { - return "Map Iterator"; - } - if (setExists && objPrototype === setIteratorPrototype) { - return "Set Iterator"; - } - if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) { - return "Array Iterator"; - } - if (stringIteratorExists && objPrototype === stringIteratorPrototype) { - return "String Iterator"; - } - if (objPrototype === null) { - return "Object"; - } - return Object.prototype.toString.call(obj).slice(toStringLeftSliceLength, toStringRightSliceLength); - } - return typeDetect; - }); - } -}); - -// ../../node_modules/chai/lib/chai/utils/expectTypes.js -var require_expectTypes = __commonJS({ - "../../node_modules/chai/lib/chai/utils/expectTypes.js"(exports, module) { - var AssertionError2 = require_assertion_error(); - var flag = require_flag(); - var type = require_type_detect(); - module.exports = function expectTypes(obj, types) { - var flagMsg = flag(obj, "message"); - var ssfi = flag(obj, "ssfi"); - flagMsg = flagMsg ? flagMsg + ": " : ""; - obj = flag(obj, "object"); - types = types.map(function(t) { - return t.toLowerCase(); - }); - types.sort(); - var str = types.map(function(t, index) { - var art = ~["a", "e", "i", "o", "u"].indexOf(t.charAt(0)) ? "an" : "a"; - var or = types.length > 1 && index === types.length - 1 ? "or " : ""; - return or + art + " " + t; - }).join(", "); - var objType = type(obj).toLowerCase(); - if (!types.some(function(expected) { - return objType === expected; - })) { - throw new AssertionError2( - flagMsg + "object tested must be " + str + ", but " + objType + " given", - void 0, - ssfi - ); - } - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/getActual.js -var require_getActual = __commonJS({ - "../../node_modules/chai/lib/chai/utils/getActual.js"(exports, module) { - module.exports = function getActual(obj, args) { - return args.length > 4 ? args[4] : obj._obj; - }; - } -}); - -// ../../node_modules/get-func-name/index.js -var require_get_func_name = __commonJS({ - "../../node_modules/get-func-name/index.js"(exports, module) { - "use strict"; - var toString = Function.prototype.toString; - var functionNameMatch = /\s*function(?:\s|\s*\/\*[^(?:*\/)]+\*\/\s*)*([^\s\(\/]+)/; - var maxFunctionSourceLength = 512; - function getFuncName(aFunc) { - if (typeof aFunc !== "function") { - return null; - } - var name = ""; - if (typeof Function.prototype.name === "undefined" && typeof aFunc.name === "undefined") { - var functionSource = toString.call(aFunc); - if (functionSource.indexOf("(") > maxFunctionSourceLength) { - return name; - } - var match = functionSource.match(functionNameMatch); - if (match) { - name = match[1]; - } - } else { - name = aFunc.name; - } - return name; - } - module.exports = getFuncName; - } -}); - -// vite:cjs-external-facade:loupe -import * as m from "loupe"; -var require_loupe = __commonJS({ - "vite:cjs-external-facade:loupe"(exports, module) { - module.exports = m; - } -}); - -// ../../node_modules/chai/lib/chai/config.js -var require_config = __commonJS({ - "../../node_modules/chai/lib/chai/config.js"(exports, module) { - module.exports = { - /** - * ### config.includeStack - * - * User configurable property, influences whether stack trace - * is included in Assertion error message. Default of false - * suppresses stack trace in the error message. - * - * chai.config.includeStack = true; // enable stack on error - * - * @param {Boolean} - * @api public - */ - includeStack: false, - /** - * ### config.showDiff - * - * User configurable property, influences whether or not - * the `showDiff` flag should be included in the thrown - * AssertionErrors. `false` will always be `false`; `true` - * will be true when the assertion has requested a diff - * be shown. - * - * @param {Boolean} - * @api public - */ - showDiff: true, - /** - * ### config.truncateThreshold - * - * User configurable property, sets length threshold for actual and - * expected values in assertion errors. If this threshold is exceeded, for - * example for large data structures, the value is replaced with something - * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. - * - * Set it to zero if you want to disable truncating altogether. - * - * This is especially userful when doing assertions on arrays: having this - * set to a reasonable large value makes the failure messages readily - * inspectable. - * - * chai.config.truncateThreshold = 0; // disable truncating - * - * @param {Number} - * @api public - */ - truncateThreshold: 40, - /** - * ### config.useProxy - * - * User configurable property, defines if chai will use a Proxy to throw - * an error when a non-existent property is read, which protects users - * from typos when using property-based assertions. - * - * Set it to false if you want to disable this feature. - * - * chai.config.useProxy = false; // disable use of Proxy - * - * This feature is automatically disabled regardless of this config value - * in environments that don't support proxies. - * - * @param {Boolean} - * @api public - */ - useProxy: true, - /** - * ### config.proxyExcludedKeys - * - * User configurable property, defines which properties should be ignored - * instead of throwing an error if they do not exist on the assertion. - * This is only applied if the environment Chai is running in supports proxies and - * if the `useProxy` configuration setting is enabled. - * By default, `then` and `inspect` will not throw an error if they do not exist on the - * assertion object because the `.inspect` property is read by `util.inspect` (for example, when - * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking. - * - * // By default these keys will not throw an error if they do not exist on the assertion object - * chai.config.proxyExcludedKeys = ['then', 'inspect']; - * - * @param {Array} - * @api public - */ - proxyExcludedKeys: ["then", "catch", "inspect", "toJSON"], - /** - * ### config.deepEqual - * - * User configurable property, defines which a custom function to use for deepEqual - * comparisons. - * By default, the function used is the one from the `deep-eql` package without custom comparator. - * - * // use a custom comparator - * chai.config.deepEqual = (expected, actual) => { - * return chai.util.eql(expected, actual, { - * comparator: (expected, actual) => { - * // for non number comparison, use the default behavior - * if(typeof expected !== 'number') return null; - * // allow a difference of 10 between compared numbers - * return typeof actual === 'number' && Math.abs(actual - expected) < 10 - * } - * }) - * }; - * - * @param {Function} - * @api public - */ - deepEqual: null - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/inspect.js -var require_inspect = __commonJS({ - "../../node_modules/chai/lib/chai/utils/inspect.js"(exports, module) { - var getName = require_get_func_name(); - var loupe = require_loupe(); - var config2 = require_config(); - module.exports = inspect; - function inspect(obj, showHidden, depth, colors) { - var options = { - colors, - depth: typeof depth === "undefined" ? 2 : depth, - showHidden, - truncate: config2.truncateThreshold ? config2.truncateThreshold : Infinity - }; - return loupe.inspect(obj, options); - } - } -}); - -// ../../node_modules/chai/lib/chai/utils/objDisplay.js -var require_objDisplay = __commonJS({ - "../../node_modules/chai/lib/chai/utils/objDisplay.js"(exports, module) { - var inspect = require_inspect(); - var config2 = require_config(); - module.exports = function objDisplay(obj) { - var str = inspect(obj), type = Object.prototype.toString.call(obj); - if (config2.truncateThreshold && str.length >= config2.truncateThreshold) { - if (type === "[object Function]") { - return !obj.name || obj.name === "" ? "[Function]" : "[Function: " + obj.name + "]"; - } else if (type === "[object Array]") { - return "[ Array(" + obj.length + ") ]"; - } else if (type === "[object Object]") { - var keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(", ") + ", ..." : keys.join(", "); - return "{ Object (" + kstr + ") }"; - } else { - return str; - } - } else { - return str; - } - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/getMessage.js -var require_getMessage = __commonJS({ - "../../node_modules/chai/lib/chai/utils/getMessage.js"(exports, module) { - var flag = require_flag(); - var getActual = require_getActual(); - var objDisplay = require_objDisplay(); - module.exports = function getMessage(obj, args) { - var negate = flag(obj, "negate"), val = flag(obj, "object"), expected = args[3], actual = getActual(obj, args), msg = negate ? args[2] : args[1], flagMsg = flag(obj, "message"); - if (typeof msg === "function") msg = msg(); - msg = msg || ""; - msg = msg.replace(/#\{this\}/g, function() { - return objDisplay(val); - }).replace(/#\{act\}/g, function() { - return objDisplay(actual); - }).replace(/#\{exp\}/g, function() { - return objDisplay(expected); - }); - return flagMsg ? flagMsg + ": " + msg : msg; - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/transferFlags.js -var require_transferFlags = __commonJS({ - "../../node_modules/chai/lib/chai/utils/transferFlags.js"(exports, module) { - module.exports = function transferFlags(assertion, object, includeAll) { - var flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null)); - if (!object.__flags) { - object.__flags = /* @__PURE__ */ Object.create(null); - } - includeAll = arguments.length === 3 ? includeAll : true; - for (var flag in flags) { - if (includeAll || flag !== "object" && flag !== "ssfi" && flag !== "lockSsfi" && flag != "message") { - object.__flags[flag] = flags[flag]; - } - } - }; - } -}); - -// ../../node_modules/deep-eql/index.js -var require_deep_eql = __commonJS({ - "../../node_modules/deep-eql/index.js"(exports, module) { - "use strict"; - var type = require_type_detect(); - function FakeMap() { - this._key = "chai/deep-eql__" + Math.random() + Date.now(); - } - FakeMap.prototype = { - get: function get(key) { - return key[this._key]; - }, - set: function set(key, value) { - if (Object.isExtensible(key)) { - Object.defineProperty(key, this._key, { - value, - configurable: true - }); - } - } - }; - var MemoizeMap = typeof WeakMap === "function" ? WeakMap : FakeMap; - function memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) { - if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { - return null; - } - var leftHandMap = memoizeMap.get(leftHandOperand); - if (leftHandMap) { - var result = leftHandMap.get(rightHandOperand); - if (typeof result === "boolean") { - return result; - } - } - return null; - } - function memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) { - if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { - return; - } - var leftHandMap = memoizeMap.get(leftHandOperand); - if (leftHandMap) { - leftHandMap.set(rightHandOperand, result); - } else { - leftHandMap = new MemoizeMap(); - leftHandMap.set(rightHandOperand, result); - memoizeMap.set(leftHandOperand, leftHandMap); - } - } - module.exports = deepEqual; - module.exports.MemoizeMap = MemoizeMap; - function deepEqual(leftHandOperand, rightHandOperand, options) { - if (options && options.comparator) { - return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); - } - var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); - if (simpleResult !== null) { - return simpleResult; - } - return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); - } - function simpleEqual(leftHandOperand, rightHandOperand) { - if (leftHandOperand === rightHandOperand) { - return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand; - } - if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare - rightHandOperand !== rightHandOperand) { - return true; - } - if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { - return false; - } - return null; - } - function extensiveDeepEqual(leftHandOperand, rightHandOperand, options) { - options = options || {}; - options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap(); - var comparator = options && options.comparator; - var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize); - if (memoizeResultLeft !== null) { - return memoizeResultLeft; - } - var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize); - if (memoizeResultRight !== null) { - return memoizeResultRight; - } - if (comparator) { - var comparatorResult = comparator(leftHandOperand, rightHandOperand); - if (comparatorResult === false || comparatorResult === true) { - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult); - return comparatorResult; - } - var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); - if (simpleResult !== null) { - return simpleResult; - } - } - var leftHandType = type(leftHandOperand); - if (leftHandType !== type(rightHandOperand)) { - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false); - return false; - } - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true); - var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options); - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result); - return result; - } - function extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) { - switch (leftHandType) { - case "String": - case "Number": - case "Boolean": - case "Date": - return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf()); - case "Promise": - case "Symbol": - case "function": - case "WeakMap": - case "WeakSet": - return leftHandOperand === rightHandOperand; - case "Error": - return keysEqual(leftHandOperand, rightHandOperand, ["name", "message", "code"], options); - case "Arguments": - case "Int8Array": - case "Uint8Array": - case "Uint8ClampedArray": - case "Int16Array": - case "Uint16Array": - case "Int32Array": - case "Uint32Array": - case "Float32Array": - case "Float64Array": - case "Array": - return iterableEqual(leftHandOperand, rightHandOperand, options); - case "RegExp": - return regexpEqual(leftHandOperand, rightHandOperand); - case "Generator": - return generatorEqual(leftHandOperand, rightHandOperand, options); - case "DataView": - return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options); - case "ArrayBuffer": - return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options); - case "Set": - return entriesEqual(leftHandOperand, rightHandOperand, options); - case "Map": - return entriesEqual(leftHandOperand, rightHandOperand, options); - case "Temporal.PlainDate": - case "Temporal.PlainTime": - case "Temporal.PlainDateTime": - case "Temporal.Instant": - case "Temporal.ZonedDateTime": - case "Temporal.PlainYearMonth": - case "Temporal.PlainMonthDay": - return leftHandOperand.equals(rightHandOperand); - case "Temporal.Duration": - return leftHandOperand.total("nanoseconds") === rightHandOperand.total("nanoseconds"); - case "Temporal.TimeZone": - case "Temporal.Calendar": - return leftHandOperand.toString() === rightHandOperand.toString(); - default: - return objectEqual(leftHandOperand, rightHandOperand, options); - } - } - function regexpEqual(leftHandOperand, rightHandOperand) { - return leftHandOperand.toString() === rightHandOperand.toString(); - } - function entriesEqual(leftHandOperand, rightHandOperand, options) { - try { - if (leftHandOperand.size !== rightHandOperand.size) { - return false; - } - if (leftHandOperand.size === 0) { - return true; - } - } catch (sizeError) { - return false; - } - var leftHandItems = []; - var rightHandItems = []; - leftHandOperand.forEach(function gatherEntries(key, value) { - leftHandItems.push([key, value]); - }); - rightHandOperand.forEach(function gatherEntries(key, value) { - rightHandItems.push([key, value]); - }); - return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options); - } - function iterableEqual(leftHandOperand, rightHandOperand, options) { - var length = leftHandOperand.length; - if (length !== rightHandOperand.length) { - return false; - } - if (length === 0) { - return true; - } - var index = -1; - while (++index < length) { - if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) { - return false; - } - } - return true; - } - function generatorEqual(leftHandOperand, rightHandOperand, options) { - return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options); - } - function hasIteratorFunction(target) { - return typeof Symbol !== "undefined" && typeof target === "object" && typeof Symbol.iterator !== "undefined" && typeof target[Symbol.iterator] === "function"; - } - function getIteratorEntries(target) { - if (hasIteratorFunction(target)) { - try { - return getGeneratorEntries(target[Symbol.iterator]()); - } catch (iteratorError) { - return []; - } - } - return []; - } - function getGeneratorEntries(generator) { - var generatorResult = generator.next(); - var accumulator = [generatorResult.value]; - while (generatorResult.done === false) { - generatorResult = generator.next(); - accumulator.push(generatorResult.value); - } - return accumulator; - } - function getEnumerableKeys(target) { - var keys = []; - for (var key in target) { - keys.push(key); - } - return keys; - } - function getEnumerableSymbols(target) { - var keys = []; - var allKeys = Object.getOwnPropertySymbols(target); - for (var i = 0; i < allKeys.length; i += 1) { - var key = allKeys[i]; - if (Object.getOwnPropertyDescriptor(target, key).enumerable) { - keys.push(key); - } - } - return keys; - } - function keysEqual(leftHandOperand, rightHandOperand, keys, options) { - var length = keys.length; - if (length === 0) { - return true; - } - for (var i = 0; i < length; i += 1) { - if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) { - return false; - } - } - return true; - } - function objectEqual(leftHandOperand, rightHandOperand, options) { - var leftHandKeys = getEnumerableKeys(leftHandOperand); - var rightHandKeys = getEnumerableKeys(rightHandOperand); - var leftHandSymbols = getEnumerableSymbols(leftHandOperand); - var rightHandSymbols = getEnumerableSymbols(rightHandOperand); - leftHandKeys = leftHandKeys.concat(leftHandSymbols); - rightHandKeys = rightHandKeys.concat(rightHandSymbols); - if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) { - if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) { - return false; - } - return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options); - } - var leftHandEntries = getIteratorEntries(leftHandOperand); - var rightHandEntries = getIteratorEntries(rightHandOperand); - if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) { - leftHandEntries.sort(); - rightHandEntries.sort(); - return iterableEqual(leftHandEntries, rightHandEntries, options); - } - if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) { - return true; - } - return false; - } - function isPrimitive(value) { - return value === null || typeof value !== "object"; - } - function mapSymbols(arr) { - return arr.map(function mapSymbol(entry) { - if (typeof entry === "symbol") { - return entry.toString(); - } - return entry; - }); - } - } -}); - -// ../../node_modules/chai/lib/chai/utils/isProxyEnabled.js -var require_isProxyEnabled = __commonJS({ - "../../node_modules/chai/lib/chai/utils/isProxyEnabled.js"(exports, module) { - var config2 = require_config(); - module.exports = function isProxyEnabled() { - return config2.useProxy && typeof Proxy !== "undefined" && typeof Reflect !== "undefined"; - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/addProperty.js -var require_addProperty = __commonJS({ - "../../node_modules/chai/lib/chai/utils/addProperty.js"(exports, module) { - var chai2 = require_chai(); - var flag = require_flag(); - var isProxyEnabled = require_isProxyEnabled(); - var transferFlags = require_transferFlags(); - module.exports = function addProperty(ctx, name, getter) { - getter = getter === void 0 ? function() { - } : getter; - Object.defineProperty( - ctx, - name, - { - get: function propertyGetter() { - if (!isProxyEnabled() && !flag(this, "lockSsfi")) { - flag(this, "ssfi", propertyGetter); - } - var result = getter.call(this); - if (result !== void 0) - return result; - var newAssertion = new chai2.Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, - configurable: true - } - ); - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/addLengthGuard.js -var require_addLengthGuard = __commonJS({ - "../../node_modules/chai/lib/chai/utils/addLengthGuard.js"(exports, module) { - var fnLengthDesc = Object.getOwnPropertyDescriptor(function() { - }, "length"); - module.exports = function addLengthGuard(fn, assertionName, isChainable) { - if (!fnLengthDesc.configurable) return fn; - Object.defineProperty(fn, "length", { - get: function() { - if (isChainable) { - throw Error("Invalid Chai property: " + assertionName + '.length. Due to a compatibility issue, "length" cannot directly follow "' + assertionName + '". Use "' + assertionName + '.lengthOf" instead.'); - } - throw Error("Invalid Chai property: " + assertionName + '.length. See docs for proper usage of "' + assertionName + '".'); - } - }); - return fn; - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/getProperties.js -var require_getProperties = __commonJS({ - "../../node_modules/chai/lib/chai/utils/getProperties.js"(exports, module) { - module.exports = function getProperties(object) { - var result = Object.getOwnPropertyNames(object); - function addProperty(property) { - if (result.indexOf(property) === -1) { - result.push(property); - } - } - var proto = Object.getPrototypeOf(object); - while (proto !== null) { - Object.getOwnPropertyNames(proto).forEach(addProperty); - proto = Object.getPrototypeOf(proto); - } - return result; - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/proxify.js -var require_proxify = __commonJS({ - "../../node_modules/chai/lib/chai/utils/proxify.js"(exports, module) { - var config2 = require_config(); - var flag = require_flag(); - var getProperties = require_getProperties(); - var isProxyEnabled = require_isProxyEnabled(); - var builtins = ["__flags", "__methods", "_obj", "assert"]; - module.exports = function proxify(obj, nonChainableMethodName) { - if (!isProxyEnabled()) return obj; - return new Proxy(obj, { - get: function proxyGetter(target, property) { - if (typeof property === "string" && config2.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) { - if (nonChainableMethodName) { - throw Error("Invalid Chai property: " + nonChainableMethodName + "." + property + '. See docs for proper usage of "' + nonChainableMethodName + '".'); - } - var suggestion = null; - var suggestionDistance = 4; - getProperties(target).forEach(function(prop) { - if (!Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1) { - var dist = stringDistanceCapped( - property, - prop, - suggestionDistance - ); - if (dist < suggestionDistance) { - suggestion = prop; - suggestionDistance = dist; - } - } - }); - if (suggestion !== null) { - throw Error("Invalid Chai property: " + property + '. Did you mean "' + suggestion + '"?'); - } else { - throw Error("Invalid Chai property: " + property); - } - } - if (builtins.indexOf(property) === -1 && !flag(target, "lockSsfi")) { - flag(target, "ssfi", proxyGetter); - } - return Reflect.get(target, property); - } - }); - }; - function stringDistanceCapped(strA, strB, cap) { - if (Math.abs(strA.length - strB.length) >= cap) { - return cap; - } - var memo = []; - for (var i = 0; i <= strA.length; i++) { - memo[i] = Array(strB.length + 1).fill(0); - memo[i][0] = i; - } - for (var j = 0; j < strB.length; j++) { - memo[0][j] = j; - } - for (var i = 1; i <= strA.length; i++) { - var ch = strA.charCodeAt(i - 1); - for (var j = 1; j <= strB.length; j++) { - if (Math.abs(i - j) >= cap) { - memo[i][j] = cap; - continue; - } - memo[i][j] = Math.min( - memo[i - 1][j] + 1, - memo[i][j - 1] + 1, - memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1) - ); - } - } - return memo[strA.length][strB.length]; - } - } -}); - -// ../../node_modules/chai/lib/chai/utils/addMethod.js -var require_addMethod = __commonJS({ - "../../node_modules/chai/lib/chai/utils/addMethod.js"(exports, module) { - var addLengthGuard = require_addLengthGuard(); - var chai2 = require_chai(); - var flag = require_flag(); - var proxify = require_proxify(); - var transferFlags = require_transferFlags(); - module.exports = function addMethod(ctx, name, method) { - var methodWrapper = function() { - if (!flag(this, "lockSsfi")) { - flag(this, "ssfi", methodWrapper); - } - var result = method.apply(this, arguments); - if (result !== void 0) - return result; - var newAssertion = new chai2.Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }; - addLengthGuard(methodWrapper, name, false); - ctx[name] = proxify(methodWrapper, name); - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/overwriteProperty.js -var require_overwriteProperty = __commonJS({ - "../../node_modules/chai/lib/chai/utils/overwriteProperty.js"(exports, module) { - var chai2 = require_chai(); - var flag = require_flag(); - var isProxyEnabled = require_isProxyEnabled(); - var transferFlags = require_transferFlags(); - module.exports = function overwriteProperty(ctx, name, getter) { - var _get = Object.getOwnPropertyDescriptor(ctx, name), _super = function() { - }; - if (_get && "function" === typeof _get.get) - _super = _get.get; - Object.defineProperty( - ctx, - name, - { - get: function overwritingPropertyGetter() { - if (!isProxyEnabled() && !flag(this, "lockSsfi")) { - flag(this, "ssfi", overwritingPropertyGetter); - } - var origLockSsfi = flag(this, "lockSsfi"); - flag(this, "lockSsfi", true); - var result = getter(_super).call(this); - flag(this, "lockSsfi", origLockSsfi); - if (result !== void 0) { - return result; - } - var newAssertion = new chai2.Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, - configurable: true - } - ); - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/overwriteMethod.js -var require_overwriteMethod = __commonJS({ - "../../node_modules/chai/lib/chai/utils/overwriteMethod.js"(exports, module) { - var addLengthGuard = require_addLengthGuard(); - var chai2 = require_chai(); - var flag = require_flag(); - var proxify = require_proxify(); - var transferFlags = require_transferFlags(); - module.exports = function overwriteMethod(ctx, name, method) { - var _method = ctx[name], _super = function() { - throw new Error(name + " is not a function"); - }; - if (_method && "function" === typeof _method) - _super = _method; - var overwritingMethodWrapper = function() { - if (!flag(this, "lockSsfi")) { - flag(this, "ssfi", overwritingMethodWrapper); - } - var origLockSsfi = flag(this, "lockSsfi"); - flag(this, "lockSsfi", true); - var result = method(_super).apply(this, arguments); - flag(this, "lockSsfi", origLockSsfi); - if (result !== void 0) { - return result; - } - var newAssertion = new chai2.Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }; - addLengthGuard(overwritingMethodWrapper, name, false); - ctx[name] = proxify(overwritingMethodWrapper, name); - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/addChainableMethod.js -var require_addChainableMethod = __commonJS({ - "../../node_modules/chai/lib/chai/utils/addChainableMethod.js"(exports, module) { - var addLengthGuard = require_addLengthGuard(); - var chai2 = require_chai(); - var flag = require_flag(); - var proxify = require_proxify(); - var transferFlags = require_transferFlags(); - var canSetPrototype = typeof Object.setPrototypeOf === "function"; - var testFn = function() { - }; - var excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) { - var propDesc = Object.getOwnPropertyDescriptor(testFn, name); - if (typeof propDesc !== "object") - return true; - return !propDesc.configurable; - }); - var call = Function.prototype.call; - var apply = Function.prototype.apply; - module.exports = function addChainableMethod(ctx, name, method, chainingBehavior) { - if (typeof chainingBehavior !== "function") { - chainingBehavior = function() { - }; - } - var chainableBehavior = { - method, - chainingBehavior - }; - if (!ctx.__methods) { - ctx.__methods = {}; - } - ctx.__methods[name] = chainableBehavior; - Object.defineProperty( - ctx, - name, - { - get: function chainableMethodGetter() { - chainableBehavior.chainingBehavior.call(this); - var chainableMethodWrapper = function() { - if (!flag(this, "lockSsfi")) { - flag(this, "ssfi", chainableMethodWrapper); - } - var result = chainableBehavior.method.apply(this, arguments); - if (result !== void 0) { - return result; - } - var newAssertion = new chai2.Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }; - addLengthGuard(chainableMethodWrapper, name, true); - if (canSetPrototype) { - var prototype = Object.create(this); - prototype.call = call; - prototype.apply = apply; - Object.setPrototypeOf(chainableMethodWrapper, prototype); - } else { - var asserterNames = Object.getOwnPropertyNames(ctx); - asserterNames.forEach(function(asserterName) { - if (excludeNames.indexOf(asserterName) !== -1) { - return; - } - var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); - Object.defineProperty(chainableMethodWrapper, asserterName, pd); - }); - } - transferFlags(this, chainableMethodWrapper); - return proxify(chainableMethodWrapper); - }, - configurable: true - } - ); - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/overwriteChainableMethod.js -var require_overwriteChainableMethod = __commonJS({ - "../../node_modules/chai/lib/chai/utils/overwriteChainableMethod.js"(exports, module) { - var chai2 = require_chai(); - var transferFlags = require_transferFlags(); - module.exports = function overwriteChainableMethod(ctx, name, method, chainingBehavior) { - var chainableBehavior = ctx.__methods[name]; - var _chainingBehavior = chainableBehavior.chainingBehavior; - chainableBehavior.chainingBehavior = function overwritingChainableMethodGetter() { - var result = chainingBehavior(_chainingBehavior).call(this); - if (result !== void 0) { - return result; - } - var newAssertion = new chai2.Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }; - var _method = chainableBehavior.method; - chainableBehavior.method = function overwritingChainableMethodWrapper() { - var result = method(_method).apply(this, arguments); - if (result !== void 0) { - return result; - } - var newAssertion = new chai2.Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }; - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/compareByInspect.js -var require_compareByInspect = __commonJS({ - "../../node_modules/chai/lib/chai/utils/compareByInspect.js"(exports, module) { - var inspect = require_inspect(); - module.exports = function compareByInspect(a, b) { - return inspect(a) < inspect(b) ? -1 : 1; - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js -var require_getOwnEnumerablePropertySymbols = __commonJS({ - "../../node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js"(exports, module) { - module.exports = function getOwnEnumerablePropertySymbols(obj) { - if (typeof Object.getOwnPropertySymbols !== "function") return []; - return Object.getOwnPropertySymbols(obj).filter(function(sym) { - return Object.getOwnPropertyDescriptor(obj, sym).enumerable; - }); - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js -var require_getOwnEnumerableProperties = __commonJS({ - "../../node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js"(exports, module) { - var getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); - module.exports = function getOwnEnumerableProperties(obj) { - return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj)); - }; - } -}); - -// ../../node_modules/check-error/index.js -var require_check_error = __commonJS({ - "../../node_modules/check-error/index.js"(exports, module) { - "use strict"; - var getFunctionName = require_get_func_name(); - function compatibleInstance(thrown, errorLike) { - return errorLike instanceof Error && thrown === errorLike; - } - function compatibleConstructor(thrown, errorLike) { - if (errorLike instanceof Error) { - return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor; - } else if (errorLike.prototype instanceof Error || errorLike === Error) { - return thrown.constructor === errorLike || thrown instanceof errorLike; - } - return false; - } - function compatibleMessage(thrown, errMatcher) { - var comparisonString = typeof thrown === "string" ? thrown : thrown.message; - if (errMatcher instanceof RegExp) { - return errMatcher.test(comparisonString); - } else if (typeof errMatcher === "string") { - return comparisonString.indexOf(errMatcher) !== -1; - } - return false; - } - function getConstructorName(errorLike) { - var constructorName = errorLike; - if (errorLike instanceof Error) { - constructorName = getFunctionName(errorLike.constructor); - } else if (typeof errorLike === "function") { - constructorName = getFunctionName(errorLike); - if (constructorName === "") { - var newConstructorName = getFunctionName(new errorLike()); - constructorName = newConstructorName || constructorName; - } - } - return constructorName; - } - function getMessage(errorLike) { - var msg = ""; - if (errorLike && errorLike.message) { - msg = errorLike.message; - } else if (typeof errorLike === "string") { - msg = errorLike; - } - return msg; - } - module.exports = { - compatibleInstance, - compatibleConstructor, - compatibleMessage, - getMessage, - getConstructorName - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/isNaN.js -var require_isNaN = __commonJS({ - "../../node_modules/chai/lib/chai/utils/isNaN.js"(exports, module) { - function isNaN(value) { - return value !== value; - } - module.exports = Number.isNaN || isNaN; - } -}); - -// ../../node_modules/chai/lib/chai/utils/getOperator.js -var require_getOperator = __commonJS({ - "../../node_modules/chai/lib/chai/utils/getOperator.js"(exports, module) { - var type = require_type_detect(); - var flag = require_flag(); - function isObjectType(obj) { - var objectType = type(obj); - var objectTypes = ["Array", "Object", "function"]; - return objectTypes.indexOf(objectType) !== -1; - } - module.exports = function getOperator(obj, args) { - var operator = flag(obj, "operator"); - var negate = flag(obj, "negate"); - var expected = args[3]; - var msg = negate ? args[2] : args[1]; - if (operator) { - return operator; - } - if (typeof msg === "function") msg = msg(); - msg = msg || ""; - if (!msg) { - return void 0; - } - if (/\shave\s/.test(msg)) { - return void 0; - } - var isObject = isObjectType(expected); - if (/\snot\s/.test(msg)) { - return isObject ? "notDeepStrictEqual" : "notStrictEqual"; - } - return isObject ? "deepStrictEqual" : "strictEqual"; - }; - } -}); - -// ../../node_modules/chai/lib/chai/utils/index.js -var require_utils = __commonJS({ - "../../node_modules/chai/lib/chai/utils/index.js"(exports) { - var pathval = require_pathval(); - exports.test = require_test(); - exports.type = require_type_detect(); - exports.expectTypes = require_expectTypes(); - exports.getMessage = require_getMessage(); - exports.getActual = require_getActual(); - exports.inspect = require_inspect(); - exports.objDisplay = require_objDisplay(); - exports.flag = require_flag(); - exports.transferFlags = require_transferFlags(); - exports.eql = require_deep_eql(); - exports.getPathInfo = pathval.getPathInfo; - exports.hasProperty = pathval.hasProperty; - exports.getName = require_get_func_name(); - exports.addProperty = require_addProperty(); - exports.addMethod = require_addMethod(); - exports.overwriteProperty = require_overwriteProperty(); - exports.overwriteMethod = require_overwriteMethod(); - exports.addChainableMethod = require_addChainableMethod(); - exports.overwriteChainableMethod = require_overwriteChainableMethod(); - exports.compareByInspect = require_compareByInspect(); - exports.getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); - exports.getOwnEnumerableProperties = require_getOwnEnumerableProperties(); - exports.checkError = require_check_error(); - exports.proxify = require_proxify(); - exports.addLengthGuard = require_addLengthGuard(); - exports.isProxyEnabled = require_isProxyEnabled(); - exports.isNaN = require_isNaN(); - exports.getOperator = require_getOperator(); - } -}); - -// ../../node_modules/chai/lib/chai/assertion.js -var require_assertion = __commonJS({ - "../../node_modules/chai/lib/chai/assertion.js"(exports, module) { - var config2 = require_config(); - module.exports = function(_chai, util2) { - var AssertionError2 = _chai.AssertionError, flag = util2.flag; - _chai.Assertion = Assertion2; - function Assertion2(obj, msg, ssfi, lockSsfi) { - flag(this, "ssfi", ssfi || Assertion2); - flag(this, "lockSsfi", lockSsfi); - flag(this, "object", obj); - flag(this, "message", msg); - flag(this, "eql", config2.deepEqual || util2.eql); - return util2.proxify(this); - } - Object.defineProperty(Assertion2, "includeStack", { - get: function() { - console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); - return config2.includeStack; - }, - set: function(value) { - console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); - config2.includeStack = value; - } - }); - Object.defineProperty(Assertion2, "showDiff", { - get: function() { - console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); - return config2.showDiff; - }, - set: function(value) { - console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); - config2.showDiff = value; - } - }); - Assertion2.addProperty = function(name, fn) { - util2.addProperty(this.prototype, name, fn); - }; - Assertion2.addMethod = function(name, fn) { - util2.addMethod(this.prototype, name, fn); - }; - Assertion2.addChainableMethod = function(name, fn, chainingBehavior) { - util2.addChainableMethod(this.prototype, name, fn, chainingBehavior); - }; - Assertion2.overwriteProperty = function(name, fn) { - util2.overwriteProperty(this.prototype, name, fn); - }; - Assertion2.overwriteMethod = function(name, fn) { - util2.overwriteMethod(this.prototype, name, fn); - }; - Assertion2.overwriteChainableMethod = function(name, fn, chainingBehavior) { - util2.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); - }; - Assertion2.prototype.assert = function(expr, msg, negateMsg, expected, _actual, showDiff) { - var ok = util2.test(this, arguments); - if (false !== showDiff) showDiff = true; - if (void 0 === expected && void 0 === _actual) showDiff = false; - if (true !== config2.showDiff) showDiff = false; - if (!ok) { - msg = util2.getMessage(this, arguments); - var actual = util2.getActual(this, arguments); - var assertionErrorObjectProperties = { - actual, - expected, - showDiff - }; - var operator = util2.getOperator(this, arguments); - if (operator) { - assertionErrorObjectProperties.operator = operator; - } - throw new AssertionError2( - msg, - assertionErrorObjectProperties, - config2.includeStack ? this.assert : flag(this, "ssfi") - ); - } - }; - Object.defineProperty( - Assertion2.prototype, - "_obj", - { - get: function() { - return flag(this, "object"); - }, - set: function(val) { - flag(this, "object", val); - } - } - ); - }; - } -}); - -// ../../node_modules/chai/lib/chai/core/assertions.js -var require_assertions = __commonJS({ - "../../node_modules/chai/lib/chai/core/assertions.js"(exports, module) { - module.exports = function(chai2, _) { - var Assertion2 = chai2.Assertion, AssertionError2 = chai2.AssertionError, flag = _.flag; - [ - "to", - "be", - "been", - "is", - "and", - "has", - "have", - "with", - "that", - "which", - "at", - "of", - "same", - "but", - "does", - "still", - "also" - ].forEach(function(chain) { - Assertion2.addProperty(chain); - }); - Assertion2.addProperty("not", function() { - flag(this, "negate", true); - }); - Assertion2.addProperty("deep", function() { - flag(this, "deep", true); - }); - Assertion2.addProperty("nested", function() { - flag(this, "nested", true); - }); - Assertion2.addProperty("own", function() { - flag(this, "own", true); - }); - Assertion2.addProperty("ordered", function() { - flag(this, "ordered", true); - }); - Assertion2.addProperty("any", function() { - flag(this, "any", true); - flag(this, "all", false); - }); - Assertion2.addProperty("all", function() { - flag(this, "all", true); - flag(this, "any", false); - }); - function an(type, msg) { - if (msg) flag(this, "message", msg); - type = type.toLowerCase(); - var obj = flag(this, "object"), article = ~["a", "e", "i", "o", "u"].indexOf(type.charAt(0)) ? "an " : "a "; - this.assert( - type === _.type(obj).toLowerCase(), - "expected #{this} to be " + article + type, - "expected #{this} not to be " + article + type - ); - } - Assertion2.addChainableMethod("an", an); - Assertion2.addChainableMethod("a", an); - function SameValueZero(a, b) { - return _.isNaN(a) && _.isNaN(b) || a === b; - } - function includeChainingBehavior() { - flag(this, "contains", true); - } - function include(val, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), negate = flag(this, "negate"), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), descriptor = isDeep ? "deep " : "", isEql = isDeep ? flag(this, "eql") : SameValueZero; - flagMsg = flagMsg ? flagMsg + ": " : ""; - var included = false; - switch (objType) { - case "string": - included = obj.indexOf(val) !== -1; - break; - case "weakset": - if (isDeep) { - throw new AssertionError2( - flagMsg + "unable to use .deep.include with WeakSet", - void 0, - ssfi - ); - } - included = obj.has(val); - break; - case "map": - obj.forEach(function(item) { - included = included || isEql(item, val); - }); - break; - case "set": - if (isDeep) { - obj.forEach(function(item) { - included = included || isEql(item, val); - }); - } else { - included = obj.has(val); - } - break; - case "array": - if (isDeep) { - included = obj.some(function(item) { - return isEql(item, val); - }); - } else { - included = obj.indexOf(val) !== -1; - } - break; - default: - if (val !== Object(val)) { - throw new AssertionError2( - flagMsg + "the given combination of arguments (" + objType + " and " + _.type(val).toLowerCase() + ") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a " + _.type(val).toLowerCase(), - void 0, - ssfi - ); - } - var props = Object.keys(val), firstErr = null, numErrs = 0; - props.forEach(function(prop) { - var propAssertion = new Assertion2(obj); - _.transferFlags(this, propAssertion, true); - flag(propAssertion, "lockSsfi", true); - if (!negate || props.length === 1) { - propAssertion.property(prop, val[prop]); - return; - } - try { - propAssertion.property(prop, val[prop]); - } catch (err) { - if (!_.checkError.compatibleConstructor(err, AssertionError2)) { - throw err; - } - if (firstErr === null) firstErr = err; - numErrs++; - } - }, this); - if (negate && props.length > 1 && numErrs === props.length) { - throw firstErr; - } - return; - } - this.assert( - included, - "expected #{this} to " + descriptor + "include " + _.inspect(val), - "expected #{this} to not " + descriptor + "include " + _.inspect(val) - ); - } - Assertion2.addChainableMethod("include", include, includeChainingBehavior); - Assertion2.addChainableMethod("contain", include, includeChainingBehavior); - Assertion2.addChainableMethod("contains", include, includeChainingBehavior); - Assertion2.addChainableMethod("includes", include, includeChainingBehavior); - Assertion2.addProperty("ok", function() { - this.assert( - flag(this, "object"), - "expected #{this} to be truthy", - "expected #{this} to be falsy" - ); - }); - Assertion2.addProperty("true", function() { - this.assert( - true === flag(this, "object"), - "expected #{this} to be true", - "expected #{this} to be false", - flag(this, "negate") ? false : true - ); - }); - Assertion2.addProperty("false", function() { - this.assert( - false === flag(this, "object"), - "expected #{this} to be false", - "expected #{this} to be true", - flag(this, "negate") ? true : false - ); - }); - Assertion2.addProperty("null", function() { - this.assert( - null === flag(this, "object"), - "expected #{this} to be null", - "expected #{this} not to be null" - ); - }); - Assertion2.addProperty("undefined", function() { - this.assert( - void 0 === flag(this, "object"), - "expected #{this} to be undefined", - "expected #{this} not to be undefined" - ); - }); - Assertion2.addProperty("NaN", function() { - this.assert( - _.isNaN(flag(this, "object")), - "expected #{this} to be NaN", - "expected #{this} not to be NaN" - ); - }); - function assertExist() { - var val = flag(this, "object"); - this.assert( - val !== null && val !== void 0, - "expected #{this} to exist", - "expected #{this} to not exist" - ); - } - Assertion2.addProperty("exist", assertExist); - Assertion2.addProperty("exists", assertExist); - Assertion2.addProperty("empty", function() { - var val = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), itemsCount; - flagMsg = flagMsg ? flagMsg + ": " : ""; - switch (_.type(val).toLowerCase()) { - case "array": - case "string": - itemsCount = val.length; - break; - case "map": - case "set": - itemsCount = val.size; - break; - case "weakmap": - case "weakset": - throw new AssertionError2( - flagMsg + ".empty was passed a weak collection", - void 0, - ssfi - ); - case "function": - var msg = flagMsg + ".empty was passed a function " + _.getName(val); - throw new AssertionError2(msg.trim(), void 0, ssfi); - default: - if (val !== Object(val)) { - throw new AssertionError2( - flagMsg + ".empty was passed non-string primitive " + _.inspect(val), - void 0, - ssfi - ); - } - itemsCount = Object.keys(val).length; - } - this.assert( - 0 === itemsCount, - "expected #{this} to be empty", - "expected #{this} not to be empty" - ); - }); - function checkArguments() { - var obj = flag(this, "object"), type = _.type(obj); - this.assert( - "Arguments" === type, - "expected #{this} to be arguments but got " + type, - "expected #{this} to not be arguments" - ); - } - Assertion2.addProperty("arguments", checkArguments); - Assertion2.addProperty("Arguments", checkArguments); - function assertEqual(val, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"); - if (flag(this, "deep")) { - var prevLockSsfi = flag(this, "lockSsfi"); - flag(this, "lockSsfi", true); - this.eql(val); - flag(this, "lockSsfi", prevLockSsfi); - } else { - this.assert( - val === obj, - "expected #{this} to equal #{exp}", - "expected #{this} to not equal #{exp}", - val, - this._obj, - true - ); - } - } - Assertion2.addMethod("equal", assertEqual); - Assertion2.addMethod("equals", assertEqual); - Assertion2.addMethod("eq", assertEqual); - function assertEql(obj, msg) { - if (msg) flag(this, "message", msg); - var eql = flag(this, "eql"); - this.assert( - eql(obj, flag(this, "object")), - "expected #{this} to deeply equal #{exp}", - "expected #{this} to not deeply equal #{exp}", - obj, - this._obj, - true - ); - } - Assertion2.addMethod("eql", assertEql); - Assertion2.addMethod("eqls", assertEql); - function assertAbove(n, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && (objType === "date" && nType !== "date")) { - errorMessage = msgPrefix + "the argument to above must be a date"; - } else if (nType !== "number" && (doLength || objType === "number")) { - errorMessage = msgPrefix + "the argument to above must be a number"; - } else if (!doLength && (objType !== "date" && objType !== "number")) { - var printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError2(errorMessage, void 0, ssfi); - } - if (doLength) { - var descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount > n, - "expected #{this} to have a " + descriptor + " above #{exp} but got #{act}", - "expected #{this} to not have a " + descriptor + " above #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj > n, - "expected #{this} to be above #{exp}", - "expected #{this} to be at most #{exp}", - n - ); - } - } - Assertion2.addMethod("above", assertAbove); - Assertion2.addMethod("gt", assertAbove); - Assertion2.addMethod("greaterThan", assertAbove); - function assertLeast(n, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && (objType === "date" && nType !== "date")) { - errorMessage = msgPrefix + "the argument to least must be a date"; - } else if (nType !== "number" && (doLength || objType === "number")) { - errorMessage = msgPrefix + "the argument to least must be a number"; - } else if (!doLength && (objType !== "date" && objType !== "number")) { - var printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError2(errorMessage, void 0, ssfi); - } - if (doLength) { - var descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount >= n, - "expected #{this} to have a " + descriptor + " at least #{exp} but got #{act}", - "expected #{this} to have a " + descriptor + " below #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj >= n, - "expected #{this} to be at least #{exp}", - "expected #{this} to be below #{exp}", - n - ); - } - } - Assertion2.addMethod("least", assertLeast); - Assertion2.addMethod("gte", assertLeast); - Assertion2.addMethod("greaterThanOrEqual", assertLeast); - function assertBelow(n, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && (objType === "date" && nType !== "date")) { - errorMessage = msgPrefix + "the argument to below must be a date"; - } else if (nType !== "number" && (doLength || objType === "number")) { - errorMessage = msgPrefix + "the argument to below must be a number"; - } else if (!doLength && (objType !== "date" && objType !== "number")) { - var printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError2(errorMessage, void 0, ssfi); - } - if (doLength) { - var descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount < n, - "expected #{this} to have a " + descriptor + " below #{exp} but got #{act}", - "expected #{this} to not have a " + descriptor + " below #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj < n, - "expected #{this} to be below #{exp}", - "expected #{this} to be at least #{exp}", - n - ); - } - } - Assertion2.addMethod("below", assertBelow); - Assertion2.addMethod("lt", assertBelow); - Assertion2.addMethod("lessThan", assertBelow); - function assertMost(n, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && (objType === "date" && nType !== "date")) { - errorMessage = msgPrefix + "the argument to most must be a date"; - } else if (nType !== "number" && (doLength || objType === "number")) { - errorMessage = msgPrefix + "the argument to most must be a number"; - } else if (!doLength && (objType !== "date" && objType !== "number")) { - var printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError2(errorMessage, void 0, ssfi); - } - if (doLength) { - var descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount <= n, - "expected #{this} to have a " + descriptor + " at most #{exp} but got #{act}", - "expected #{this} to have a " + descriptor + " above #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj <= n, - "expected #{this} to be at most #{exp}", - "expected #{this} to be above #{exp}", - n - ); - } - } - Assertion2.addMethod("most", assertMost); - Assertion2.addMethod("lte", assertMost); - Assertion2.addMethod("lessThanOrEqual", assertMost); - Assertion2.addMethod("within", function(start, finish, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), startType = _.type(start).toLowerCase(), finishType = _.type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === "date" && finishType === "date" ? start.toISOString() + ".." + finish.toISOString() : start + ".." + finish; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && (objType === "date" && (startType !== "date" || finishType !== "date"))) { - errorMessage = msgPrefix + "the arguments to within must be dates"; - } else if ((startType !== "number" || finishType !== "number") && (doLength || objType === "number")) { - errorMessage = msgPrefix + "the arguments to within must be numbers"; - } else if (!doLength && (objType !== "date" && objType !== "number")) { - var printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError2(errorMessage, void 0, ssfi); - } - if (doLength) { - var descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount >= start && itemsCount <= finish, - "expected #{this} to have a " + descriptor + " within " + range, - "expected #{this} to not have a " + descriptor + " within " + range - ); - } else { - this.assert( - obj >= start && obj <= finish, - "expected #{this} to be within " + range, - "expected #{this} to not be within " + range - ); - } - }); - function assertInstanceOf(constructor, msg) { - if (msg) flag(this, "message", msg); - var target = flag(this, "object"); - var ssfi = flag(this, "ssfi"); - var flagMsg = flag(this, "message"); - try { - var isInstanceOf = target instanceof constructor; - } catch (err) { - if (err instanceof TypeError) { - flagMsg = flagMsg ? flagMsg + ": " : ""; - throw new AssertionError2( - flagMsg + "The instanceof assertion needs a constructor but " + _.type(constructor) + " was given.", - void 0, - ssfi - ); - } - throw err; - } - var name = _.getName(constructor); - if (name === null) { - name = "an unnamed constructor"; - } - this.assert( - isInstanceOf, - "expected #{this} to be an instance of " + name, - "expected #{this} to not be an instance of " + name - ); - } - ; - Assertion2.addMethod("instanceof", assertInstanceOf); - Assertion2.addMethod("instanceOf", assertInstanceOf); - function assertProperty(name, val, msg) { - if (msg) flag(this, "message", msg); - var isNested = flag(this, "nested"), isOwn = flag(this, "own"), flagMsg = flag(this, "message"), obj = flag(this, "object"), ssfi = flag(this, "ssfi"), nameType = typeof name; - flagMsg = flagMsg ? flagMsg + ": " : ""; - if (isNested) { - if (nameType !== "string") { - throw new AssertionError2( - flagMsg + "the argument to property must be a string when using nested syntax", - void 0, - ssfi - ); - } - } else { - if (nameType !== "string" && nameType !== "number" && nameType !== "symbol") { - throw new AssertionError2( - flagMsg + "the argument to property must be a string, number, or symbol", - void 0, - ssfi - ); - } - } - if (isNested && isOwn) { - throw new AssertionError2( - flagMsg + 'The "nested" and "own" flags cannot be combined.', - void 0, - ssfi - ); - } - if (obj === null || obj === void 0) { - throw new AssertionError2( - flagMsg + "Target cannot be null or undefined.", - void 0, - ssfi - ); - } - var isDeep = flag(this, "deep"), negate = flag(this, "negate"), pathInfo = isNested ? _.getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name], isEql = isDeep ? flag(this, "eql") : (val1, val2) => val1 === val2; - ; - var descriptor = ""; - if (isDeep) descriptor += "deep "; - if (isOwn) descriptor += "own "; - if (isNested) descriptor += "nested "; - descriptor += "property "; - var hasProperty; - if (isOwn) hasProperty = Object.prototype.hasOwnProperty.call(obj, name); - else if (isNested) hasProperty = pathInfo.exists; - else hasProperty = _.hasProperty(obj, name); - if (!negate || arguments.length === 1) { - this.assert( - hasProperty, - "expected #{this} to have " + descriptor + _.inspect(name), - "expected #{this} to not have " + descriptor + _.inspect(name) - ); - } - if (arguments.length > 1) { - this.assert( - hasProperty && isEql(val, value), - "expected #{this} to have " + descriptor + _.inspect(name) + " of #{exp}, but got #{act}", - "expected #{this} to not have " + descriptor + _.inspect(name) + " of #{act}", - val, - value - ); - } - flag(this, "object", value); - } - Assertion2.addMethod("property", assertProperty); - function assertOwnProperty(name, value, msg) { - flag(this, "own", true); - assertProperty.apply(this, arguments); - } - Assertion2.addMethod("ownProperty", assertOwnProperty); - Assertion2.addMethod("haveOwnProperty", assertOwnProperty); - function assertOwnPropertyDescriptor(name, descriptor, msg) { - if (typeof descriptor === "string") { - msg = descriptor; - descriptor = null; - } - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"); - var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); - var eql = flag(this, "eql"); - if (actualDescriptor && descriptor) { - this.assert( - eql(descriptor, actualDescriptor), - "expected the own property descriptor for " + _.inspect(name) + " on #{this} to match " + _.inspect(descriptor) + ", got " + _.inspect(actualDescriptor), - "expected the own property descriptor for " + _.inspect(name) + " on #{this} to not match " + _.inspect(descriptor), - descriptor, - actualDescriptor, - true - ); - } else { - this.assert( - actualDescriptor, - "expected #{this} to have an own property descriptor for " + _.inspect(name), - "expected #{this} to not have an own property descriptor for " + _.inspect(name) - ); - } - flag(this, "object", actualDescriptor); - } - Assertion2.addMethod("ownPropertyDescriptor", assertOwnPropertyDescriptor); - Assertion2.addMethod("haveOwnPropertyDescriptor", assertOwnPropertyDescriptor); - function assertLengthChain() { - flag(this, "doLength", true); - } - function assertLength(n, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), descriptor = "length", itemsCount; - switch (objType) { - case "map": - case "set": - descriptor = "size"; - itemsCount = obj.size; - break; - default: - new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); - itemsCount = obj.length; - } - this.assert( - itemsCount == n, - "expected #{this} to have a " + descriptor + " of #{exp} but got #{act}", - "expected #{this} to not have a " + descriptor + " of #{act}", - n, - itemsCount - ); - } - Assertion2.addChainableMethod("length", assertLength, assertLengthChain); - Assertion2.addChainableMethod("lengthOf", assertLength, assertLengthChain); - function assertMatch(re, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"); - this.assert( - re.exec(obj), - "expected #{this} to match " + re, - "expected #{this} not to match " + re - ); - } - Assertion2.addMethod("match", assertMatch); - Assertion2.addMethod("matches", assertMatch); - Assertion2.addMethod("string", function(str, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); - new Assertion2(obj, flagMsg, ssfi, true).is.a("string"); - this.assert( - ~obj.indexOf(str), - "expected #{this} to contain " + _.inspect(str), - "expected #{this} to not contain " + _.inspect(str) - ); - }); - function assertKeys(keys) { - var obj = flag(this, "object"), objType = _.type(obj), keysType = _.type(keys), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), str, deepStr = "", actual, ok = true, flagMsg = flag(this, "message"); - flagMsg = flagMsg ? flagMsg + ": " : ""; - var mixedArgsMsg = flagMsg + "when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments"; - if (objType === "Map" || objType === "Set") { - deepStr = isDeep ? "deeply " : ""; - actual = []; - obj.forEach(function(val, key) { - actual.push(key); - }); - if (keysType !== "Array") { - keys = Array.prototype.slice.call(arguments); - } - } else { - actual = _.getOwnEnumerableProperties(obj); - switch (keysType) { - case "Array": - if (arguments.length > 1) { - throw new AssertionError2(mixedArgsMsg, void 0, ssfi); - } - break; - case "Object": - if (arguments.length > 1) { - throw new AssertionError2(mixedArgsMsg, void 0, ssfi); - } - keys = Object.keys(keys); - break; - default: - keys = Array.prototype.slice.call(arguments); - } - keys = keys.map(function(val) { - return typeof val === "symbol" ? val : String(val); - }); - } - if (!keys.length) { - throw new AssertionError2(flagMsg + "keys required", void 0, ssfi); - } - var len = keys.length, any = flag(this, "any"), all = flag(this, "all"), expected = keys, isEql = isDeep ? flag(this, "eql") : (val1, val2) => val1 === val2; - if (!any && !all) { - all = true; - } - if (any) { - ok = expected.some(function(expectedKey) { - return actual.some(function(actualKey) { - return isEql(expectedKey, actualKey); - }); - }); - } - if (all) { - ok = expected.every(function(expectedKey) { - return actual.some(function(actualKey) { - return isEql(expectedKey, actualKey); - }); - }); - if (!flag(this, "contains")) { - ok = ok && keys.length == actual.length; - } - } - if (len > 1) { - keys = keys.map(function(key) { - return _.inspect(key); - }); - var last = keys.pop(); - if (all) { - str = keys.join(", ") + ", and " + last; - } - if (any) { - str = keys.join(", ") + ", or " + last; - } - } else { - str = _.inspect(keys[0]); - } - str = (len > 1 ? "keys " : "key ") + str; - str = (flag(this, "contains") ? "contain " : "have ") + str; - this.assert( - ok, - "expected #{this} to " + deepStr + str, - "expected #{this} to not " + deepStr + str, - expected.slice(0).sort(_.compareByInspect), - actual.sort(_.compareByInspect), - true - ); - } - Assertion2.addMethod("keys", assertKeys); - Assertion2.addMethod("key", assertKeys); - function assertThrows(errorLike, errMsgMatcher, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), negate = flag(this, "negate") || false; - new Assertion2(obj, flagMsg, ssfi, true).is.a("function"); - if (errorLike instanceof RegExp || typeof errorLike === "string") { - errMsgMatcher = errorLike; - errorLike = null; - } - var caughtErr; - try { - obj(); - } catch (err) { - caughtErr = err; - } - var everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0; - var everyArgIsDefined = Boolean(errorLike && errMsgMatcher); - var errorLikeFail = false; - var errMsgMatcherFail = false; - if (everyArgIsUndefined || !everyArgIsUndefined && !negate) { - var errorLikeString = "an error"; - if (errorLike instanceof Error) { - errorLikeString = "#{exp}"; - } else if (errorLike) { - errorLikeString = _.checkError.getConstructorName(errorLike); - } - this.assert( - caughtErr, - "expected #{this} to throw " + errorLikeString, - "expected #{this} to not throw an error but #{act} was thrown", - errorLike && errorLike.toString(), - caughtErr instanceof Error ? caughtErr.toString() : typeof caughtErr === "string" ? caughtErr : caughtErr && _.checkError.getConstructorName(caughtErr) - ); - } - if (errorLike && caughtErr) { - if (errorLike instanceof Error) { - var isCompatibleInstance = _.checkError.compatibleInstance(caughtErr, errorLike); - if (isCompatibleInstance === negate) { - if (everyArgIsDefined && negate) { - errorLikeFail = true; - } else { - this.assert( - negate, - "expected #{this} to throw #{exp} but #{act} was thrown", - "expected #{this} to not throw #{exp}" + (caughtErr && !negate ? " but #{act} was thrown" : ""), - errorLike.toString(), - caughtErr.toString() - ); - } - } - } - var isCompatibleConstructor = _.checkError.compatibleConstructor(caughtErr, errorLike); - if (isCompatibleConstructor === negate) { - if (everyArgIsDefined && negate) { - errorLikeFail = true; - } else { - this.assert( - negate, - "expected #{this} to throw #{exp} but #{act} was thrown", - "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), - errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), - caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) - ); - } - } - } - if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) { - var placeholder = "including"; - if (errMsgMatcher instanceof RegExp) { - placeholder = "matching"; - } - var isCompatibleMessage = _.checkError.compatibleMessage(caughtErr, errMsgMatcher); - if (isCompatibleMessage === negate) { - if (everyArgIsDefined && negate) { - errMsgMatcherFail = true; - } else { - this.assert( - negate, - "expected #{this} to throw error " + placeholder + " #{exp} but got #{act}", - "expected #{this} to throw error not " + placeholder + " #{exp}", - errMsgMatcher, - _.checkError.getMessage(caughtErr) - ); - } - } - } - if (errorLikeFail && errMsgMatcherFail) { - this.assert( - negate, - "expected #{this} to throw #{exp} but #{act} was thrown", - "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), - errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), - caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) - ); - } - flag(this, "object", caughtErr); - } - ; - Assertion2.addMethod("throw", assertThrows); - Assertion2.addMethod("throws", assertThrows); - Assertion2.addMethod("Throw", assertThrows); - function respondTo(method, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), itself = flag(this, "itself"), context = "function" === typeof obj && !itself ? obj.prototype[method] : obj[method]; - this.assert( - "function" === typeof context, - "expected #{this} to respond to " + _.inspect(method), - "expected #{this} to not respond to " + _.inspect(method) - ); - } - Assertion2.addMethod("respondTo", respondTo); - Assertion2.addMethod("respondsTo", respondTo); - Assertion2.addProperty("itself", function() { - flag(this, "itself", true); - }); - function satisfy(matcher, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"); - var result = matcher(obj); - this.assert( - result, - "expected #{this} to satisfy " + _.objDisplay(matcher), - "expected #{this} to not satisfy" + _.objDisplay(matcher), - flag(this, "negate") ? false : true, - result - ); - } - Assertion2.addMethod("satisfy", satisfy); - Assertion2.addMethod("satisfies", satisfy); - function closeTo(expected, delta, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); - new Assertion2(obj, flagMsg, ssfi, true).is.a("number"); - if (typeof expected !== "number" || typeof delta !== "number") { - flagMsg = flagMsg ? flagMsg + ": " : ""; - var deltaMessage = delta === void 0 ? ", and a delta is required" : ""; - throw new AssertionError2( - flagMsg + "the arguments to closeTo or approximately must be numbers" + deltaMessage, - void 0, - ssfi - ); - } - this.assert( - Math.abs(obj - expected) <= delta, - "expected #{this} to be close to " + expected + " +/- " + delta, - "expected #{this} not to be close to " + expected + " +/- " + delta - ); - } - Assertion2.addMethod("closeTo", closeTo); - Assertion2.addMethod("approximately", closeTo); - function isSubsetOf(subset, superset, cmp, contains, ordered) { - if (!contains) { - if (subset.length !== superset.length) return false; - superset = superset.slice(); - } - return subset.every(function(elem, idx) { - if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx]; - if (!cmp) { - var matchIdx = superset.indexOf(elem); - if (matchIdx === -1) return false; - if (!contains) superset.splice(matchIdx, 1); - return true; - } - return superset.some(function(elem2, matchIdx2) { - if (!cmp(elem, elem2)) return false; - if (!contains) superset.splice(matchIdx2, 1); - return true; - }); - }); - } - Assertion2.addMethod("members", function(subset, msg) { - if (msg) flag(this, "message", msg); - var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); - new Assertion2(obj, flagMsg, ssfi, true).to.be.an("array"); - new Assertion2(subset, flagMsg, ssfi, true).to.be.an("array"); - var contains = flag(this, "contains"); - var ordered = flag(this, "ordered"); - var subject, failMsg, failNegateMsg; - if (contains) { - subject = ordered ? "an ordered superset" : "a superset"; - failMsg = "expected #{this} to be " + subject + " of #{exp}"; - failNegateMsg = "expected #{this} to not be " + subject + " of #{exp}"; - } else { - subject = ordered ? "ordered members" : "members"; - failMsg = "expected #{this} to have the same " + subject + " as #{exp}"; - failNegateMsg = "expected #{this} to not have the same " + subject + " as #{exp}"; - } - var cmp = flag(this, "deep") ? flag(this, "eql") : void 0; - this.assert( - isSubsetOf(subset, obj, cmp, contains, ordered), - failMsg, - failNegateMsg, - subset, - obj, - true - ); - }); - function oneOf(list, msg) { - if (msg) flag(this, "message", msg); - var expected = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), contains = flag(this, "contains"), isDeep = flag(this, "deep"), eql = flag(this, "eql"); - new Assertion2(list, flagMsg, ssfi, true).to.be.an("array"); - if (contains) { - this.assert( - list.some(function(possibility) { - return expected.indexOf(possibility) > -1; - }), - "expected #{this} to contain one of #{exp}", - "expected #{this} to not contain one of #{exp}", - list, - expected - ); - } else { - if (isDeep) { - this.assert( - list.some(function(possibility) { - return eql(expected, possibility); - }), - "expected #{this} to deeply equal one of #{exp}", - "expected #{this} to deeply equal one of #{exp}", - list, - expected - ); - } else { - this.assert( - list.indexOf(expected) > -1, - "expected #{this} to be one of #{exp}", - "expected #{this} to not be one of #{exp}", - list, - expected - ); - } - } - } - Assertion2.addMethod("oneOf", oneOf); - function assertChanges(subject, prop, msg) { - if (msg) flag(this, "message", msg); - var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); - new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); - var initial; - if (!prop) { - new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); - initial = subject(); - } else { - new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); - initial = subject[prop]; - } - fn(); - var final = prop === void 0 || prop === null ? subject() : subject[prop]; - var msgObj = prop === void 0 || prop === null ? initial : "." + prop; - flag(this, "deltaMsgObj", msgObj); - flag(this, "initialDeltaValue", initial); - flag(this, "finalDeltaValue", final); - flag(this, "deltaBehavior", "change"); - flag(this, "realDelta", final !== initial); - this.assert( - initial !== final, - "expected " + msgObj + " to change", - "expected " + msgObj + " to not change" - ); - } - Assertion2.addMethod("change", assertChanges); - Assertion2.addMethod("changes", assertChanges); - function assertIncreases(subject, prop, msg) { - if (msg) flag(this, "message", msg); - var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); - new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); - var initial; - if (!prop) { - new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); - initial = subject(); - } else { - new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); - initial = subject[prop]; - } - new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); - fn(); - var final = prop === void 0 || prop === null ? subject() : subject[prop]; - var msgObj = prop === void 0 || prop === null ? initial : "." + prop; - flag(this, "deltaMsgObj", msgObj); - flag(this, "initialDeltaValue", initial); - flag(this, "finalDeltaValue", final); - flag(this, "deltaBehavior", "increase"); - flag(this, "realDelta", final - initial); - this.assert( - final - initial > 0, - "expected " + msgObj + " to increase", - "expected " + msgObj + " to not increase" - ); - } - Assertion2.addMethod("increase", assertIncreases); - Assertion2.addMethod("increases", assertIncreases); - function assertDecreases(subject, prop, msg) { - if (msg) flag(this, "message", msg); - var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); - new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); - var initial; - if (!prop) { - new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); - initial = subject(); - } else { - new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); - initial = subject[prop]; - } - new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); - fn(); - var final = prop === void 0 || prop === null ? subject() : subject[prop]; - var msgObj = prop === void 0 || prop === null ? initial : "." + prop; - flag(this, "deltaMsgObj", msgObj); - flag(this, "initialDeltaValue", initial); - flag(this, "finalDeltaValue", final); - flag(this, "deltaBehavior", "decrease"); - flag(this, "realDelta", initial - final); - this.assert( - final - initial < 0, - "expected " + msgObj + " to decrease", - "expected " + msgObj + " to not decrease" - ); - } - Assertion2.addMethod("decrease", assertDecreases); - Assertion2.addMethod("decreases", assertDecreases); - function assertDelta(delta, msg) { - if (msg) flag(this, "message", msg); - var msgObj = flag(this, "deltaMsgObj"); - var initial = flag(this, "initialDeltaValue"); - var final = flag(this, "finalDeltaValue"); - var behavior = flag(this, "deltaBehavior"); - var realDelta = flag(this, "realDelta"); - var expression; - if (behavior === "change") { - expression = Math.abs(final - initial) === Math.abs(delta); - } else { - expression = realDelta === Math.abs(delta); - } - this.assert( - expression, - "expected " + msgObj + " to " + behavior + " by " + delta, - "expected " + msgObj + " to not " + behavior + " by " + delta - ); - } - Assertion2.addMethod("by", assertDelta); - Assertion2.addProperty("extensible", function() { - var obj = flag(this, "object"); - var isExtensible = obj === Object(obj) && Object.isExtensible(obj); - this.assert( - isExtensible, - "expected #{this} to be extensible", - "expected #{this} to not be extensible" - ); - }); - Assertion2.addProperty("sealed", function() { - var obj = flag(this, "object"); - var isSealed = obj === Object(obj) ? Object.isSealed(obj) : true; - this.assert( - isSealed, - "expected #{this} to be sealed", - "expected #{this} to not be sealed" - ); - }); - Assertion2.addProperty("frozen", function() { - var obj = flag(this, "object"); - var isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true; - this.assert( - isFrozen, - "expected #{this} to be frozen", - "expected #{this} to not be frozen" - ); - }); - Assertion2.addProperty("finite", function(msg) { - var obj = flag(this, "object"); - this.assert( - typeof obj === "number" && isFinite(obj), - "expected #{this} to be a finite number", - "expected #{this} to not be a finite number" - ); - }); - }; - } -}); - -// ../../node_modules/chai/lib/chai/interface/expect.js -var require_expect = __commonJS({ - "../../node_modules/chai/lib/chai/interface/expect.js"(exports, module) { - module.exports = function(chai2, util2) { - chai2.expect = function(val, message) { - return new chai2.Assertion(val, message); - }; - chai2.expect.fail = function(actual, expected, message, operator) { - if (arguments.length < 2) { - message = actual; - actual = void 0; - } - message = message || "expect.fail()"; - throw new chai2.AssertionError(message, { - actual, - expected, - operator - }, chai2.expect.fail); - }; - }; - } -}); - -// ../../node_modules/chai/lib/chai/interface/should.js -var require_should = __commonJS({ - "../../node_modules/chai/lib/chai/interface/should.js"(exports, module) { - module.exports = function(chai2, util2) { - var Assertion2 = chai2.Assertion; - function loadShould() { - function shouldGetter() { - if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === "function" && this instanceof Symbol || typeof BigInt === "function" && this instanceof BigInt) { - return new Assertion2(this.valueOf(), null, shouldGetter); - } - return new Assertion2(this, null, shouldGetter); - } - function shouldSetter(value) { - Object.defineProperty(this, "should", { - value, - enumerable: true, - configurable: true, - writable: true - }); - } - Object.defineProperty(Object.prototype, "should", { - set: shouldSetter, - get: shouldGetter, - configurable: true - }); - var should2 = {}; - should2.fail = function(actual, expected, message, operator) { - if (arguments.length < 2) { - message = actual; - actual = void 0; - } - message = message || "should.fail()"; - throw new chai2.AssertionError(message, { - actual, - expected, - operator - }, should2.fail); - }; - should2.equal = function(val1, val2, msg) { - new Assertion2(val1, msg).to.equal(val2); - }; - should2.Throw = function(fn, errt, errs, msg) { - new Assertion2(fn, msg).to.Throw(errt, errs); - }; - should2.exist = function(val, msg) { - new Assertion2(val, msg).to.exist; - }; - should2.not = {}; - should2.not.equal = function(val1, val2, msg) { - new Assertion2(val1, msg).to.not.equal(val2); - }; - should2.not.Throw = function(fn, errt, errs, msg) { - new Assertion2(fn, msg).to.not.Throw(errt, errs); - }; - should2.not.exist = function(val, msg) { - new Assertion2(val, msg).to.not.exist; - }; - should2["throw"] = should2["Throw"]; - should2.not["throw"] = should2.not["Throw"]; - return should2; - } - ; - chai2.should = loadShould; - chai2.Should = loadShould; - }; - } -}); - -// ../../node_modules/chai/lib/chai/interface/assert.js -var require_assert = __commonJS({ - "../../node_modules/chai/lib/chai/interface/assert.js"(exports, module) { - module.exports = function(chai2, util2) { - var Assertion2 = chai2.Assertion, flag = util2.flag; - var assert2 = chai2.assert = function(express, errmsg) { - var test = new Assertion2(null, null, chai2.assert, true); - test.assert( - express, - errmsg, - "[ negation message unavailable ]" - ); - }; - assert2.fail = function(actual, expected, message, operator) { - if (arguments.length < 2) { - message = actual; - actual = void 0; - } - message = message || "assert.fail()"; - throw new chai2.AssertionError(message, { - actual, - expected, - operator - }, assert2.fail); - }; - assert2.isOk = function(val, msg) { - new Assertion2(val, msg, assert2.isOk, true).is.ok; - }; - assert2.isNotOk = function(val, msg) { - new Assertion2(val, msg, assert2.isNotOk, true).is.not.ok; - }; - assert2.equal = function(act, exp, msg) { - var test = new Assertion2(act, msg, assert2.equal, true); - test.assert( - exp == flag(test, "object"), - "expected #{this} to equal #{exp}", - "expected #{this} to not equal #{act}", - exp, - act, - true - ); - }; - assert2.notEqual = function(act, exp, msg) { - var test = new Assertion2(act, msg, assert2.notEqual, true); - test.assert( - exp != flag(test, "object"), - "expected #{this} to not equal #{exp}", - "expected #{this} to equal #{act}", - exp, - act, - true - ); - }; - assert2.strictEqual = function(act, exp, msg) { - new Assertion2(act, msg, assert2.strictEqual, true).to.equal(exp); - }; - assert2.notStrictEqual = function(act, exp, msg) { - new Assertion2(act, msg, assert2.notStrictEqual, true).to.not.equal(exp); - }; - assert2.deepEqual = assert2.deepStrictEqual = function(act, exp, msg) { - new Assertion2(act, msg, assert2.deepEqual, true).to.eql(exp); - }; - assert2.notDeepEqual = function(act, exp, msg) { - new Assertion2(act, msg, assert2.notDeepEqual, true).to.not.eql(exp); - }; - assert2.isAbove = function(val, abv, msg) { - new Assertion2(val, msg, assert2.isAbove, true).to.be.above(abv); - }; - assert2.isAtLeast = function(val, atlst, msg) { - new Assertion2(val, msg, assert2.isAtLeast, true).to.be.least(atlst); - }; - assert2.isBelow = function(val, blw, msg) { - new Assertion2(val, msg, assert2.isBelow, true).to.be.below(blw); - }; - assert2.isAtMost = function(val, atmst, msg) { - new Assertion2(val, msg, assert2.isAtMost, true).to.be.most(atmst); - }; - assert2.isTrue = function(val, msg) { - new Assertion2(val, msg, assert2.isTrue, true).is["true"]; - }; - assert2.isNotTrue = function(val, msg) { - new Assertion2(val, msg, assert2.isNotTrue, true).to.not.equal(true); - }; - assert2.isFalse = function(val, msg) { - new Assertion2(val, msg, assert2.isFalse, true).is["false"]; - }; - assert2.isNotFalse = function(val, msg) { - new Assertion2(val, msg, assert2.isNotFalse, true).to.not.equal(false); - }; - assert2.isNull = function(val, msg) { - new Assertion2(val, msg, assert2.isNull, true).to.equal(null); - }; - assert2.isNotNull = function(val, msg) { - new Assertion2(val, msg, assert2.isNotNull, true).to.not.equal(null); - }; - assert2.isNaN = function(val, msg) { - new Assertion2(val, msg, assert2.isNaN, true).to.be.NaN; - }; - assert2.isNotNaN = function(val, msg) { - new Assertion2(val, msg, assert2.isNotNaN, true).not.to.be.NaN; - }; - assert2.exists = function(val, msg) { - new Assertion2(val, msg, assert2.exists, true).to.exist; - }; - assert2.notExists = function(val, msg) { - new Assertion2(val, msg, assert2.notExists, true).to.not.exist; - }; - assert2.isUndefined = function(val, msg) { - new Assertion2(val, msg, assert2.isUndefined, true).to.equal(void 0); - }; - assert2.isDefined = function(val, msg) { - new Assertion2(val, msg, assert2.isDefined, true).to.not.equal(void 0); - }; - assert2.isFunction = function(val, msg) { - new Assertion2(val, msg, assert2.isFunction, true).to.be.a("function"); - }; - assert2.isNotFunction = function(val, msg) { - new Assertion2(val, msg, assert2.isNotFunction, true).to.not.be.a("function"); - }; - assert2.isObject = function(val, msg) { - new Assertion2(val, msg, assert2.isObject, true).to.be.a("object"); - }; - assert2.isNotObject = function(val, msg) { - new Assertion2(val, msg, assert2.isNotObject, true).to.not.be.a("object"); - }; - assert2.isArray = function(val, msg) { - new Assertion2(val, msg, assert2.isArray, true).to.be.an("array"); - }; - assert2.isNotArray = function(val, msg) { - new Assertion2(val, msg, assert2.isNotArray, true).to.not.be.an("array"); - }; - assert2.isString = function(val, msg) { - new Assertion2(val, msg, assert2.isString, true).to.be.a("string"); - }; - assert2.isNotString = function(val, msg) { - new Assertion2(val, msg, assert2.isNotString, true).to.not.be.a("string"); - }; - assert2.isNumber = function(val, msg) { - new Assertion2(val, msg, assert2.isNumber, true).to.be.a("number"); - }; - assert2.isNotNumber = function(val, msg) { - new Assertion2(val, msg, assert2.isNotNumber, true).to.not.be.a("number"); - }; - assert2.isFinite = function(val, msg) { - new Assertion2(val, msg, assert2.isFinite, true).to.be.finite; - }; - assert2.isBoolean = function(val, msg) { - new Assertion2(val, msg, assert2.isBoolean, true).to.be.a("boolean"); - }; - assert2.isNotBoolean = function(val, msg) { - new Assertion2(val, msg, assert2.isNotBoolean, true).to.not.be.a("boolean"); - }; - assert2.typeOf = function(val, type, msg) { - new Assertion2(val, msg, assert2.typeOf, true).to.be.a(type); - }; - assert2.notTypeOf = function(val, type, msg) { - new Assertion2(val, msg, assert2.notTypeOf, true).to.not.be.a(type); - }; - assert2.instanceOf = function(val, type, msg) { - new Assertion2(val, msg, assert2.instanceOf, true).to.be.instanceOf(type); - }; - assert2.notInstanceOf = function(val, type, msg) { - new Assertion2(val, msg, assert2.notInstanceOf, true).to.not.be.instanceOf(type); - }; - assert2.include = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.include, true).include(inc); - }; - assert2.notInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.notInclude, true).not.include(inc); - }; - assert2.deepInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.deepInclude, true).deep.include(inc); - }; - assert2.notDeepInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.notDeepInclude, true).not.deep.include(inc); - }; - assert2.nestedInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.nestedInclude, true).nested.include(inc); - }; - assert2.notNestedInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.notNestedInclude, true).not.nested.include(inc); - }; - assert2.deepNestedInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.deepNestedInclude, true).deep.nested.include(inc); - }; - assert2.notDeepNestedInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.notDeepNestedInclude, true).not.deep.nested.include(inc); - }; - assert2.ownInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.ownInclude, true).own.include(inc); - }; - assert2.notOwnInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.notOwnInclude, true).not.own.include(inc); - }; - assert2.deepOwnInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.deepOwnInclude, true).deep.own.include(inc); - }; - assert2.notDeepOwnInclude = function(exp, inc, msg) { - new Assertion2(exp, msg, assert2.notDeepOwnInclude, true).not.deep.own.include(inc); - }; - assert2.match = function(exp, re, msg) { - new Assertion2(exp, msg, assert2.match, true).to.match(re); - }; - assert2.notMatch = function(exp, re, msg) { - new Assertion2(exp, msg, assert2.notMatch, true).to.not.match(re); - }; - assert2.property = function(obj, prop, msg) { - new Assertion2(obj, msg, assert2.property, true).to.have.property(prop); - }; - assert2.notProperty = function(obj, prop, msg) { - new Assertion2(obj, msg, assert2.notProperty, true).to.not.have.property(prop); - }; - assert2.propertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.propertyVal, true).to.have.property(prop, val); - }; - assert2.notPropertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.notPropertyVal, true).to.not.have.property(prop, val); - }; - assert2.deepPropertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.deepPropertyVal, true).to.have.deep.property(prop, val); - }; - assert2.notDeepPropertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.notDeepPropertyVal, true).to.not.have.deep.property(prop, val); - }; - assert2.ownProperty = function(obj, prop, msg) { - new Assertion2(obj, msg, assert2.ownProperty, true).to.have.own.property(prop); - }; - assert2.notOwnProperty = function(obj, prop, msg) { - new Assertion2(obj, msg, assert2.notOwnProperty, true).to.not.have.own.property(prop); - }; - assert2.ownPropertyVal = function(obj, prop, value, msg) { - new Assertion2(obj, msg, assert2.ownPropertyVal, true).to.have.own.property(prop, value); - }; - assert2.notOwnPropertyVal = function(obj, prop, value, msg) { - new Assertion2(obj, msg, assert2.notOwnPropertyVal, true).to.not.have.own.property(prop, value); - }; - assert2.deepOwnPropertyVal = function(obj, prop, value, msg) { - new Assertion2(obj, msg, assert2.deepOwnPropertyVal, true).to.have.deep.own.property(prop, value); - }; - assert2.notDeepOwnPropertyVal = function(obj, prop, value, msg) { - new Assertion2(obj, msg, assert2.notDeepOwnPropertyVal, true).to.not.have.deep.own.property(prop, value); - }; - assert2.nestedProperty = function(obj, prop, msg) { - new Assertion2(obj, msg, assert2.nestedProperty, true).to.have.nested.property(prop); - }; - assert2.notNestedProperty = function(obj, prop, msg) { - new Assertion2(obj, msg, assert2.notNestedProperty, true).to.not.have.nested.property(prop); - }; - assert2.nestedPropertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.nestedPropertyVal, true).to.have.nested.property(prop, val); - }; - assert2.notNestedPropertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.notNestedPropertyVal, true).to.not.have.nested.property(prop, val); - }; - assert2.deepNestedPropertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.deepNestedPropertyVal, true).to.have.deep.nested.property(prop, val); - }; - assert2.notDeepNestedPropertyVal = function(obj, prop, val, msg) { - new Assertion2(obj, msg, assert2.notDeepNestedPropertyVal, true).to.not.have.deep.nested.property(prop, val); - }; - assert2.lengthOf = function(exp, len, msg) { - new Assertion2(exp, msg, assert2.lengthOf, true).to.have.lengthOf(len); - }; - assert2.hasAnyKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.hasAnyKeys, true).to.have.any.keys(keys); - }; - assert2.hasAllKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.hasAllKeys, true).to.have.all.keys(keys); - }; - assert2.containsAllKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.containsAllKeys, true).to.contain.all.keys(keys); - }; - assert2.doesNotHaveAnyKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.doesNotHaveAnyKeys, true).to.not.have.any.keys(keys); - }; - assert2.doesNotHaveAllKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.doesNotHaveAllKeys, true).to.not.have.all.keys(keys); - }; - assert2.hasAnyDeepKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.hasAnyDeepKeys, true).to.have.any.deep.keys(keys); - }; - assert2.hasAllDeepKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.hasAllDeepKeys, true).to.have.all.deep.keys(keys); - }; - assert2.containsAllDeepKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.containsAllDeepKeys, true).to.contain.all.deep.keys(keys); - }; - assert2.doesNotHaveAnyDeepKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.doesNotHaveAnyDeepKeys, true).to.not.have.any.deep.keys(keys); - }; - assert2.doesNotHaveAllDeepKeys = function(obj, keys, msg) { - new Assertion2(obj, msg, assert2.doesNotHaveAllDeepKeys, true).to.not.have.all.deep.keys(keys); - }; - assert2.throws = function(fn, errorLike, errMsgMatcher, msg) { - if ("string" === typeof errorLike || errorLike instanceof RegExp) { - errMsgMatcher = errorLike; - errorLike = null; - } - var assertErr = new Assertion2(fn, msg, assert2.throws, true).to.throw(errorLike, errMsgMatcher); - return flag(assertErr, "object"); - }; - assert2.doesNotThrow = function(fn, errorLike, errMsgMatcher, msg) { - if ("string" === typeof errorLike || errorLike instanceof RegExp) { - errMsgMatcher = errorLike; - errorLike = null; - } - new Assertion2(fn, msg, assert2.doesNotThrow, true).to.not.throw(errorLike, errMsgMatcher); - }; - assert2.operator = function(val, operator, val2, msg) { - var ok; - switch (operator) { - case "==": - ok = val == val2; - break; - case "===": - ok = val === val2; - break; - case ">": - ok = val > val2; - break; - case ">=": - ok = val >= val2; - break; - case "<": - ok = val < val2; - break; - case "<=": - ok = val <= val2; - break; - case "!=": - ok = val != val2; - break; - case "!==": - ok = val !== val2; - break; - default: - msg = msg ? msg + ": " : msg; - throw new chai2.AssertionError( - msg + 'Invalid operator "' + operator + '"', - void 0, - assert2.operator - ); - } - var test = new Assertion2(ok, msg, assert2.operator, true); - test.assert( - true === flag(test, "object"), - "expected " + util2.inspect(val) + " to be " + operator + " " + util2.inspect(val2), - "expected " + util2.inspect(val) + " to not be " + operator + " " + util2.inspect(val2) - ); - }; - assert2.closeTo = function(act, exp, delta, msg) { - new Assertion2(act, msg, assert2.closeTo, true).to.be.closeTo(exp, delta); - }; - assert2.approximately = function(act, exp, delta, msg) { - new Assertion2(act, msg, assert2.approximately, true).to.be.approximately(exp, delta); - }; - assert2.sameMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.sameMembers, true).to.have.same.members(set2); - }; - assert2.notSameMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.notSameMembers, true).to.not.have.same.members(set2); - }; - assert2.sameDeepMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.sameDeepMembers, true).to.have.same.deep.members(set2); - }; - assert2.notSameDeepMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.notSameDeepMembers, true).to.not.have.same.deep.members(set2); - }; - assert2.sameOrderedMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.sameOrderedMembers, true).to.have.same.ordered.members(set2); - }; - assert2.notSameOrderedMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.notSameOrderedMembers, true).to.not.have.same.ordered.members(set2); - }; - assert2.sameDeepOrderedMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.sameDeepOrderedMembers, true).to.have.same.deep.ordered.members(set2); - }; - assert2.notSameDeepOrderedMembers = function(set1, set2, msg) { - new Assertion2(set1, msg, assert2.notSameDeepOrderedMembers, true).to.not.have.same.deep.ordered.members(set2); - }; - assert2.includeMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.includeMembers, true).to.include.members(subset); - }; - assert2.notIncludeMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.notIncludeMembers, true).to.not.include.members(subset); - }; - assert2.includeDeepMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.includeDeepMembers, true).to.include.deep.members(subset); - }; - assert2.notIncludeDeepMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.notIncludeDeepMembers, true).to.not.include.deep.members(subset); - }; - assert2.includeOrderedMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.includeOrderedMembers, true).to.include.ordered.members(subset); - }; - assert2.notIncludeOrderedMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.notIncludeOrderedMembers, true).to.not.include.ordered.members(subset); - }; - assert2.includeDeepOrderedMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.includeDeepOrderedMembers, true).to.include.deep.ordered.members(subset); - }; - assert2.notIncludeDeepOrderedMembers = function(superset, subset, msg) { - new Assertion2(superset, msg, assert2.notIncludeDeepOrderedMembers, true).to.not.include.deep.ordered.members(subset); - }; - assert2.oneOf = function(inList, list, msg) { - new Assertion2(inList, msg, assert2.oneOf, true).to.be.oneOf(list); - }; - assert2.changes = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - new Assertion2(fn, msg, assert2.changes, true).to.change(obj, prop); - }; - assert2.changesBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - var tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion2(fn, msg, assert2.changesBy, true).to.change(obj, prop).by(delta); - }; - assert2.doesNotChange = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion2(fn, msg, assert2.doesNotChange, true).to.not.change(obj, prop); - }; - assert2.changesButNotBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - var tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion2(fn, msg, assert2.changesButNotBy, true).to.change(obj, prop).but.not.by(delta); - }; - assert2.increases = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion2(fn, msg, assert2.increases, true).to.increase(obj, prop); - }; - assert2.increasesBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - var tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion2(fn, msg, assert2.increasesBy, true).to.increase(obj, prop).by(delta); - }; - assert2.doesNotIncrease = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion2(fn, msg, assert2.doesNotIncrease, true).to.not.increase(obj, prop); - }; - assert2.increasesButNotBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - var tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion2(fn, msg, assert2.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta); - }; - assert2.decreases = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion2(fn, msg, assert2.decreases, true).to.decrease(obj, prop); - }; - assert2.decreasesBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - var tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion2(fn, msg, assert2.decreasesBy, true).to.decrease(obj, prop).by(delta); - }; - assert2.doesNotDecrease = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion2(fn, msg, assert2.doesNotDecrease, true).to.not.decrease(obj, prop); - }; - assert2.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - var tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - return new Assertion2(fn, msg, assert2.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta); - }; - assert2.decreasesButNotBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - var tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion2(fn, msg, assert2.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta); - }; - assert2.ifError = function(val) { - if (val) { - throw val; - } - }; - assert2.isExtensible = function(obj, msg) { - new Assertion2(obj, msg, assert2.isExtensible, true).to.be.extensible; - }; - assert2.isNotExtensible = function(obj, msg) { - new Assertion2(obj, msg, assert2.isNotExtensible, true).to.not.be.extensible; - }; - assert2.isSealed = function(obj, msg) { - new Assertion2(obj, msg, assert2.isSealed, true).to.be.sealed; - }; - assert2.isNotSealed = function(obj, msg) { - new Assertion2(obj, msg, assert2.isNotSealed, true).to.not.be.sealed; - }; - assert2.isFrozen = function(obj, msg) { - new Assertion2(obj, msg, assert2.isFrozen, true).to.be.frozen; - }; - assert2.isNotFrozen = function(obj, msg) { - new Assertion2(obj, msg, assert2.isNotFrozen, true).to.not.be.frozen; - }; - assert2.isEmpty = function(val, msg) { - new Assertion2(val, msg, assert2.isEmpty, true).to.be.empty; - }; - assert2.isNotEmpty = function(val, msg) { - new Assertion2(val, msg, assert2.isNotEmpty, true).to.not.be.empty; - }; - (function alias(name, as) { - assert2[as] = assert2[name]; - return alias; - })("isOk", "ok")("isNotOk", "notOk")("throws", "throw")("throws", "Throw")("isExtensible", "extensible")("isNotExtensible", "notExtensible")("isSealed", "sealed")("isNotSealed", "notSealed")("isFrozen", "frozen")("isNotFrozen", "notFrozen")("isEmpty", "empty")("isNotEmpty", "notEmpty"); - }; - } -}); - -// ../../node_modules/chai/lib/chai.js -var require_chai = __commonJS({ - "../../node_modules/chai/lib/chai.js"(exports) { - var used = []; - exports.version = "4.3.8"; - exports.AssertionError = require_assertion_error(); - var util2 = require_utils(); - exports.use = function(fn) { - if (!~used.indexOf(fn)) { - fn(exports, util2); - used.push(fn); - } - return exports; - }; - exports.util = util2; - var config2 = require_config(); - exports.config = config2; - var assertion = require_assertion(); - exports.use(assertion); - var core2 = require_assertions(); - exports.use(core2); - var expect2 = require_expect(); - exports.use(expect2); - var should2 = require_should(); - exports.use(should2); - var assert2 = require_assert(); - exports.use(assert2); - } -}); - -// ../../node_modules/chai/index.js -var require_chai2 = __commonJS({ - "../../node_modules/chai/index.js"(exports, module) { - module.exports = require_chai(); - } -}); - -// ../../node_modules/chai/index.mjs -var import_index = __toESM(require_chai2(), 1); -var expect = import_index.default.expect; -var version = import_index.default.version; -var Assertion = import_index.default.Assertion; -var AssertionError = import_index.default.AssertionError; -var util = import_index.default.util; -var config = import_index.default.config; -var use = import_index.default.use; -var should = import_index.default.should; -var assert = import_index.default.assert; -var core = import_index.default.core; -var chai_default = import_index.default; -export { - Assertion, - AssertionError, - assert, - config, - core, - chai_default as default, - expect, - should, - use, - util, - version -}; -/*! Bundled license information: - -assertion-error/index.js: - (*! - * assertion-error - * Copyright(c) 2013 Jake Luer - * MIT Licensed - *) - (*! - * Return a function that will copy properties from - * one object to another excluding any originally - * listed. Returned function will create a new `{}`. - * - * @param {String} excluded properties ... - * @return {Function} - *) - (*! - * Primary Exports - *) - (*! - * Inherit from Error.prototype - *) - (*! - * Statically set name - *) - (*! - * Ensure correct constructor - *) - -chai/lib/chai/utils/flag.js: - (*! - * Chai - flag utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/test.js: - (*! - * Chai - test utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - (*! - * Module dependencies - *) - -chai/lib/chai/utils/expectTypes.js: - (*! - * Chai - expectTypes utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/getActual.js: - (*! - * Chai - getActual utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/objDisplay.js: - (*! - * Chai - flag utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - (*! - * Module dependencies - *) - -chai/lib/chai/utils/getMessage.js: - (*! - * Chai - message composition utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - (*! - * Module dependencies - *) - -chai/lib/chai/utils/transferFlags.js: - (*! - * Chai - transferFlags utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -deep-eql/index.js: - (*! - * deep-eql - * Copyright(c) 2013 Jake Luer - * MIT Licensed - *) - (*! - * Check to see if the MemoizeMap has recorded a result of the two operands - * - * @param {Mixed} leftHandOperand - * @param {Mixed} rightHandOperand - * @param {MemoizeMap} memoizeMap - * @returns {Boolean|null} result - *) - (*! - * Set the result of the equality into the MemoizeMap - * - * @param {Mixed} leftHandOperand - * @param {Mixed} rightHandOperand - * @param {MemoizeMap} memoizeMap - * @param {Boolean} result - *) - (*! - * Primary Export - *) - (*! - * The main logic of the `deepEqual` function. - * - * @param {Mixed} leftHandOperand - * @param {Mixed} rightHandOperand - * @param {Object} [options] (optional) Additional options - * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality. - * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of - complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular - references to blow the stack. - * @return {Boolean} equal match - *) - (*! - * Compare two Regular Expressions for equality. - * - * @param {RegExp} leftHandOperand - * @param {RegExp} rightHandOperand - * @return {Boolean} result - *) - (*! - * Compare two Sets/Maps for equality. Faster than other equality functions. - * - * @param {Set} leftHandOperand - * @param {Set} rightHandOperand - * @param {Object} [options] (Optional) - * @return {Boolean} result - *) - (*! - * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers. - * - * @param {Iterable} leftHandOperand - * @param {Iterable} rightHandOperand - * @param {Object} [options] (Optional) - * @return {Boolean} result - *) - (*! - * Simple equality for generator objects such as those returned by generator functions. - * - * @param {Iterable} leftHandOperand - * @param {Iterable} rightHandOperand - * @param {Object} [options] (Optional) - * @return {Boolean} result - *) - (*! - * Determine if the given object has an @@iterator function. - * - * @param {Object} target - * @return {Boolean} `true` if the object has an @@iterator function. - *) - (*! - * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array. - * This will consume the iterator - which could have side effects depending on the @@iterator implementation. - * - * @param {Object} target - * @returns {Array} an array of entries from the @@iterator function - *) - (*! - * Gets all entries from a Generator. This will consume the generator - which could have side effects. - * - * @param {Generator} target - * @returns {Array} an array of entries from the Generator. - *) - (*! - * Gets all own and inherited enumerable keys from a target. - * - * @param {Object} target - * @returns {Array} an array of own and inherited enumerable keys from the target. - *) - (*! - * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of - * each key. If any value of the given key is not equal, the function will return false (early). - * - * @param {Mixed} leftHandOperand - * @param {Mixed} rightHandOperand - * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against - * @param {Object} [options] (Optional) - * @return {Boolean} result - *) - (*! - * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual` - * for each enumerable key in the object. - * - * @param {Mixed} leftHandOperand - * @param {Mixed} rightHandOperand - * @param {Object} [options] (Optional) - * @return {Boolean} result - *) - (*! - * Returns true if the argument is a primitive. - * - * This intentionally returns true for all objects that can be compared by reference, - * including functions and symbols. - * - * @param {Mixed} value - * @return {Boolean} result - *) - -chai/lib/chai/utils/isProxyEnabled.js: - (*! - * Chai - isProxyEnabled helper - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/addProperty.js: - (*! - * Chai - addProperty utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/addLengthGuard.js: - (*! - * Chai - addLengthGuard utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/getProperties.js: - (*! - * Chai - getProperties utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/proxify.js: - (*! - * Chai - proxify utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/addMethod.js: - (*! - * Chai - addMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/overwriteProperty.js: - (*! - * Chai - overwriteProperty utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/overwriteMethod.js: - (*! - * Chai - overwriteMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/addChainableMethod.js: - (*! - * Chai - addChainingMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - (*! - * Module dependencies - *) - (*! - * Module variables - *) - -chai/lib/chai/utils/overwriteChainableMethod.js: - (*! - * Chai - overwriteChainableMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/compareByInspect.js: - (*! - * Chai - compareByInspect utility - * Copyright(c) 2011-2016 Jake Luer - * MIT Licensed - *) - (*! - * Module dependencies - *) - -chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js: - (*! - * Chai - getOwnEnumerablePropertySymbols utility - * Copyright(c) 2011-2016 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/utils/getOwnEnumerableProperties.js: - (*! - * Chai - getOwnEnumerableProperties utility - * Copyright(c) 2011-2016 Jake Luer - * MIT Licensed - *) - (*! - * Module dependencies - *) - -chai/lib/chai/utils/isNaN.js: - (*! - * Chai - isNaN utility - * Copyright(c) 2012-2015 Sakthipriyan Vairamani - * MIT Licensed - *) - -chai/lib/chai/utils/index.js: - (*! - * chai - * Copyright(c) 2011 Jake Luer - * MIT Licensed - *) - (*! - * Dependencies that are used for multiple exports are required here only once - *) - (*! - * test utility - *) - (*! - * type utility - *) - (*! - * expectTypes utility - *) - (*! - * message utility - *) - (*! - * actual utility - *) - (*! - * Inspect util - *) - (*! - * Object Display util - *) - (*! - * Flag utility - *) - (*! - * Flag transferring utility - *) - (*! - * Deep equal utility - *) - (*! - * Deep path info - *) - (*! - * Check if a property exists - *) - (*! - * Function name - *) - (*! - * add Property - *) - (*! - * add Method - *) - (*! - * overwrite Property - *) - (*! - * overwrite Method - *) - (*! - * Add a chainable method - *) - (*! - * Overwrite chainable method - *) - (*! - * Compare by inspect method - *) - (*! - * Get own enumerable property symbols method - *) - (*! - * Get own enumerable properties method - *) - (*! - * Checks error against a given set of criteria - *) - (*! - * Proxify util - *) - (*! - * addLengthGuard util - *) - (*! - * isProxyEnabled helper - *) - (*! - * isNaN method - *) - (*! - * getOperator method - *) - -chai/lib/chai/assertion.js: - (*! - * chai - * http://chaijs.com - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - *) - (*! - * Module dependencies. - *) - (*! - * Module export. - *) - (*! - * Assertion Constructor - * - * Creates object for chaining. - * - * `Assertion` objects contain metadata in the form of flags. Three flags can - * be assigned during instantiation by passing arguments to this constructor: - * - * - `object`: This flag contains the target of the assertion. For example, in - * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will - * contain `numKittens` so that the `equal` assertion can reference it when - * needed. - * - * - `message`: This flag contains an optional custom error message to be - * prepended to the error message that's generated by the assertion when it - * fails. - * - * - `ssfi`: This flag stands for "start stack function indicator". It - * contains a function reference that serves as the starting point for - * removing frames from the stack trace of the error that's created by the - * assertion when it fails. The goal is to provide a cleaner stack trace to - * end users by removing Chai's internal functions. Note that it only works - * in environments that support `Error.captureStackTrace`, and only when - * `Chai.config.includeStack` hasn't been set to `false`. - * - * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag - * should retain its current value, even as assertions are chained off of - * this object. This is usually set to `true` when creating a new assertion - * from within another assertion. It's also temporarily set to `true` before - * an overwritten assertion gets called by the overwriting assertion. - * - * - `eql`: This flag contains the deepEqual function to be used by the assertion. - * - * @param {Mixed} obj target of the assertion - * @param {String} msg (optional) custom error message - * @param {Function} ssfi (optional) starting point for removing stack frames - * @param {Boolean} lockSsfi (optional) whether or not the ssfi flag is locked - * @api private - *) - (*! - * ### ._obj - * - * Quick reference to stored `actual` value for plugin developers. - * - * @api private - *) - -chai/lib/chai/core/assertions.js: - (*! - * chai - * http://chaijs.com - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/interface/expect.js: - (*! - * chai - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/interface/should.js: - (*! - * chai - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - *) - -chai/lib/chai/interface/assert.js: - (*! - * chai - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - *) - (*! - * Chai dependencies. - *) - (*! - * Module export. - *) - (*! - * ### .ifError(object) - * - * Asserts if value is not a false value, and throws if it is a true value. - * This is added to allow for chai to be a drop-in replacement for Node's - * assert class. - * - * var err = new Error('I am a custom error'); - * assert.ifError(err); // Rethrows err! - * - * @name ifError - * @param {Object} object - * @namespace Assert - * @api public - *) - (*! - * Aliases. - *) - -chai/lib/chai.js: - (*! - * chai - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - *) - (*! - * Chai version - *) - (*! - * Assertion Error - *) - (*! - * Utils for plugins (not exported) - *) - (*! - * Utility Functions - *) - (*! - * Configuration - *) - (*! - * Primary `Assertion` prototype - *) - (*! - * Core Assertions - *) - (*! - * Expect interface - *) - (*! - * Should interface - *) - (*! - * Assert interface - *) -*/ -//# sourceMappingURL=vitest___chai.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___chai.js.map b/packages/ridb/node_modules/.vite/deps/vitest___chai.js.map deleted file mode 100644 index e85808d..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___chai.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/assertion-error/index.js", "../../../../../node_modules/pathval/index.js", "../../../../../node_modules/chai/lib/chai/utils/flag.js", "../../../../../node_modules/chai/lib/chai/utils/test.js", "../../../../../node_modules/type-detect/type-detect.js", "../../../../../node_modules/chai/lib/chai/utils/expectTypes.js", "../../../../../node_modules/chai/lib/chai/utils/getActual.js", "../../../../../node_modules/get-func-name/index.js", "vite:cjs-external-facade:loupe", "../../../../../node_modules/chai/lib/chai/config.js", "../../../../../node_modules/chai/lib/chai/utils/inspect.js", "../../../../../node_modules/chai/lib/chai/utils/objDisplay.js", "../../../../../node_modules/chai/lib/chai/utils/getMessage.js", "../../../../../node_modules/chai/lib/chai/utils/transferFlags.js", "../../../../../node_modules/deep-eql/index.js", "../../../../../node_modules/chai/lib/chai/utils/isProxyEnabled.js", "../../../../../node_modules/chai/lib/chai/utils/addProperty.js", "../../../../../node_modules/chai/lib/chai/utils/addLengthGuard.js", "../../../../../node_modules/chai/lib/chai/utils/getProperties.js", "../../../../../node_modules/chai/lib/chai/utils/proxify.js", "../../../../../node_modules/chai/lib/chai/utils/addMethod.js", "../../../../../node_modules/chai/lib/chai/utils/overwriteProperty.js", "../../../../../node_modules/chai/lib/chai/utils/overwriteMethod.js", "../../../../../node_modules/chai/lib/chai/utils/addChainableMethod.js", "../../../../../node_modules/chai/lib/chai/utils/overwriteChainableMethod.js", "../../../../../node_modules/chai/lib/chai/utils/compareByInspect.js", "../../../../../node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js", "../../../../../node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js", "../../../../../node_modules/check-error/index.js", "../../../../../node_modules/chai/lib/chai/utils/isNaN.js", "../../../../../node_modules/chai/lib/chai/utils/getOperator.js", "../../../../../node_modules/chai/lib/chai/utils/index.js", "../../../../../node_modules/chai/lib/chai/assertion.js", "../../../../../node_modules/chai/lib/chai/core/assertions.js", "../../../../../node_modules/chai/lib/chai/interface/expect.js", "../../../../../node_modules/chai/lib/chai/interface/should.js", "../../../../../node_modules/chai/lib/chai/interface/assert.js", "../../../../../node_modules/chai/lib/chai.js", "../../../../../node_modules/chai/index.js", "../../../../../node_modules/chai/index.mjs"], - "sourcesContent": ["/*!\n * assertion-error\n * Copyright(c) 2013 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Return a function that will copy properties from\n * one object to another excluding any originally\n * listed. Returned function will create a new `{}`.\n *\n * @param {String} excluded properties ...\n * @return {Function}\n */\n\nfunction exclude () {\n var excludes = [].slice.call(arguments);\n\n function excludeProps (res, obj) {\n Object.keys(obj).forEach(function (key) {\n if (!~excludes.indexOf(key)) res[key] = obj[key];\n });\n }\n\n return function extendExclude () {\n var args = [].slice.call(arguments)\n , i = 0\n , res = {};\n\n for (; i < args.length; i++) {\n excludeProps(res, args[i]);\n }\n\n return res;\n };\n};\n\n/*!\n * Primary Exports\n */\n\nmodule.exports = AssertionError;\n\n/**\n * ### AssertionError\n *\n * An extension of the JavaScript `Error` constructor for\n * assertion and validation scenarios.\n *\n * @param {String} message\n * @param {Object} properties to include (optional)\n * @param {callee} start stack function (optional)\n */\n\nfunction AssertionError (message, _props, ssf) {\n var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON')\n , props = extend(_props || {});\n\n // default values\n this.message = message || 'Unspecified AssertionError';\n this.showDiff = false;\n\n // copy from properties\n for (var key in props) {\n this[key] = props[key];\n }\n\n // capture stack trace\n ssf = ssf || AssertionError;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ssf);\n } else {\n try {\n throw new Error();\n } catch(e) {\n this.stack = e.stack;\n }\n }\n}\n\n/*!\n * Inherit from Error.prototype\n */\n\nAssertionError.prototype = Object.create(Error.prototype);\n\n/*!\n * Statically set name\n */\n\nAssertionError.prototype.name = 'AssertionError';\n\n/*!\n * Ensure correct constructor\n */\n\nAssertionError.prototype.constructor = AssertionError;\n\n/**\n * Allow errors to be converted to JSON for static transfer.\n *\n * @param {Boolean} include stack (default: `true`)\n * @return {Object} object that can be `JSON.stringify`\n */\n\nAssertionError.prototype.toJSON = function (stack) {\n var extend = exclude('constructor', 'toJSON', 'stack')\n , props = extend({ name: this.name }, this);\n\n // include stack if exists and not turned off\n if (false !== stack && this.stack) {\n props.stack = this.stack;\n }\n\n return props;\n};\n", "'use strict';\n\n/* !\n * Chai - pathval utility\n * Copyright(c) 2012-2014 Jake Luer \n * @see https://github.com/logicalparadox/filtr\n * MIT Licensed\n */\n\n/**\n * ### .hasProperty(object, name)\n *\n * This allows checking whether an object has own\n * or inherited from prototype chain named property.\n *\n * Basically does the same thing as the `in`\n * operator but works properly with null/undefined values\n * and other primitives.\n *\n * var obj = {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n *\n * The following would be the results.\n *\n * hasProperty(obj, 'str'); // true\n * hasProperty(obj, 'constructor'); // true\n * hasProperty(obj, 'bar'); // false\n *\n * hasProperty(obj.str, 'length'); // true\n * hasProperty(obj.str, 1); // true\n * hasProperty(obj.str, 5); // false\n *\n * hasProperty(obj.arr, 'length'); // true\n * hasProperty(obj.arr, 2); // true\n * hasProperty(obj.arr, 3); // false\n *\n * @param {Object} object\n * @param {String|Symbol} name\n * @returns {Boolean} whether it exists\n * @namespace Utils\n * @name hasProperty\n * @api public\n */\n\nfunction hasProperty(obj, name) {\n if (typeof obj === 'undefined' || obj === null) {\n return false;\n }\n\n // The `in` operator does not work with primitives.\n return name in Object(obj);\n}\n\n/* !\n * ## parsePath(path)\n *\n * Helper function used to parse string object\n * paths. Use in conjunction with `internalGetPathValue`.\n *\n * var parsed = parsePath('myobject.property.subprop');\n *\n * ### Paths:\n *\n * * Can be infinitely deep and nested.\n * * Arrays are also valid using the formal `myobject.document[3].property`.\n * * Literal dots and brackets (not delimiter) must be backslash-escaped.\n *\n * @param {String} path\n * @returns {Object} parsed\n * @api private\n */\n\nfunction parsePath(path) {\n var str = path.replace(/([^\\\\])\\[/g, '$1.[');\n var parts = str.match(/(\\\\\\.|[^.]+?)+/g);\n return parts.map(function mapMatches(value) {\n if (\n value === 'constructor' ||\n value === '__proto__' ||\n value === 'prototype'\n ) {\n return {};\n }\n var regexp = /^\\[(\\d+)\\]$/;\n var mArr = regexp.exec(value);\n var parsed = null;\n if (mArr) {\n parsed = { i: parseFloat(mArr[1]) };\n } else {\n parsed = { p: value.replace(/\\\\([.[\\]])/g, '$1') };\n }\n\n return parsed;\n });\n}\n\n/* !\n * ## internalGetPathValue(obj, parsed[, pathDepth])\n *\n * Helper companion function for `.parsePath` that returns\n * the value located at the parsed address.\n *\n * var value = getPathValue(obj, parsed);\n *\n * @param {Object} object to search against\n * @param {Object} parsed definition from `parsePath`.\n * @param {Number} depth (nesting level) of the property we want to retrieve\n * @returns {Object|Undefined} value\n * @api private\n */\n\nfunction internalGetPathValue(obj, parsed, pathDepth) {\n var temporaryValue = obj;\n var res = null;\n pathDepth = typeof pathDepth === 'undefined' ? parsed.length : pathDepth;\n\n for (var i = 0; i < pathDepth; i++) {\n var part = parsed[i];\n if (temporaryValue) {\n if (typeof part.p === 'undefined') {\n temporaryValue = temporaryValue[part.i];\n } else {\n temporaryValue = temporaryValue[part.p];\n }\n\n if (i === pathDepth - 1) {\n res = temporaryValue;\n }\n }\n }\n\n return res;\n}\n\n/* !\n * ## internalSetPathValue(obj, value, parsed)\n *\n * Companion function for `parsePath` that sets\n * the value located at a parsed address.\n *\n * internalSetPathValue(obj, 'value', parsed);\n *\n * @param {Object} object to search and define on\n * @param {*} value to use upon set\n * @param {Object} parsed definition from `parsePath`\n * @api private\n */\n\nfunction internalSetPathValue(obj, val, parsed) {\n var tempObj = obj;\n var pathDepth = parsed.length;\n var part = null;\n // Here we iterate through every part of the path\n for (var i = 0; i < pathDepth; i++) {\n var propName = null;\n var propVal = null;\n part = parsed[i];\n\n // If it's the last part of the path, we set the 'propName' value with the property name\n if (i === pathDepth - 1) {\n propName = typeof part.p === 'undefined' ? part.i : part.p;\n // Now we set the property with the name held by 'propName' on object with the desired val\n tempObj[propName] = val;\n } else if (typeof part.p !== 'undefined' && tempObj[part.p]) {\n tempObj = tempObj[part.p];\n } else if (typeof part.i !== 'undefined' && tempObj[part.i]) {\n tempObj = tempObj[part.i];\n } else {\n // If the obj doesn't have the property we create one with that name to define it\n var next = parsed[i + 1];\n // Here we set the name of the property which will be defined\n propName = typeof part.p === 'undefined' ? part.i : part.p;\n // Here we decide if this property will be an array or a new object\n propVal = typeof next.p === 'undefined' ? [] : {};\n tempObj[propName] = propVal;\n tempObj = tempObj[propName];\n }\n }\n}\n\n/**\n * ### .getPathInfo(object, path)\n *\n * This allows the retrieval of property info in an\n * object given a string path.\n *\n * The path info consists of an object with the\n * following properties:\n *\n * * parent - The parent object of the property referenced by `path`\n * * name - The name of the final property, a number if it was an array indexer\n * * value - The value of the property, if it exists, otherwise `undefined`\n * * exists - Whether the property exists or not\n *\n * @param {Object} object\n * @param {String} path\n * @returns {Object} info\n * @namespace Utils\n * @name getPathInfo\n * @api public\n */\n\nfunction getPathInfo(obj, path) {\n var parsed = parsePath(path);\n var last = parsed[parsed.length - 1];\n var info = {\n parent:\n parsed.length > 1 ?\n internalGetPathValue(obj, parsed, parsed.length - 1) :\n obj,\n name: last.p || last.i,\n value: internalGetPathValue(obj, parsed),\n };\n info.exists = hasProperty(info.parent, info.name);\n\n return info;\n}\n\n/**\n * ### .getPathValue(object, path)\n *\n * This allows the retrieval of values in an\n * object given a string path.\n *\n * var obj = {\n * prop1: {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n * , prop2: {\n * arr: [ { nested: 'Universe' } ]\n * , str: 'Hello again!'\n * }\n * }\n *\n * The following would be the results.\n *\n * getPathValue(obj, 'prop1.str'); // Hello\n * getPathValue(obj, 'prop1.att[2]'); // b\n * getPathValue(obj, 'prop2.arr[0].nested'); // Universe\n *\n * @param {Object} object\n * @param {String} path\n * @returns {Object} value or `undefined`\n * @namespace Utils\n * @name getPathValue\n * @api public\n */\n\nfunction getPathValue(obj, path) {\n var info = getPathInfo(obj, path);\n return info.value;\n}\n\n/**\n * ### .setPathValue(object, path, value)\n *\n * Define the value in an object at a given string path.\n *\n * ```js\n * var obj = {\n * prop1: {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n * , prop2: {\n * arr: [ { nested: 'Universe' } ]\n * , str: 'Hello again!'\n * }\n * };\n * ```\n *\n * The following would be acceptable.\n *\n * ```js\n * var properties = require('tea-properties');\n * properties.set(obj, 'prop1.str', 'Hello Universe!');\n * properties.set(obj, 'prop1.arr[2]', 'B');\n * properties.set(obj, 'prop2.arr[0].nested.value', { hello: 'universe' });\n * ```\n *\n * @param {Object} object\n * @param {String} path\n * @param {Mixed} value\n * @api private\n */\n\nfunction setPathValue(obj, path, val) {\n var parsed = parsePath(path);\n internalSetPathValue(obj, val, parsed);\n return obj;\n}\n\nmodule.exports = {\n hasProperty: hasProperty,\n getPathInfo: getPathInfo,\n getPathValue: getPathValue,\n setPathValue: setPathValue,\n};\n", "/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .flag(object, key, [value])\n *\n * Get or set a flag value on an object. If a\n * value is provided it will be set, else it will\n * return the currently set value or `undefined` if\n * the value is not set.\n *\n * utils.flag(this, 'foo', 'bar'); // setter\n * utils.flag(this, 'foo'); // getter, returns `bar`\n *\n * @param {Object} object constructed Assertion\n * @param {String} key\n * @param {Mixed} value (optional)\n * @namespace Utils\n * @name flag\n * @api private\n */\n\nmodule.exports = function flag(obj, key, value) {\n var flags = obj.__flags || (obj.__flags = Object.create(null));\n if (arguments.length === 3) {\n flags[key] = value;\n } else {\n return flags[key];\n }\n};\n", "/*!\n * Chai - test utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar flag = require('./flag');\n\n/**\n * ### .test(object, expression)\n *\n * Test an object for expression.\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name test\n */\n\nmodule.exports = function test(obj, args) {\n var negate = flag(obj, 'negate')\n , expr = args[0];\n return negate ? !expr : expr;\n};\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.typeDetect = factory());\n})(this, (function () { 'use strict';\n\n var promiseExists = typeof Promise === 'function';\n var globalObject = (function (Obj) {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Obj, 'typeDetectGlobalObject', {\n get: function get() {\n return this;\n },\n configurable: true,\n });\n var global = typeDetectGlobalObject;\n delete Obj.typeDetectGlobalObject;\n return global;\n })(Object.prototype);\n var symbolExists = typeof Symbol !== 'undefined';\n var mapExists = typeof Map !== 'undefined';\n var setExists = typeof Set !== 'undefined';\n var weakMapExists = typeof WeakMap !== 'undefined';\n var weakSetExists = typeof WeakSet !== 'undefined';\n var dataViewExists = typeof DataView !== 'undefined';\n var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\n var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\n var setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\n var mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\n var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\n var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\n var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\n var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\n var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\n var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\n var toStringLeftSliceLength = 8;\n var toStringRightSliceLength = -1;\n function typeDetect(obj) {\n var typeofObj = typeof obj;\n if (typeofObj !== 'object') {\n return typeofObj;\n }\n if (obj === null) {\n return 'null';\n }\n if (obj === globalObject) {\n return 'global';\n }\n if (Array.isArray(obj) &&\n (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) {\n return 'Array';\n }\n if (typeof window === 'object' && window !== null) {\n if (typeof window.location === 'object' && obj === window.location) {\n return 'Location';\n }\n if (typeof window.document === 'object' && obj === window.document) {\n return 'Document';\n }\n if (typeof window.navigator === 'object') {\n if (typeof window.navigator.mimeTypes === 'object' &&\n obj === window.navigator.mimeTypes) {\n return 'MimeTypeArray';\n }\n if (typeof window.navigator.plugins === 'object' &&\n obj === window.navigator.plugins) {\n return 'PluginArray';\n }\n }\n if ((typeof window.HTMLElement === 'function' ||\n typeof window.HTMLElement === 'object') &&\n obj instanceof window.HTMLElement) {\n if (obj.tagName === 'BLOCKQUOTE') {\n return 'HTMLQuoteElement';\n }\n if (obj.tagName === 'TD') {\n return 'HTMLTableDataCellElement';\n }\n if (obj.tagName === 'TH') {\n return 'HTMLTableHeaderCellElement';\n }\n }\n }\n var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n if (typeof stringTag === 'string') {\n return stringTag;\n }\n var objPrototype = Object.getPrototypeOf(obj);\n if (objPrototype === RegExp.prototype) {\n return 'RegExp';\n }\n if (objPrototype === Date.prototype) {\n return 'Date';\n }\n if (promiseExists && objPrototype === Promise.prototype) {\n return 'Promise';\n }\n if (setExists && objPrototype === Set.prototype) {\n return 'Set';\n }\n if (mapExists && objPrototype === Map.prototype) {\n return 'Map';\n }\n if (weakSetExists && objPrototype === WeakSet.prototype) {\n return 'WeakSet';\n }\n if (weakMapExists && objPrototype === WeakMap.prototype) {\n return 'WeakMap';\n }\n if (dataViewExists && objPrototype === DataView.prototype) {\n return 'DataView';\n }\n if (mapExists && objPrototype === mapIteratorPrototype) {\n return 'Map Iterator';\n }\n if (setExists && objPrototype === setIteratorPrototype) {\n return 'Set Iterator';\n }\n if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n return 'Array Iterator';\n }\n if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n return 'String Iterator';\n }\n if (objPrototype === null) {\n return 'Object';\n }\n return Object\n .prototype\n .toString\n .call(obj)\n .slice(toStringLeftSliceLength, toStringRightSliceLength);\n }\n\n return typeDetect;\n\n}));\n", "/*!\n * Chai - expectTypes utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .expectTypes(obj, types)\n *\n * Ensures that the object being tested against is of a valid type.\n *\n * utils.expectTypes(this, ['array', 'object', 'string']);\n *\n * @param {Mixed} obj constructed Assertion\n * @param {Array} type A list of allowed types for this assertion\n * @namespace Utils\n * @name expectTypes\n * @api public\n */\n\nvar AssertionError = require('assertion-error');\nvar flag = require('./flag');\nvar type = require('type-detect');\n\nmodule.exports = function expectTypes(obj, types) {\n var flagMsg = flag(obj, 'message');\n var ssfi = flag(obj, 'ssfi');\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n obj = flag(obj, 'object');\n types = types.map(function (t) { return t.toLowerCase(); });\n types.sort();\n\n // Transforms ['lorem', 'ipsum'] into 'a lorem, or an ipsum'\n var str = types.map(function (t, index) {\n var art = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(t.charAt(0)) ? 'an' : 'a';\n var or = types.length > 1 && index === types.length - 1 ? 'or ' : '';\n return or + art + ' ' + t;\n }).join(', ');\n\n var objType = type(obj).toLowerCase();\n\n if (!types.some(function (expected) { return objType === expected; })) {\n throw new AssertionError(\n flagMsg + 'object tested must be ' + str + ', but ' + objType + ' given',\n undefined,\n ssfi\n );\n }\n};\n", "/*!\n * Chai - getActual utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getActual(object, [actual])\n *\n * Returns the `actual` value for an Assertion.\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getActual\n */\n\nmodule.exports = function getActual(obj, args) {\n return args.length > 4 ? args[4] : obj._obj;\n};\n", "'use strict';\n\n/* !\n * Chai - getFuncName utility\n * Copyright(c) 2012-2016 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getFuncName(constructorFn)\n *\n * Returns the name of a function.\n * When a non-function instance is passed, returns `null`.\n * This also includes a polyfill function if `aFunc.name` is not defined.\n *\n * @name getFuncName\n * @param {Function} funct\n * @namespace Utils\n * @api public\n */\n\nvar toString = Function.prototype.toString;\nvar functionNameMatch = /\\s*function(?:\\s|\\s*\\/\\*[^(?:*\\/)]+\\*\\/\\s*)*([^\\s\\(\\/]+)/;\nvar maxFunctionSourceLength = 512;\nfunction getFuncName(aFunc) {\n if (typeof aFunc !== 'function') {\n return null;\n }\n\n var name = '';\n if (typeof Function.prototype.name === 'undefined' && typeof aFunc.name === 'undefined') {\n // eslint-disable-next-line prefer-reflect\n var functionSource = toString.call(aFunc);\n // To avoid unconstrained resource consumption due to pathalogically large function names,\n // we limit the available return value to be less than 512 characters.\n if (functionSource.indexOf('(') > maxFunctionSourceLength) {\n return name;\n }\n // Here we run a polyfill if Function does not support the `name` property and if aFunc.name is not defined\n var match = functionSource.match(functionNameMatch);\n if (match) {\n name = match[1];\n }\n } else {\n // If we've got a `name` property we just use it\n name = aFunc.name;\n }\n\n return name;\n}\n\nmodule.exports = getFuncName;\n", "import * as m from \"vite-cjs-external-facade:loupe\";module.exports = m;", "module.exports = {\n\n /**\n * ### config.includeStack\n *\n * User configurable property, influences whether stack trace\n * is included in Assertion error message. Default of false\n * suppresses stack trace in the error message.\n *\n * chai.config.includeStack = true; // enable stack on error\n *\n * @param {Boolean}\n * @api public\n */\n\n includeStack: false,\n\n /**\n * ### config.showDiff\n *\n * User configurable property, influences whether or not\n * the `showDiff` flag should be included in the thrown\n * AssertionErrors. `false` will always be `false`; `true`\n * will be true when the assertion has requested a diff\n * be shown.\n *\n * @param {Boolean}\n * @api public\n */\n\n showDiff: true,\n\n /**\n * ### config.truncateThreshold\n *\n * User configurable property, sets length threshold for actual and\n * expected values in assertion errors. If this threshold is exceeded, for\n * example for large data structures, the value is replaced with something\n * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.\n *\n * Set it to zero if you want to disable truncating altogether.\n *\n * This is especially userful when doing assertions on arrays: having this\n * set to a reasonable large value makes the failure messages readily\n * inspectable.\n *\n * chai.config.truncateThreshold = 0; // disable truncating\n *\n * @param {Number}\n * @api public\n */\n\n truncateThreshold: 40,\n\n /**\n * ### config.useProxy\n *\n * User configurable property, defines if chai will use a Proxy to throw\n * an error when a non-existent property is read, which protects users\n * from typos when using property-based assertions.\n *\n * Set it to false if you want to disable this feature.\n *\n * chai.config.useProxy = false; // disable use of Proxy\n *\n * This feature is automatically disabled regardless of this config value\n * in environments that don't support proxies.\n *\n * @param {Boolean}\n * @api public\n */\n\n useProxy: true,\n\n /**\n * ### config.proxyExcludedKeys\n *\n * User configurable property, defines which properties should be ignored\n * instead of throwing an error if they do not exist on the assertion.\n * This is only applied if the environment Chai is running in supports proxies and\n * if the `useProxy` configuration setting is enabled.\n * By default, `then` and `inspect` will not throw an error if they do not exist on the\n * assertion object because the `.inspect` property is read by `util.inspect` (for example, when\n * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking.\n *\n * // By default these keys will not throw an error if they do not exist on the assertion object\n * chai.config.proxyExcludedKeys = ['then', 'inspect'];\n *\n * @param {Array}\n * @api public\n */\n\n proxyExcludedKeys: ['then', 'catch', 'inspect', 'toJSON'],\n\n /**\n * ### config.deepEqual\n *\n * User configurable property, defines which a custom function to use for deepEqual\n * comparisons.\n * By default, the function used is the one from the `deep-eql` package without custom comparator.\n *\n * // use a custom comparator\n * chai.config.deepEqual = (expected, actual) => {\n * return chai.util.eql(expected, actual, {\n * comparator: (expected, actual) => {\n * // for non number comparison, use the default behavior\n * if(typeof expected !== 'number') return null;\n * // allow a difference of 10 between compared numbers\n * return typeof actual === 'number' && Math.abs(actual - expected) < 10\n * }\n * })\n * };\n *\n * @param {Function}\n * @api public\n */\n\n deepEqual: null\n\n};\n", "// This is (almost) directly from Node.js utils\n// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js\n\nvar getName = require('get-func-name');\nvar loupe = require('loupe');\nvar config = require('../config');\n\nmodule.exports = inspect;\n\n/**\n * ### .inspect(obj, [showHidden], [depth], [colors])\n *\n * Echoes the value of a value. Tries to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Boolean} showHidden Flag that shows hidden (not enumerable)\n * properties of objects. Default is false.\n * @param {Number} depth Depth in which to descend in object. Default is 2.\n * @param {Boolean} colors Flag to turn on ANSI escape codes to color the\n * output. Default is false (no coloring).\n * @namespace Utils\n * @name inspect\n */\nfunction inspect(obj, showHidden, depth, colors) {\n var options = {\n colors: colors,\n depth: (typeof depth === 'undefined' ? 2 : depth),\n showHidden: showHidden,\n truncate: config.truncateThreshold ? config.truncateThreshold : Infinity,\n };\n return loupe.inspect(obj, options);\n}\n", "/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar inspect = require('./inspect');\nvar config = require('../config');\n\n/**\n * ### .objDisplay(object)\n *\n * Determines if an object or an array matches\n * criteria to be inspected in-line for error\n * messages or should be truncated.\n *\n * @param {Mixed} javascript object to inspect\n * @returns {string} stringified object\n * @name objDisplay\n * @namespace Utils\n * @api public\n */\n\nmodule.exports = function objDisplay(obj) {\n var str = inspect(obj)\n , type = Object.prototype.toString.call(obj);\n\n if (config.truncateThreshold && str.length >= config.truncateThreshold) {\n if (type === '[object Function]') {\n return !obj.name || obj.name === ''\n ? '[Function]'\n : '[Function: ' + obj.name + ']';\n } else if (type === '[object Array]') {\n return '[ Array(' + obj.length + ') ]';\n } else if (type === '[object Object]') {\n var keys = Object.keys(obj)\n , kstr = keys.length > 2\n ? keys.splice(0, 2).join(', ') + ', ...'\n : keys.join(', ');\n return '{ Object (' + kstr + ') }';\n } else {\n return str;\n }\n } else {\n return str;\n }\n};\n", "/*!\n * Chai - message composition utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar flag = require('./flag')\n , getActual = require('./getActual')\n , objDisplay = require('./objDisplay');\n\n/**\n * ### .getMessage(object, message, negateMessage)\n *\n * Construct the error message based on flags\n * and template tags. Template tags will return\n * a stringified inspection of the object referenced.\n *\n * Message template tags:\n * - `#{this}` current asserted object\n * - `#{act}` actual value\n * - `#{exp}` expected value\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getMessage\n * @api public\n */\n\nmodule.exports = function getMessage(obj, args) {\n var negate = flag(obj, 'negate')\n , val = flag(obj, 'object')\n , expected = args[3]\n , actual = getActual(obj, args)\n , msg = negate ? args[2] : args[1]\n , flagMsg = flag(obj, 'message');\n\n if(typeof msg === \"function\") msg = msg();\n msg = msg || '';\n msg = msg\n .replace(/#\\{this\\}/g, function () { return objDisplay(val); })\n .replace(/#\\{act\\}/g, function () { return objDisplay(actual); })\n .replace(/#\\{exp\\}/g, function () { return objDisplay(expected); });\n\n return flagMsg ? flagMsg + ': ' + msg : msg;\n};\n", "/*!\n * Chai - transferFlags utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .transferFlags(assertion, object, includeAll = true)\n *\n * Transfer all the flags for `assertion` to `object`. If\n * `includeAll` is set to `false`, then the base Chai\n * assertion flags (namely `object`, `ssfi`, `lockSsfi`,\n * and `message`) will not be transferred.\n *\n *\n * var newAssertion = new Assertion();\n * utils.transferFlags(assertion, newAssertion);\n *\n * var anotherAssertion = new Assertion(myObj);\n * utils.transferFlags(assertion, anotherAssertion, false);\n *\n * @param {Assertion} assertion the assertion to transfer the flags from\n * @param {Object} object the object to transfer the flags to; usually a new assertion\n * @param {Boolean} includeAll\n * @namespace Utils\n * @name transferFlags\n * @api private\n */\n\nmodule.exports = function transferFlags(assertion, object, includeAll) {\n var flags = assertion.__flags || (assertion.__flags = Object.create(null));\n\n if (!object.__flags) {\n object.__flags = Object.create(null);\n }\n\n includeAll = arguments.length === 3 ? includeAll : true;\n\n for (var flag in flags) {\n if (includeAll ||\n (flag !== 'object' && flag !== 'ssfi' && flag !== 'lockSsfi' && flag != 'message')) {\n object.__flags[flag] = flags[flag];\n }\n }\n};\n", "'use strict';\n/* globals Symbol: false, Uint8Array: false, WeakMap: false */\n/*!\n * deep-eql\n * Copyright(c) 2013 Jake Luer \n * MIT Licensed\n */\n\nvar type = require('type-detect');\nfunction FakeMap() {\n this._key = 'chai/deep-eql__' + Math.random() + Date.now();\n}\n\nFakeMap.prototype = {\n get: function get(key) {\n return key[this._key];\n },\n set: function set(key, value) {\n if (Object.isExtensible(key)) {\n Object.defineProperty(key, this._key, {\n value: value,\n configurable: true,\n });\n }\n },\n};\n\nvar MemoizeMap = typeof WeakMap === 'function' ? WeakMap : FakeMap;\n/*!\n * Check to see if the MemoizeMap has recorded a result of the two operands\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @returns {Boolean|null} result\n*/\nfunction memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) {\n // Technically, WeakMap keys can *only* be objects, not primitives.\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return null;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n var result = leftHandMap.get(rightHandOperand);\n if (typeof result === 'boolean') {\n return result;\n }\n }\n return null;\n}\n\n/*!\n * Set the result of the equality into the MemoizeMap\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @param {Boolean} result\n*/\nfunction memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) {\n // Technically, WeakMap keys can *only* be objects, not primitives.\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n leftHandMap.set(rightHandOperand, result);\n } else {\n leftHandMap = new MemoizeMap();\n leftHandMap.set(rightHandOperand, result);\n memoizeMap.set(leftHandOperand, leftHandMap);\n }\n}\n\n/*!\n * Primary Export\n */\n\nmodule.exports = deepEqual;\nmodule.exports.MemoizeMap = MemoizeMap;\n\n/**\n * Assert deeply nested sameValue equality between two objects of any type.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (optional) Additional options\n * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality.\n * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of\n complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular\n references to blow the stack.\n * @return {Boolean} equal match\n */\nfunction deepEqual(leftHandOperand, rightHandOperand, options) {\n // If we have a comparator, we can't assume anything; so bail to its check first.\n if (options && options.comparator) {\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n }\n\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n\n // Deeper comparisons are pushed through to a larger function\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n}\n\n/**\n * Many comparisons can be canceled out early via simple equality or primitive checks.\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @return {Boolean|null} equal match\n */\nfunction simpleEqual(leftHandOperand, rightHandOperand) {\n // Equal references (except for Numbers) can be returned early\n if (leftHandOperand === rightHandOperand) {\n // Handle +-0 cases\n return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand;\n }\n\n // handle NaN cases\n if (\n leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare\n rightHandOperand !== rightHandOperand // eslint-disable-line no-self-compare\n ) {\n return true;\n }\n\n // Anything that is not an 'object', i.e. symbols, functions, booleans, numbers,\n // strings, and undefined, can be compared by reference.\n if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n // Easy out b/c it would have passed the first equality check\n return false;\n }\n return null;\n}\n\n/*!\n * The main logic of the `deepEqual` function.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (optional) Additional options\n * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality.\n * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of\n complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular\n references to blow the stack.\n * @return {Boolean} equal match\n*/\nfunction extensiveDeepEqual(leftHandOperand, rightHandOperand, options) {\n options = options || {};\n options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap();\n var comparator = options && options.comparator;\n\n // Check if a memoized result exists.\n var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize);\n if (memoizeResultLeft !== null) {\n return memoizeResultLeft;\n }\n var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize);\n if (memoizeResultRight !== null) {\n return memoizeResultRight;\n }\n\n // If a comparator is present, use it.\n if (comparator) {\n var comparatorResult = comparator(leftHandOperand, rightHandOperand);\n // Comparators may return null, in which case we want to go back to default behavior.\n if (comparatorResult === false || comparatorResult === true) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult);\n return comparatorResult;\n }\n // To allow comparators to override *any* behavior, we ran them first. Since it didn't decide\n // what to do, we need to make sure to return the basic tests first before we move on.\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n // Don't memoize this, it takes longer to set/retrieve than to just compare.\n return simpleResult;\n }\n }\n\n var leftHandType = type(leftHandOperand);\n if (leftHandType !== type(rightHandOperand)) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false);\n return false;\n }\n\n // Temporarily set the operands in the memoize object to prevent blowing the stack\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true);\n\n var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options);\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result);\n return result;\n}\n\nfunction extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) {\n switch (leftHandType) {\n case 'String':\n case 'Number':\n case 'Boolean':\n case 'Date':\n // If these types are their instance types (e.g. `new Number`) then re-deepEqual against their values\n return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf());\n case 'Promise':\n case 'Symbol':\n case 'function':\n case 'WeakMap':\n case 'WeakSet':\n return leftHandOperand === rightHandOperand;\n case 'Error':\n return keysEqual(leftHandOperand, rightHandOperand, [ 'name', 'message', 'code' ], options);\n case 'Arguments':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'Array':\n return iterableEqual(leftHandOperand, rightHandOperand, options);\n case 'RegExp':\n return regexpEqual(leftHandOperand, rightHandOperand);\n case 'Generator':\n return generatorEqual(leftHandOperand, rightHandOperand, options);\n case 'DataView':\n return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options);\n case 'ArrayBuffer':\n return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options);\n case 'Set':\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case 'Map':\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case 'Temporal.PlainDate':\n case 'Temporal.PlainTime':\n case 'Temporal.PlainDateTime':\n case 'Temporal.Instant':\n case 'Temporal.ZonedDateTime':\n case 'Temporal.PlainYearMonth':\n case 'Temporal.PlainMonthDay':\n return leftHandOperand.equals(rightHandOperand);\n case 'Temporal.Duration':\n return leftHandOperand.total('nanoseconds') === rightHandOperand.total('nanoseconds');\n case 'Temporal.TimeZone':\n case 'Temporal.Calendar':\n return leftHandOperand.toString() === rightHandOperand.toString();\n default:\n return objectEqual(leftHandOperand, rightHandOperand, options);\n }\n}\n\n/*!\n * Compare two Regular Expressions for equality.\n *\n * @param {RegExp} leftHandOperand\n * @param {RegExp} rightHandOperand\n * @return {Boolean} result\n */\n\nfunction regexpEqual(leftHandOperand, rightHandOperand) {\n return leftHandOperand.toString() === rightHandOperand.toString();\n}\n\n/*!\n * Compare two Sets/Maps for equality. Faster than other equality functions.\n *\n * @param {Set} leftHandOperand\n * @param {Set} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\n\nfunction entriesEqual(leftHandOperand, rightHandOperand, options) {\n try {\n // IE11 doesn't support Set#entries or Set#@@iterator, so we need manually populate using Set#forEach\n if (leftHandOperand.size !== rightHandOperand.size) {\n return false;\n }\n if (leftHandOperand.size === 0) {\n return true;\n }\n } catch (sizeError) {\n // things that aren't actual Maps or Sets will throw here\n return false;\n }\n var leftHandItems = [];\n var rightHandItems = [];\n leftHandOperand.forEach(function gatherEntries(key, value) {\n leftHandItems.push([ key, value ]);\n });\n rightHandOperand.forEach(function gatherEntries(key, value) {\n rightHandItems.push([ key, value ]);\n });\n return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options);\n}\n\n/*!\n * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\n\nfunction iterableEqual(leftHandOperand, rightHandOperand, options) {\n var length = leftHandOperand.length;\n if (length !== rightHandOperand.length) {\n return false;\n }\n if (length === 0) {\n return true;\n }\n var index = -1;\n while (++index < length) {\n if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) {\n return false;\n }\n }\n return true;\n}\n\n/*!\n * Simple equality for generator objects such as those returned by generator functions.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\n\nfunction generatorEqual(leftHandOperand, rightHandOperand, options) {\n return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options);\n}\n\n/*!\n * Determine if the given object has an @@iterator function.\n *\n * @param {Object} target\n * @return {Boolean} `true` if the object has an @@iterator function.\n */\nfunction hasIteratorFunction(target) {\n return typeof Symbol !== 'undefined' &&\n typeof target === 'object' &&\n typeof Symbol.iterator !== 'undefined' &&\n typeof target[Symbol.iterator] === 'function';\n}\n\n/*!\n * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array.\n * This will consume the iterator - which could have side effects depending on the @@iterator implementation.\n *\n * @param {Object} target\n * @returns {Array} an array of entries from the @@iterator function\n */\nfunction getIteratorEntries(target) {\n if (hasIteratorFunction(target)) {\n try {\n return getGeneratorEntries(target[Symbol.iterator]());\n } catch (iteratorError) {\n return [];\n }\n }\n return [];\n}\n\n/*!\n * Gets all entries from a Generator. This will consume the generator - which could have side effects.\n *\n * @param {Generator} target\n * @returns {Array} an array of entries from the Generator.\n */\nfunction getGeneratorEntries(generator) {\n var generatorResult = generator.next();\n var accumulator = [ generatorResult.value ];\n while (generatorResult.done === false) {\n generatorResult = generator.next();\n accumulator.push(generatorResult.value);\n }\n return accumulator;\n}\n\n/*!\n * Gets all own and inherited enumerable keys from a target.\n *\n * @param {Object} target\n * @returns {Array} an array of own and inherited enumerable keys from the target.\n */\nfunction getEnumerableKeys(target) {\n var keys = [];\n for (var key in target) {\n keys.push(key);\n }\n return keys;\n}\n\nfunction getEnumerableSymbols(target) {\n var keys = [];\n var allKeys = Object.getOwnPropertySymbols(target);\n for (var i = 0; i < allKeys.length; i += 1) {\n var key = allKeys[i];\n if (Object.getOwnPropertyDescriptor(target, key).enumerable) {\n keys.push(key);\n }\n }\n return keys;\n}\n\n/*!\n * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of\n * each key. If any value of the given key is not equal, the function will return false (early).\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\nfunction keysEqual(leftHandOperand, rightHandOperand, keys, options) {\n var length = keys.length;\n if (length === 0) {\n return true;\n }\n for (var i = 0; i < length; i += 1) {\n if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) {\n return false;\n }\n }\n return true;\n}\n\n/*!\n * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual`\n * for each enumerable key in the object.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n */\nfunction objectEqual(leftHandOperand, rightHandOperand, options) {\n var leftHandKeys = getEnumerableKeys(leftHandOperand);\n var rightHandKeys = getEnumerableKeys(rightHandOperand);\n var leftHandSymbols = getEnumerableSymbols(leftHandOperand);\n var rightHandSymbols = getEnumerableSymbols(rightHandOperand);\n leftHandKeys = leftHandKeys.concat(leftHandSymbols);\n rightHandKeys = rightHandKeys.concat(rightHandSymbols);\n\n if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) {\n if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) {\n return false;\n }\n return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options);\n }\n\n var leftHandEntries = getIteratorEntries(leftHandOperand);\n var rightHandEntries = getIteratorEntries(rightHandOperand);\n if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) {\n leftHandEntries.sort();\n rightHandEntries.sort();\n return iterableEqual(leftHandEntries, rightHandEntries, options);\n }\n\n if (leftHandKeys.length === 0 &&\n leftHandEntries.length === 0 &&\n rightHandKeys.length === 0 &&\n rightHandEntries.length === 0) {\n return true;\n }\n\n return false;\n}\n\n/*!\n * Returns true if the argument is a primitive.\n *\n * This intentionally returns true for all objects that can be compared by reference,\n * including functions and symbols.\n *\n * @param {Mixed} value\n * @return {Boolean} result\n */\nfunction isPrimitive(value) {\n return value === null || typeof value !== 'object';\n}\n\nfunction mapSymbols(arr) {\n return arr.map(function mapSymbol(entry) {\n if (typeof entry === 'symbol') {\n return entry.toString();\n }\n\n return entry;\n });\n}\n", "var config = require('../config');\n\n/*!\n * Chai - isProxyEnabled helper\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .isProxyEnabled()\n *\n * Helper function to check if Chai's proxy protection feature is enabled. If\n * proxies are unsupported or disabled via the user's Chai config, then return\n * false. Otherwise, return true.\n *\n * @namespace Utils\n * @name isProxyEnabled\n */\n\nmodule.exports = function isProxyEnabled() {\n return config.useProxy &&\n typeof Proxy !== 'undefined' &&\n typeof Reflect !== 'undefined';\n};\n", "/*!\n * Chai - addProperty utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar isProxyEnabled = require('./isProxyEnabled');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .addProperty(ctx, name, getter)\n *\n * Adds a property to the prototype of an object.\n *\n * utils.addProperty(chai.Assertion.prototype, 'foo', function () {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.instanceof(Foo);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addProperty('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.be.foo;\n *\n * @param {Object} ctx object to which the property is added\n * @param {String} name of property to add\n * @param {Function} getter function to be used for name\n * @namespace Utils\n * @name addProperty\n * @api public\n */\n\nmodule.exports = function addProperty(ctx, name, getter) {\n getter = getter === undefined ? function () {} : getter;\n\n Object.defineProperty(ctx, name,\n { get: function propertyGetter() {\n // Setting the `ssfi` flag to `propertyGetter` causes this function to\n // be the starting point for removing implementation frames from the\n // stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if\n // the `lockSsfi` flag isn't set and proxy protection is disabled.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked\n // from inside of another assertion. In the first case, the `ssfi` flag\n // has already been set by the overwriting assertion. In the second\n // case, the `ssfi` flag has already been set by the outer assertion.\n //\n // If proxy protection is enabled, then the `ssfi` flag has already been\n // set by the proxy getter.\n if (!isProxyEnabled() && !flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', propertyGetter);\n }\n\n var result = getter.call(this);\n if (result !== undefined)\n return result;\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }\n , configurable: true\n });\n};\n", "var fnLengthDesc = Object.getOwnPropertyDescriptor(function () {}, 'length');\n\n/*!\n * Chai - addLengthGuard utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .addLengthGuard(fn, assertionName, isChainable)\n *\n * Define `length` as a getter on the given uninvoked method assertion. The\n * getter acts as a guard against chaining `length` directly off of an uninvoked\n * method assertion, which is a problem because it references `function`'s\n * built-in `length` property instead of Chai's `length` assertion. When the\n * getter catches the user making this mistake, it throws an error with a\n * helpful message.\n *\n * There are two ways in which this mistake can be made. The first way is by\n * chaining the `length` assertion directly off of an uninvoked chainable\n * method. In this case, Chai suggests that the user use `lengthOf` instead. The\n * second way is by chaining the `length` assertion directly off of an uninvoked\n * non-chainable method. Non-chainable methods must be invoked prior to\n * chaining. In this case, Chai suggests that the user consult the docs for the\n * given assertion.\n *\n * If the `length` property of functions is unconfigurable, then return `fn`\n * without modification.\n *\n * Note that in ES6, the function's `length` property is configurable, so once\n * support for legacy environments is dropped, Chai's `length` property can\n * replace the built-in function's `length` property, and this length guard will\n * no longer be necessary. In the mean time, maintaining consistency across all\n * environments is the priority.\n *\n * @param {Function} fn\n * @param {String} assertionName\n * @param {Boolean} isChainable\n * @namespace Utils\n * @name addLengthGuard\n */\n\nmodule.exports = function addLengthGuard (fn, assertionName, isChainable) {\n if (!fnLengthDesc.configurable) return fn;\n\n Object.defineProperty(fn, 'length', {\n get: function () {\n if (isChainable) {\n throw Error('Invalid Chai property: ' + assertionName + '.length. Due' +\n ' to a compatibility issue, \"length\" cannot directly follow \"' +\n assertionName + '\". Use \"' + assertionName + '.lengthOf\" instead.');\n }\n\n throw Error('Invalid Chai property: ' + assertionName + '.length. See' +\n ' docs for proper usage of \"' + assertionName + '\".');\n }\n });\n\n return fn;\n};\n", "/*!\n * Chai - getProperties utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getProperties(object)\n *\n * This allows the retrieval of property names of an object, enumerable or not,\n * inherited or not.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getProperties\n * @api public\n */\n\nmodule.exports = function getProperties(object) {\n var result = Object.getOwnPropertyNames(object);\n\n function addProperty(property) {\n if (result.indexOf(property) === -1) {\n result.push(property);\n }\n }\n\n var proto = Object.getPrototypeOf(object);\n while (proto !== null) {\n Object.getOwnPropertyNames(proto).forEach(addProperty);\n proto = Object.getPrototypeOf(proto);\n }\n\n return result;\n};\n", "var config = require('../config');\nvar flag = require('./flag');\nvar getProperties = require('./getProperties');\nvar isProxyEnabled = require('./isProxyEnabled');\n\n/*!\n * Chai - proxify utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .proxify(object)\n *\n * Return a proxy of given object that throws an error when a non-existent\n * property is read. By default, the root cause is assumed to be a misspelled\n * property, and thus an attempt is made to offer a reasonable suggestion from\n * the list of existing properties. However, if a nonChainableMethodName is\n * provided, then the root cause is instead a failure to invoke a non-chainable\n * method prior to reading the non-existent property.\n *\n * If proxies are unsupported or disabled via the user's Chai config, then\n * return object without modification.\n *\n * @param {Object} obj\n * @param {String} nonChainableMethodName\n * @namespace Utils\n * @name proxify\n */\n\nvar builtins = ['__flags', '__methods', '_obj', 'assert'];\n\nmodule.exports = function proxify(obj, nonChainableMethodName) {\n if (!isProxyEnabled()) return obj;\n\n return new Proxy(obj, {\n get: function proxyGetter(target, property) {\n // This check is here because we should not throw errors on Symbol properties\n // such as `Symbol.toStringTag`.\n // The values for which an error should be thrown can be configured using\n // the `config.proxyExcludedKeys` setting.\n if (typeof property === 'string' &&\n config.proxyExcludedKeys.indexOf(property) === -1 &&\n !Reflect.has(target, property)) {\n // Special message for invalid property access of non-chainable methods.\n if (nonChainableMethodName) {\n throw Error('Invalid Chai property: ' + nonChainableMethodName + '.' +\n property + '. See docs for proper usage of \"' +\n nonChainableMethodName + '\".');\n }\n\n // If the property is reasonably close to an existing Chai property,\n // suggest that property to the user. Only suggest properties with a\n // distance less than 4.\n var suggestion = null;\n var suggestionDistance = 4;\n getProperties(target).forEach(function(prop) {\n if (\n !Object.prototype.hasOwnProperty(prop) &&\n builtins.indexOf(prop) === -1\n ) {\n var dist = stringDistanceCapped(\n property,\n prop,\n suggestionDistance\n );\n if (dist < suggestionDistance) {\n suggestion = prop;\n suggestionDistance = dist;\n }\n }\n });\n\n if (suggestion !== null) {\n throw Error('Invalid Chai property: ' + property +\n '. Did you mean \"' + suggestion + '\"?');\n } else {\n throw Error('Invalid Chai property: ' + property);\n }\n }\n\n // Use this proxy getter as the starting point for removing implementation\n // frames from the stack trace of a failed assertion. For property\n // assertions, this prevents the proxy getter from showing up in the stack\n // trace since it's invoked before the property getter. For method and\n // chainable method assertions, this flag will end up getting changed to\n // the method wrapper, which is good since this frame will no longer be in\n // the stack once the method is invoked. Note that Chai builtin assertion\n // properties such as `__flags` are skipped since this is only meant to\n // capture the starting point of an assertion. This step is also skipped\n // if the `lockSsfi` flag is set, thus indicating that this assertion is\n // being called from within another assertion. In that case, the `ssfi`\n // flag is already set to the outer assertion's starting point.\n if (builtins.indexOf(property) === -1 && !flag(target, 'lockSsfi')) {\n flag(target, 'ssfi', proxyGetter);\n }\n\n return Reflect.get(target, property);\n }\n });\n};\n\n/**\n * # stringDistanceCapped(strA, strB, cap)\n * Return the Levenshtein distance between two strings, but no more than cap.\n * @param {string} strA\n * @param {string} strB\n * @param {number} number\n * @return {number} min(string distance between strA and strB, cap)\n * @api private\n */\n\nfunction stringDistanceCapped(strA, strB, cap) {\n if (Math.abs(strA.length - strB.length) >= cap) {\n return cap;\n }\n\n var memo = [];\n // `memo` is a two-dimensional array containing distances.\n // memo[i][j] is the distance between strA.slice(0, i) and\n // strB.slice(0, j).\n for (var i = 0; i <= strA.length; i++) {\n memo[i] = Array(strB.length + 1).fill(0);\n memo[i][0] = i;\n }\n for (var j = 0; j < strB.length; j++) {\n memo[0][j] = j;\n }\n\n for (var i = 1; i <= strA.length; i++) {\n var ch = strA.charCodeAt(i - 1);\n for (var j = 1; j <= strB.length; j++) {\n if (Math.abs(i - j) >= cap) {\n memo[i][j] = cap;\n continue;\n }\n memo[i][j] = Math.min(\n memo[i - 1][j] + 1,\n memo[i][j - 1] + 1,\n memo[i - 1][j - 1] +\n (ch === strB.charCodeAt(j - 1) ? 0 : 1)\n );\n }\n }\n\n return memo[strA.length][strB.length];\n}\n", "/*!\n * Chai - addMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar addLengthGuard = require('./addLengthGuard');\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar proxify = require('./proxify');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .addMethod(ctx, name, method)\n *\n * Adds a method to the prototype of an object.\n *\n * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.equal(str);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addMethod('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(fooStr).to.be.foo('bar');\n *\n * @param {Object} ctx object to which the method is added\n * @param {String} name of method to add\n * @param {Function} method function to be used for name\n * @namespace Utils\n * @name addMethod\n * @api public\n */\n\nmodule.exports = function addMethod(ctx, name, method) {\n var methodWrapper = function () {\n // Setting the `ssfi` flag to `methodWrapper` causes this function to be the\n // starting point for removing implementation frames from the stack trace of\n // a failed assertion.\n //\n // However, we only want to use this function as the starting point if the\n // `lockSsfi` flag isn't set.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked from\n // inside of another assertion. In the first case, the `ssfi` flag has\n // already been set by the overwriting assertion. In the second case, the\n // `ssfi` flag has already been set by the outer assertion.\n if (!flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', methodWrapper);\n }\n\n var result = method.apply(this, arguments);\n if (result !== undefined)\n return result;\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n\n addLengthGuard(methodWrapper, name, false);\n ctx[name] = proxify(methodWrapper, name);\n};\n", "/*!\n * Chai - overwriteProperty utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar isProxyEnabled = require('./isProxyEnabled');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .overwriteProperty(ctx, name, fn)\n *\n * Overwrites an already existing property getter and provides\n * access to previous value. Must return function to use as getter.\n *\n * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) {\n * return function () {\n * var obj = utils.flag(this, 'object');\n * if (obj instanceof Foo) {\n * new chai.Assertion(obj.name).to.equal('bar');\n * } else {\n * _super.call(this);\n * }\n * }\n * });\n *\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteProperty('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.be.ok;\n *\n * @param {Object} ctx object whose property is to be overwritten\n * @param {String} name of property to overwrite\n * @param {Function} getter function that returns a getter function to be used for name\n * @namespace Utils\n * @name overwriteProperty\n * @api public\n */\n\nmodule.exports = function overwriteProperty(ctx, name, getter) {\n var _get = Object.getOwnPropertyDescriptor(ctx, name)\n , _super = function () {};\n\n if (_get && 'function' === typeof _get.get)\n _super = _get.get\n\n Object.defineProperty(ctx, name,\n { get: function overwritingPropertyGetter() {\n // Setting the `ssfi` flag to `overwritingPropertyGetter` causes this\n // function to be the starting point for removing implementation frames\n // from the stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if\n // the `lockSsfi` flag isn't set and proxy protection is disabled.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked\n // from inside of another assertion. In the first case, the `ssfi` flag\n // has already been set by the overwriting assertion. In the second\n // case, the `ssfi` flag has already been set by the outer assertion.\n //\n // If proxy protection is enabled, then the `ssfi` flag has already been\n // set by the proxy getter.\n if (!isProxyEnabled() && !flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', overwritingPropertyGetter);\n }\n\n // Setting the `lockSsfi` flag to `true` prevents the overwritten\n // assertion from changing the `ssfi` flag. By this point, the `ssfi`\n // flag is already set to the correct starting point for this assertion.\n var origLockSsfi = flag(this, 'lockSsfi');\n flag(this, 'lockSsfi', true);\n var result = getter(_super).call(this);\n flag(this, 'lockSsfi', origLockSsfi);\n\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }\n , configurable: true\n });\n};\n", "/*!\n * Chai - overwriteMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar addLengthGuard = require('./addLengthGuard');\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar proxify = require('./proxify');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .overwriteMethod(ctx, name, fn)\n *\n * Overwrites an already existing method and provides\n * access to previous function. Must return function\n * to be used for name.\n *\n * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) {\n * return function (str) {\n * var obj = utils.flag(this, 'object');\n * if (obj instanceof Foo) {\n * new chai.Assertion(obj.value).to.equal(str);\n * } else {\n * _super.apply(this, arguments);\n * }\n * }\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteMethod('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.equal('bar');\n *\n * @param {Object} ctx object whose method is to be overwritten\n * @param {String} name of method to overwrite\n * @param {Function} method function that returns a function to be used for name\n * @namespace Utils\n * @name overwriteMethod\n * @api public\n */\n\nmodule.exports = function overwriteMethod(ctx, name, method) {\n var _method = ctx[name]\n , _super = function () {\n throw new Error(name + ' is not a function');\n };\n\n if (_method && 'function' === typeof _method)\n _super = _method;\n\n var overwritingMethodWrapper = function () {\n // Setting the `ssfi` flag to `overwritingMethodWrapper` causes this\n // function to be the starting point for removing implementation frames from\n // the stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if the\n // `lockSsfi` flag isn't set.\n //\n // If the `lockSsfi` flag is set, then either this assertion has been\n // overwritten by another assertion, or this assertion is being invoked from\n // inside of another assertion. In the first case, the `ssfi` flag has\n // already been set by the overwriting assertion. In the second case, the\n // `ssfi` flag has already been set by the outer assertion.\n if (!flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', overwritingMethodWrapper);\n }\n\n // Setting the `lockSsfi` flag to `true` prevents the overwritten assertion\n // from changing the `ssfi` flag. By this point, the `ssfi` flag is already\n // set to the correct starting point for this assertion.\n var origLockSsfi = flag(this, 'lockSsfi');\n flag(this, 'lockSsfi', true);\n var result = method(_super).apply(this, arguments);\n flag(this, 'lockSsfi', origLockSsfi);\n\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }\n\n addLengthGuard(overwritingMethodWrapper, name, false);\n ctx[name] = proxify(overwritingMethodWrapper, name);\n};\n", "/*!\n * Chai - addChainingMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar addLengthGuard = require('./addLengthGuard');\nvar chai = require('../../chai');\nvar flag = require('./flag');\nvar proxify = require('./proxify');\nvar transferFlags = require('./transferFlags');\n\n/*!\n * Module variables\n */\n\n// Check whether `Object.setPrototypeOf` is supported\nvar canSetPrototype = typeof Object.setPrototypeOf === 'function';\n\n// Without `Object.setPrototypeOf` support, this module will need to add properties to a function.\n// However, some of functions' own props are not configurable and should be skipped.\nvar testFn = function() {};\nvar excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) {\n var propDesc = Object.getOwnPropertyDescriptor(testFn, name);\n\n // Note: PhantomJS 1.x includes `callee` as one of `testFn`'s own properties,\n // but then returns `undefined` as the property descriptor for `callee`. As a\n // workaround, we perform an otherwise unnecessary type-check for `propDesc`,\n // and then filter it out if it's not an object as it should be.\n if (typeof propDesc !== 'object')\n return true;\n\n return !propDesc.configurable;\n});\n\n// Cache `Function` properties\nvar call = Function.prototype.call,\n apply = Function.prototype.apply;\n\n/**\n * ### .addChainableMethod(ctx, name, method, chainingBehavior)\n *\n * Adds a method to an object, such that the method can also be chained.\n *\n * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.equal(str);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior);\n *\n * The result can then be used as both a method assertion, executing both `method` and\n * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`.\n *\n * expect(fooStr).to.be.foo('bar');\n * expect(fooStr).to.be.foo.equal('foo');\n *\n * @param {Object} ctx object to which the method is added\n * @param {String} name of method to add\n * @param {Function} method function to be used for `name`, when called\n * @param {Function} chainingBehavior function to be called every time the property is accessed\n * @namespace Utils\n * @name addChainableMethod\n * @api public\n */\n\nmodule.exports = function addChainableMethod(ctx, name, method, chainingBehavior) {\n if (typeof chainingBehavior !== 'function') {\n chainingBehavior = function () { };\n }\n\n var chainableBehavior = {\n method: method\n , chainingBehavior: chainingBehavior\n };\n\n // save the methods so we can overwrite them later, if we need to.\n if (!ctx.__methods) {\n ctx.__methods = {};\n }\n ctx.__methods[name] = chainableBehavior;\n\n Object.defineProperty(ctx, name,\n { get: function chainableMethodGetter() {\n chainableBehavior.chainingBehavior.call(this);\n\n var chainableMethodWrapper = function () {\n // Setting the `ssfi` flag to `chainableMethodWrapper` causes this\n // function to be the starting point for removing implementation\n // frames from the stack trace of a failed assertion.\n //\n // However, we only want to use this function as the starting point if\n // the `lockSsfi` flag isn't set.\n //\n // If the `lockSsfi` flag is set, then this assertion is being\n // invoked from inside of another assertion. In this case, the `ssfi`\n // flag has already been set by the outer assertion.\n //\n // Note that overwriting a chainable method merely replaces the saved\n // methods in `ctx.__methods` instead of completely replacing the\n // overwritten assertion. Therefore, an overwriting assertion won't\n // set the `ssfi` or `lockSsfi` flags.\n if (!flag(this, 'lockSsfi')) {\n flag(this, 'ssfi', chainableMethodWrapper);\n }\n\n var result = chainableBehavior.method.apply(this, arguments);\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n\n addLengthGuard(chainableMethodWrapper, name, true);\n\n // Use `Object.setPrototypeOf` if available\n if (canSetPrototype) {\n // Inherit all properties from the object by replacing the `Function` prototype\n var prototype = Object.create(this);\n // Restore the `call` and `apply` methods from `Function`\n prototype.call = call;\n prototype.apply = apply;\n Object.setPrototypeOf(chainableMethodWrapper, prototype);\n }\n // Otherwise, redefine all properties (slow!)\n else {\n var asserterNames = Object.getOwnPropertyNames(ctx);\n asserterNames.forEach(function (asserterName) {\n if (excludeNames.indexOf(asserterName) !== -1) {\n return;\n }\n\n var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);\n Object.defineProperty(chainableMethodWrapper, asserterName, pd);\n });\n }\n\n transferFlags(this, chainableMethodWrapper);\n return proxify(chainableMethodWrapper);\n }\n , configurable: true\n });\n};\n", "/*!\n * Chai - overwriteChainableMethod utility\n * Copyright(c) 2012-2014 Jake Luer \n * MIT Licensed\n */\n\nvar chai = require('../../chai');\nvar transferFlags = require('./transferFlags');\n\n/**\n * ### .overwriteChainableMethod(ctx, name, method, chainingBehavior)\n *\n * Overwrites an already existing chainable method\n * and provides access to the previous function or\n * property. Must return functions to be used for\n * name.\n *\n * utils.overwriteChainableMethod(chai.Assertion.prototype, 'lengthOf',\n * function (_super) {\n * }\n * , function (_super) {\n * }\n * );\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteChainableMethod('foo', fn, fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.have.lengthOf(3);\n * expect(myFoo).to.have.lengthOf.above(3);\n *\n * @param {Object} ctx object whose method / property is to be overwritten\n * @param {String} name of method / property to overwrite\n * @param {Function} method function that returns a function to be used for name\n * @param {Function} chainingBehavior function that returns a function to be used for property\n * @namespace Utils\n * @name overwriteChainableMethod\n * @api public\n */\n\nmodule.exports = function overwriteChainableMethod(ctx, name, method, chainingBehavior) {\n var chainableBehavior = ctx.__methods[name];\n\n var _chainingBehavior = chainableBehavior.chainingBehavior;\n chainableBehavior.chainingBehavior = function overwritingChainableMethodGetter() {\n var result = chainingBehavior(_chainingBehavior).call(this);\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n\n var _method = chainableBehavior.method;\n chainableBehavior.method = function overwritingChainableMethodWrapper() {\n var result = method(_method).apply(this, arguments);\n if (result !== undefined) {\n return result;\n }\n\n var newAssertion = new chai.Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n };\n};\n", "/*!\n * Chai - compareByInspect utility\n * Copyright(c) 2011-2016 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar inspect = require('./inspect');\n\n/**\n * ### .compareByInspect(mixed, mixed)\n *\n * To be used as a compareFunction with Array.prototype.sort. Compares elements\n * using inspect instead of default behavior of using toString so that Symbols\n * and objects with irregular/missing toString can still be sorted without a\n * TypeError.\n *\n * @param {Mixed} first element to compare\n * @param {Mixed} second element to compare\n * @returns {Number} -1 if 'a' should come before 'b'; otherwise 1\n * @name compareByInspect\n * @namespace Utils\n * @api public\n */\n\nmodule.exports = function compareByInspect(a, b) {\n return inspect(a) < inspect(b) ? -1 : 1;\n};\n", "/*!\n * Chai - getOwnEnumerablePropertySymbols utility\n * Copyright(c) 2011-2016 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .getOwnEnumerablePropertySymbols(object)\n *\n * This allows the retrieval of directly-owned enumerable property symbols of an\n * object. This function is necessary because Object.getOwnPropertySymbols\n * returns both enumerable and non-enumerable property symbols.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getOwnEnumerablePropertySymbols\n * @api public\n */\n\nmodule.exports = function getOwnEnumerablePropertySymbols(obj) {\n if (typeof Object.getOwnPropertySymbols !== 'function') return [];\n\n return Object.getOwnPropertySymbols(obj).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(obj, sym).enumerable;\n });\n};\n", "/*!\n * Chai - getOwnEnumerableProperties utility\n * Copyright(c) 2011-2016 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar getOwnEnumerablePropertySymbols = require('./getOwnEnumerablePropertySymbols');\n\n/**\n * ### .getOwnEnumerableProperties(object)\n *\n * This allows the retrieval of directly-owned enumerable property names and\n * symbols of an object. This function is necessary because Object.keys only\n * returns enumerable property names, not enumerable property symbols.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getOwnEnumerableProperties\n * @api public\n */\n\nmodule.exports = function getOwnEnumerableProperties(obj) {\n return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj));\n};\n", "'use strict';\n\n/* !\n * Chai - checkError utility\n * Copyright(c) 2012-2016 Jake Luer \n * MIT Licensed\n */\n\nvar getFunctionName = require('get-func-name');\n/**\n * ### .checkError\n *\n * Checks that an error conforms to a given set of criteria and/or retrieves information about it.\n *\n * @api public\n */\n\n/**\n * ### .compatibleInstance(thrown, errorLike)\n *\n * Checks if two instances are compatible (strict equal).\n * Returns false if errorLike is not an instance of Error, because instances\n * can only be compatible if they're both error instances.\n *\n * @name compatibleInstance\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleInstance(thrown, errorLike) {\n return errorLike instanceof Error && thrown === errorLike;\n}\n\n/**\n * ### .compatibleConstructor(thrown, errorLike)\n *\n * Checks if two constructors are compatible.\n * This function can receive either an error constructor or\n * an error instance as the `errorLike` argument.\n * Constructors are compatible if they're the same or if one is\n * an instance of another.\n *\n * @name compatibleConstructor\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleConstructor(thrown, errorLike) {\n if (errorLike instanceof Error) {\n // If `errorLike` is an instance of any error we compare their constructors\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if (errorLike.prototype instanceof Error || errorLike === Error) {\n // If `errorLike` is a constructor that inherits from Error, we compare `thrown` to `errorLike` directly\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n\n return false;\n}\n\n/**\n * ### .compatibleMessage(thrown, errMatcher)\n *\n * Checks if an error's message is compatible with a matcher (String or RegExp).\n * If the message contains the String or passes the RegExp test,\n * it is considered compatible.\n *\n * @name compatibleMessage\n * @param {Error} thrown error\n * @param {String|RegExp} errMatcher to look for into the message\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleMessage(thrown, errMatcher) {\n var comparisonString = typeof thrown === 'string' ? thrown : thrown.message;\n if (errMatcher instanceof RegExp) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === 'string') {\n return comparisonString.indexOf(errMatcher) !== -1; // eslint-disable-line no-magic-numbers\n }\n\n return false;\n}\n\n/**\n * ### .getConstructorName(errorLike)\n *\n * Gets the constructor name for an Error instance or constructor itself.\n *\n * @name getConstructorName\n * @param {Error|ErrorConstructor} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getConstructorName(errorLike) {\n var constructorName = errorLike;\n if (errorLike instanceof Error) {\n constructorName = getFunctionName(errorLike.constructor);\n } else if (typeof errorLike === 'function') {\n // If `err` is not an instance of Error it is an error constructor itself or another function.\n // If we've got a common function we get its name, otherwise we may need to create a new instance\n // of the error just in case it's a poorly-constructed error. Please see chaijs/chai/issues/45 to know more.\n constructorName = getFunctionName(errorLike);\n if (constructorName === '') {\n var newConstructorName = getFunctionName(new errorLike()); // eslint-disable-line new-cap\n constructorName = newConstructorName || constructorName;\n }\n }\n\n return constructorName;\n}\n\n/**\n * ### .getMessage(errorLike)\n *\n * Gets the error message from an error.\n * If `err` is a String itself, we return it.\n * If the error has no message, we return an empty string.\n *\n * @name getMessage\n * @param {Error|String} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getMessage(errorLike) {\n var msg = '';\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === 'string') {\n msg = errorLike;\n }\n\n return msg;\n}\n\nmodule.exports = {\n compatibleInstance: compatibleInstance,\n compatibleConstructor: compatibleConstructor,\n compatibleMessage: compatibleMessage,\n getMessage: getMessage,\n getConstructorName: getConstructorName,\n};\n", "/*!\n * Chai - isNaN utility\n * Copyright(c) 2012-2015 Sakthipriyan Vairamani \n * MIT Licensed\n */\n\n/**\n * ### .isNaN(value)\n *\n * Checks if the given value is NaN or not.\n *\n * utils.isNaN(NaN); // true\n *\n * @param {Value} The value which has to be checked if it is NaN\n * @name isNaN\n * @api private\n */\n\nfunction isNaN(value) {\n // Refer http://www.ecma-international.org/ecma-262/6.0/#sec-isnan-number\n // section's NOTE.\n return value !== value;\n}\n\n// If ECMAScript 6's Number.isNaN is present, prefer that.\nmodule.exports = Number.isNaN || isNaN;\n", "var type = require('type-detect');\n\nvar flag = require('./flag');\n\nfunction isObjectType(obj) {\n var objectType = type(obj);\n var objectTypes = ['Array', 'Object', 'function'];\n\n return objectTypes.indexOf(objectType) !== -1;\n}\n\n/**\n * ### .getOperator(message)\n *\n * Extract the operator from error message.\n * Operator defined is based on below link\n * https://nodejs.org/api/assert.html#assert_assert.\n *\n * Returns the `operator` or `undefined` value for an Assertion.\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getOperator\n * @api public\n */\n\nmodule.exports = function getOperator(obj, args) {\n var operator = flag(obj, 'operator');\n var negate = flag(obj, 'negate');\n var expected = args[3];\n var msg = negate ? args[2] : args[1];\n\n if (operator) {\n return operator;\n }\n\n if (typeof msg === 'function') msg = msg();\n\n msg = msg || '';\n if (!msg) {\n return undefined;\n }\n\n if (/\\shave\\s/.test(msg)) {\n return undefined;\n }\n\n var isObject = isObjectType(expected);\n if (/\\snot\\s/.test(msg)) {\n return isObject ? 'notDeepStrictEqual' : 'notStrictEqual';\n }\n\n return isObject ? 'deepStrictEqual' : 'strictEqual';\n};\n", "/*!\n * chai\n * Copyright(c) 2011 Jake Luer \n * MIT Licensed\n */\n\n/*!\n * Dependencies that are used for multiple exports are required here only once\n */\n\nvar pathval = require('pathval');\n\n/*!\n * test utility\n */\n\nexports.test = require('./test');\n\n/*!\n * type utility\n */\n\nexports.type = require('type-detect');\n\n/*!\n * expectTypes utility\n */\nexports.expectTypes = require('./expectTypes');\n\n/*!\n * message utility\n */\n\nexports.getMessage = require('./getMessage');\n\n/*!\n * actual utility\n */\n\nexports.getActual = require('./getActual');\n\n/*!\n * Inspect util\n */\n\nexports.inspect = require('./inspect');\n\n/*!\n * Object Display util\n */\n\nexports.objDisplay = require('./objDisplay');\n\n/*!\n * Flag utility\n */\n\nexports.flag = require('./flag');\n\n/*!\n * Flag transferring utility\n */\n\nexports.transferFlags = require('./transferFlags');\n\n/*!\n * Deep equal utility\n */\n\nexports.eql = require('deep-eql');\n\n/*!\n * Deep path info\n */\n\nexports.getPathInfo = pathval.getPathInfo;\n\n/*!\n * Check if a property exists\n */\n\nexports.hasProperty = pathval.hasProperty;\n\n/*!\n * Function name\n */\n\nexports.getName = require('get-func-name');\n\n/*!\n * add Property\n */\n\nexports.addProperty = require('./addProperty');\n\n/*!\n * add Method\n */\n\nexports.addMethod = require('./addMethod');\n\n/*!\n * overwrite Property\n */\n\nexports.overwriteProperty = require('./overwriteProperty');\n\n/*!\n * overwrite Method\n */\n\nexports.overwriteMethod = require('./overwriteMethod');\n\n/*!\n * Add a chainable method\n */\n\nexports.addChainableMethod = require('./addChainableMethod');\n\n/*!\n * Overwrite chainable method\n */\n\nexports.overwriteChainableMethod = require('./overwriteChainableMethod');\n\n/*!\n * Compare by inspect method\n */\n\nexports.compareByInspect = require('./compareByInspect');\n\n/*!\n * Get own enumerable property symbols method\n */\n\nexports.getOwnEnumerablePropertySymbols = require('./getOwnEnumerablePropertySymbols');\n\n/*!\n * Get own enumerable properties method\n */\n\nexports.getOwnEnumerableProperties = require('./getOwnEnumerableProperties');\n\n/*!\n * Checks error against a given set of criteria\n */\n\nexports.checkError = require('check-error');\n\n/*!\n * Proxify util\n */\n\nexports.proxify = require('./proxify');\n\n/*!\n * addLengthGuard util\n */\n\nexports.addLengthGuard = require('./addLengthGuard');\n\n/*!\n * isProxyEnabled helper\n */\n\nexports.isProxyEnabled = require('./isProxyEnabled');\n\n/*!\n * isNaN method\n */\n\nexports.isNaN = require('./isNaN');\n\n/*!\n * getOperator method\n */\n\nexports.getOperator = require('./getOperator');", "/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nvar config = require('./config');\n\nmodule.exports = function (_chai, util) {\n /*!\n * Module dependencies.\n */\n\n var AssertionError = _chai.AssertionError\n , flag = util.flag;\n\n /*!\n * Module export.\n */\n\n _chai.Assertion = Assertion;\n\n /*!\n * Assertion Constructor\n *\n * Creates object for chaining.\n *\n * `Assertion` objects contain metadata in the form of flags. Three flags can\n * be assigned during instantiation by passing arguments to this constructor:\n *\n * - `object`: This flag contains the target of the assertion. For example, in\n * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will\n * contain `numKittens` so that the `equal` assertion can reference it when\n * needed.\n *\n * - `message`: This flag contains an optional custom error message to be\n * prepended to the error message that's generated by the assertion when it\n * fails.\n *\n * - `ssfi`: This flag stands for \"start stack function indicator\". It\n * contains a function reference that serves as the starting point for\n * removing frames from the stack trace of the error that's created by the\n * assertion when it fails. The goal is to provide a cleaner stack trace to\n * end users by removing Chai's internal functions. Note that it only works\n * in environments that support `Error.captureStackTrace`, and only when\n * `Chai.config.includeStack` hasn't been set to `false`.\n *\n * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag\n * should retain its current value, even as assertions are chained off of\n * this object. This is usually set to `true` when creating a new assertion\n * from within another assertion. It's also temporarily set to `true` before\n * an overwritten assertion gets called by the overwriting assertion.\n *\n * - `eql`: This flag contains the deepEqual function to be used by the assertion.\n *\n * @param {Mixed} obj target of the assertion\n * @param {String} msg (optional) custom error message\n * @param {Function} ssfi (optional) starting point for removing stack frames\n * @param {Boolean} lockSsfi (optional) whether or not the ssfi flag is locked\n * @api private\n */\n\n function Assertion (obj, msg, ssfi, lockSsfi) {\n flag(this, 'ssfi', ssfi || Assertion);\n flag(this, 'lockSsfi', lockSsfi);\n flag(this, 'object', obj);\n flag(this, 'message', msg);\n flag(this, 'eql', config.deepEqual || util.eql);\n\n return util.proxify(this);\n }\n\n Object.defineProperty(Assertion, 'includeStack', {\n get: function() {\n console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');\n return config.includeStack;\n },\n set: function(value) {\n console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');\n config.includeStack = value;\n }\n });\n\n Object.defineProperty(Assertion, 'showDiff', {\n get: function() {\n console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');\n return config.showDiff;\n },\n set: function(value) {\n console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');\n config.showDiff = value;\n }\n });\n\n Assertion.addProperty = function (name, fn) {\n util.addProperty(this.prototype, name, fn);\n };\n\n Assertion.addMethod = function (name, fn) {\n util.addMethod(this.prototype, name, fn);\n };\n\n Assertion.addChainableMethod = function (name, fn, chainingBehavior) {\n util.addChainableMethod(this.prototype, name, fn, chainingBehavior);\n };\n\n Assertion.overwriteProperty = function (name, fn) {\n util.overwriteProperty(this.prototype, name, fn);\n };\n\n Assertion.overwriteMethod = function (name, fn) {\n util.overwriteMethod(this.prototype, name, fn);\n };\n\n Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) {\n util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);\n };\n\n /**\n * ### .assert(expression, message, negateMessage, expected, actual, showDiff)\n *\n * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.\n *\n * @name assert\n * @param {Philosophical} expression to be tested\n * @param {String|Function} message or function that returns message to display if expression fails\n * @param {String|Function} negatedMessage or function that returns negatedMessage to display if negated expression fails\n * @param {Mixed} expected value (remember to check for negation)\n * @param {Mixed} actual (optional) will default to `this.obj`\n * @param {Boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails\n * @api private\n */\n\n Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) {\n var ok = util.test(this, arguments);\n if (false !== showDiff) showDiff = true;\n if (undefined === expected && undefined === _actual) showDiff = false;\n if (true !== config.showDiff) showDiff = false;\n\n if (!ok) {\n msg = util.getMessage(this, arguments);\n var actual = util.getActual(this, arguments);\n var assertionErrorObjectProperties = {\n actual: actual\n , expected: expected\n , showDiff: showDiff\n };\n\n var operator = util.getOperator(this, arguments);\n if (operator) {\n assertionErrorObjectProperties.operator = operator;\n }\n\n throw new AssertionError(\n msg,\n assertionErrorObjectProperties,\n (config.includeStack) ? this.assert : flag(this, 'ssfi'));\n }\n };\n\n /*!\n * ### ._obj\n *\n * Quick reference to stored `actual` value for plugin developers.\n *\n * @api private\n */\n\n Object.defineProperty(Assertion.prototype, '_obj',\n { get: function () {\n return flag(this, 'object');\n }\n , set: function (val) {\n flag(this, 'object', val);\n }\n });\n};\n", "/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, _) {\n var Assertion = chai.Assertion\n , AssertionError = chai.AssertionError\n , flag = _.flag;\n\n /**\n * ### Language Chains\n *\n * The following are provided as chainable getters to improve the readability\n * of your assertions.\n *\n * **Chains**\n *\n * - to\n * - be\n * - been\n * - is\n * - that\n * - which\n * - and\n * - has\n * - have\n * - with\n * - at\n * - of\n * - same\n * - but\n * - does\n * - still\n * - also\n *\n * @name language chains\n * @namespace BDD\n * @api public\n */\n\n [ 'to', 'be', 'been', 'is'\n , 'and', 'has', 'have', 'with'\n , 'that', 'which', 'at', 'of'\n , 'same', 'but', 'does', 'still', \"also\" ].forEach(function (chain) {\n Assertion.addProperty(chain);\n });\n\n /**\n * ### .not\n *\n * Negates all assertions that follow in the chain.\n *\n * expect(function () {}).to.not.throw();\n * expect({a: 1}).to.not.have.property('b');\n * expect([1, 2]).to.be.an('array').that.does.not.include(3);\n *\n * Just because you can negate any assertion with `.not` doesn't mean you\n * should. With great power comes great responsibility. It's often best to\n * assert that the one expected output was produced, rather than asserting\n * that one of countless unexpected outputs wasn't produced. See individual\n * assertions for specific guidance.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.not.equal(1); // Not recommended\n *\n * @name not\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('not', function () {\n flag(this, 'negate', true);\n });\n\n /**\n * ### .deep\n *\n * Causes all `.equal`, `.include`, `.members`, `.keys`, and `.property`\n * assertions that follow in the chain to use deep equality instead of strict\n * (`===`) equality. See the `deep-eql` project page for info on the deep\n * equality algorithm: https://github.com/chaijs/deep-eql.\n *\n * // Target object deeply (but not strictly) equals `{a: 1}`\n * expect({a: 1}).to.deep.equal({a: 1});\n * expect({a: 1}).to.not.equal({a: 1});\n *\n * // Target array deeply (but not strictly) includes `{a: 1}`\n * expect([{a: 1}]).to.deep.include({a: 1});\n * expect([{a: 1}]).to.not.include({a: 1});\n *\n * // Target object deeply (but not strictly) includes `x: {a: 1}`\n * expect({x: {a: 1}}).to.deep.include({x: {a: 1}});\n * expect({x: {a: 1}}).to.not.include({x: {a: 1}});\n *\n * // Target array deeply (but not strictly) has member `{a: 1}`\n * expect([{a: 1}]).to.have.deep.members([{a: 1}]);\n * expect([{a: 1}]).to.not.have.members([{a: 1}]);\n *\n * // Target set deeply (but not strictly) has key `{a: 1}`\n * expect(new Set([{a: 1}])).to.have.deep.keys([{a: 1}]);\n * expect(new Set([{a: 1}])).to.not.have.keys([{a: 1}]);\n *\n * // Target object deeply (but not strictly) has property `x: {a: 1}`\n * expect({x: {a: 1}}).to.have.deep.property('x', {a: 1});\n * expect({x: {a: 1}}).to.not.have.property('x', {a: 1});\n *\n * @name deep\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('deep', function () {\n flag(this, 'deep', true);\n });\n\n /**\n * ### .nested\n *\n * Enables dot- and bracket-notation in all `.property` and `.include`\n * assertions that follow in the chain.\n *\n * expect({a: {b: ['x', 'y']}}).to.have.nested.property('a.b[1]');\n * expect({a: {b: ['x', 'y']}}).to.nested.include({'a.b[1]': 'y'});\n *\n * If `.` or `[]` are part of an actual property name, they can be escaped by\n * adding two backslashes before them.\n *\n * expect({'.a': {'[b]': 'x'}}).to.have.nested.property('\\\\.a.\\\\[b\\\\]');\n * expect({'.a': {'[b]': 'x'}}).to.nested.include({'\\\\.a.\\\\[b\\\\]': 'x'});\n *\n * `.nested` cannot be combined with `.own`.\n *\n * @name nested\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('nested', function () {\n flag(this, 'nested', true);\n });\n\n /**\n * ### .own\n *\n * Causes all `.property` and `.include` assertions that follow in the chain\n * to ignore inherited properties.\n *\n * Object.prototype.b = 2;\n *\n * expect({a: 1}).to.have.own.property('a');\n * expect({a: 1}).to.have.property('b');\n * expect({a: 1}).to.not.have.own.property('b');\n *\n * expect({a: 1}).to.own.include({a: 1});\n * expect({a: 1}).to.include({b: 2}).but.not.own.include({b: 2});\n *\n * `.own` cannot be combined with `.nested`.\n *\n * @name own\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('own', function () {\n flag(this, 'own', true);\n });\n\n /**\n * ### .ordered\n *\n * Causes all `.members` assertions that follow in the chain to require that\n * members be in the same order.\n *\n * expect([1, 2]).to.have.ordered.members([1, 2])\n * .but.not.have.ordered.members([2, 1]);\n *\n * When `.include` and `.ordered` are combined, the ordering begins at the\n * start of both arrays.\n *\n * expect([1, 2, 3]).to.include.ordered.members([1, 2])\n * .but.not.include.ordered.members([2, 3]);\n *\n * @name ordered\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('ordered', function () {\n flag(this, 'ordered', true);\n });\n\n /**\n * ### .any\n *\n * Causes all `.keys` assertions that follow in the chain to only require that\n * the target have at least one of the given keys. This is the opposite of\n * `.all`, which requires that the target have all of the given keys.\n *\n * expect({a: 1, b: 2}).to.not.have.any.keys('c', 'd');\n *\n * See the `.keys` doc for guidance on when to use `.any` or `.all`.\n *\n * @name any\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('any', function () {\n flag(this, 'any', true);\n flag(this, 'all', false);\n });\n\n /**\n * ### .all\n *\n * Causes all `.keys` assertions that follow in the chain to require that the\n * target have all of the given keys. This is the opposite of `.any`, which\n * only requires that the target have at least one of the given keys.\n *\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b');\n *\n * Note that `.all` is used by default when neither `.all` nor `.any` are\n * added earlier in the chain. However, it's often best to add `.all` anyway\n * because it improves readability.\n *\n * See the `.keys` doc for guidance on when to use `.any` or `.all`.\n *\n * @name all\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('all', function () {\n flag(this, 'all', true);\n flag(this, 'any', false);\n });\n\n /**\n * ### .a(type[, msg])\n *\n * Asserts that the target's type is equal to the given string `type`. Types\n * are case insensitive. See the `type-detect` project page for info on the\n * type detection algorithm: https://github.com/chaijs/type-detect.\n *\n * expect('foo').to.be.a('string');\n * expect({a: 1}).to.be.an('object');\n * expect(null).to.be.a('null');\n * expect(undefined).to.be.an('undefined');\n * expect(new Error).to.be.an('error');\n * expect(Promise.resolve()).to.be.a('promise');\n * expect(new Float32Array).to.be.a('float32array');\n * expect(Symbol()).to.be.a('symbol');\n *\n * `.a` supports objects that have a custom type set via `Symbol.toStringTag`.\n *\n * var myObj = {\n * [Symbol.toStringTag]: 'myCustomType'\n * };\n *\n * expect(myObj).to.be.a('myCustomType').but.not.an('object');\n *\n * It's often best to use `.a` to check a target's type before making more\n * assertions on the same target. That way, you avoid unexpected behavior from\n * any assertion that does different things based on the target's type.\n *\n * expect([1, 2, 3]).to.be.an('array').that.includes(2);\n * expect([]).to.be.an('array').that.is.empty;\n *\n * Add `.not` earlier in the chain to negate `.a`. However, it's often best to\n * assert that the target is the expected type, rather than asserting that it\n * isn't one of many unexpected types.\n *\n * expect('foo').to.be.a('string'); // Recommended\n * expect('foo').to.not.be.an('array'); // Not recommended\n *\n * `.a` accepts an optional `msg` argument which is a custom error message to\n * show when the assertion fails. The message can also be given as the second\n * argument to `expect`.\n *\n * expect(1).to.be.a('string', 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.a('string');\n *\n * `.a` can also be used as a language chain to improve the readability of\n * your assertions.\n *\n * expect({b: 2}).to.have.a.property('b');\n *\n * The alias `.an` can be used interchangeably with `.a`.\n *\n * @name a\n * @alias an\n * @param {String} type\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function an (type, msg) {\n if (msg) flag(this, 'message', msg);\n type = type.toLowerCase();\n var obj = flag(this, 'object')\n , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a ';\n\n this.assert(\n type === _.type(obj).toLowerCase()\n , 'expected #{this} to be ' + article + type\n , 'expected #{this} not to be ' + article + type\n );\n }\n\n Assertion.addChainableMethod('an', an);\n Assertion.addChainableMethod('a', an);\n\n /**\n * ### .include(val[, msg])\n *\n * When the target is a string, `.include` asserts that the given string `val`\n * is a substring of the target.\n *\n * expect('foobar').to.include('foo');\n *\n * When the target is an array, `.include` asserts that the given `val` is a\n * member of the target.\n *\n * expect([1, 2, 3]).to.include(2);\n *\n * When the target is an object, `.include` asserts that the given object\n * `val`'s properties are a subset of the target's properties.\n *\n * expect({a: 1, b: 2, c: 3}).to.include({a: 1, b: 2});\n *\n * When the target is a Set or WeakSet, `.include` asserts that the given `val` is a\n * member of the target. SameValueZero equality algorithm is used.\n *\n * expect(new Set([1, 2])).to.include(2);\n *\n * When the target is a Map, `.include` asserts that the given `val` is one of\n * the values of the target. SameValueZero equality algorithm is used.\n *\n * expect(new Map([['a', 1], ['b', 2]])).to.include(2);\n *\n * Because `.include` does different things based on the target's type, it's\n * important to check the target's type before using `.include`. See the `.a`\n * doc for info on testing a target's type.\n *\n * expect([1, 2, 3]).to.be.an('array').that.includes(2);\n *\n * By default, strict (`===`) equality is used to compare array members and\n * object properties. Add `.deep` earlier in the chain to use deep equality\n * instead (WeakSet targets are not supported). See the `deep-eql` project\n * page for info on the deep equality algorithm: https://github.com/chaijs/deep-eql.\n *\n * // Target array deeply (but not strictly) includes `{a: 1}`\n * expect([{a: 1}]).to.deep.include({a: 1});\n * expect([{a: 1}]).to.not.include({a: 1});\n *\n * // Target object deeply (but not strictly) includes `x: {a: 1}`\n * expect({x: {a: 1}}).to.deep.include({x: {a: 1}});\n * expect({x: {a: 1}}).to.not.include({x: {a: 1}});\n *\n * By default, all of the target's properties are searched when working with\n * objects. This includes properties that are inherited and/or non-enumerable.\n * Add `.own` earlier in the chain to exclude the target's inherited\n * properties from the search.\n *\n * Object.prototype.b = 2;\n *\n * expect({a: 1}).to.own.include({a: 1});\n * expect({a: 1}).to.include({b: 2}).but.not.own.include({b: 2});\n *\n * Note that a target object is always only searched for `val`'s own\n * enumerable properties.\n *\n * `.deep` and `.own` can be combined.\n *\n * expect({a: {b: 2}}).to.deep.own.include({a: {b: 2}});\n *\n * Add `.nested` earlier in the chain to enable dot- and bracket-notation when\n * referencing nested properties.\n *\n * expect({a: {b: ['x', 'y']}}).to.nested.include({'a.b[1]': 'y'});\n *\n * If `.` or `[]` are part of an actual property name, they can be escaped by\n * adding two backslashes before them.\n *\n * expect({'.a': {'[b]': 2}}).to.nested.include({'\\\\.a.\\\\[b\\\\]': 2});\n *\n * `.deep` and `.nested` can be combined.\n *\n * expect({a: {b: [{c: 3}]}}).to.deep.nested.include({'a.b[0]': {c: 3}});\n *\n * `.own` and `.nested` cannot be combined.\n *\n * Add `.not` earlier in the chain to negate `.include`.\n *\n * expect('foobar').to.not.include('taco');\n * expect([1, 2, 3]).to.not.include(4);\n *\n * However, it's dangerous to negate `.include` when the target is an object.\n * The problem is that it creates uncertain expectations by asserting that the\n * target object doesn't have all of `val`'s key/value pairs but may or may\n * not have some of them. It's often best to identify the exact output that's\n * expected, and then write an assertion that only accepts that exact output.\n *\n * When the target object isn't even expected to have `val`'s keys, it's\n * often best to assert exactly that.\n *\n * expect({c: 3}).to.not.have.any.keys('a', 'b'); // Recommended\n * expect({c: 3}).to.not.include({a: 1, b: 2}); // Not recommended\n *\n * When the target object is expected to have `val`'s keys, it's often best to\n * assert that each of the properties has its expected value, rather than\n * asserting that each property doesn't have one of many unexpected values.\n *\n * expect({a: 3, b: 4}).to.include({a: 3, b: 4}); // Recommended\n * expect({a: 3, b: 4}).to.not.include({a: 1, b: 2}); // Not recommended\n *\n * `.include` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect([1, 2, 3]).to.include(4, 'nooo why fail??');\n * expect([1, 2, 3], 'nooo why fail??').to.include(4);\n *\n * `.include` can also be used as a language chain, causing all `.members` and\n * `.keys` assertions that follow in the chain to require the target to be a\n * superset of the expected set, rather than an identical set. Note that\n * `.members` ignores duplicates in the subset when `.include` is added.\n *\n * // Target object's keys are a superset of ['a', 'b'] but not identical\n * expect({a: 1, b: 2, c: 3}).to.include.all.keys('a', 'b');\n * expect({a: 1, b: 2, c: 3}).to.not.have.all.keys('a', 'b');\n *\n * // Target array is a superset of [1, 2] but not identical\n * expect([1, 2, 3]).to.include.members([1, 2]);\n * expect([1, 2, 3]).to.not.have.members([1, 2]);\n *\n * // Duplicates in the subset are ignored\n * expect([1, 2, 3]).to.include.members([1, 2, 2, 2]);\n *\n * Note that adding `.any` earlier in the chain causes the `.keys` assertion\n * to ignore `.include`.\n *\n * // Both assertions are identical\n * expect({a: 1}).to.include.any.keys('a', 'b');\n * expect({a: 1}).to.have.any.keys('a', 'b');\n *\n * The aliases `.includes`, `.contain`, and `.contains` can be used\n * interchangeably with `.include`.\n *\n * @name include\n * @alias contain\n * @alias includes\n * @alias contains\n * @param {Mixed} val\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function SameValueZero(a, b) {\n return (_.isNaN(a) && _.isNaN(b)) || a === b;\n }\n\n function includeChainingBehavior () {\n flag(this, 'contains', true);\n }\n\n function include (val, msg) {\n if (msg) flag(this, 'message', msg);\n\n var obj = flag(this, 'object')\n , objType = _.type(obj).toLowerCase()\n , flagMsg = flag(this, 'message')\n , negate = flag(this, 'negate')\n , ssfi = flag(this, 'ssfi')\n , isDeep = flag(this, 'deep')\n , descriptor = isDeep ? 'deep ' : ''\n , isEql = isDeep ? flag(this, 'eql') : SameValueZero;\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n var included = false;\n\n switch (objType) {\n case 'string':\n included = obj.indexOf(val) !== -1;\n break;\n\n case 'weakset':\n if (isDeep) {\n throw new AssertionError(\n flagMsg + 'unable to use .deep.include with WeakSet',\n undefined,\n ssfi\n );\n }\n\n included = obj.has(val);\n break;\n\n case 'map':\n obj.forEach(function (item) {\n included = included || isEql(item, val);\n });\n break;\n\n case 'set':\n if (isDeep) {\n obj.forEach(function (item) {\n included = included || isEql(item, val);\n });\n } else {\n included = obj.has(val);\n }\n break;\n\n case 'array':\n if (isDeep) {\n included = obj.some(function (item) {\n return isEql(item, val);\n })\n } else {\n included = obj.indexOf(val) !== -1;\n }\n break;\n\n default:\n // This block is for asserting a subset of properties in an object.\n // `_.expectTypes` isn't used here because `.include` should work with\n // objects with a custom `@@toStringTag`.\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + 'the given combination of arguments ('\n + objType + ' and '\n + _.type(val).toLowerCase() + ')'\n + ' is invalid for this assertion. '\n + 'You can use an array, a map, an object, a set, a string, '\n + 'or a weakset instead of a '\n + _.type(val).toLowerCase(),\n undefined,\n ssfi\n );\n }\n\n var props = Object.keys(val)\n , firstErr = null\n , numErrs = 0;\n\n props.forEach(function (prop) {\n var propAssertion = new Assertion(obj);\n _.transferFlags(this, propAssertion, true);\n flag(propAssertion, 'lockSsfi', true);\n\n if (!negate || props.length === 1) {\n propAssertion.property(prop, val[prop]);\n return;\n }\n\n try {\n propAssertion.property(prop, val[prop]);\n } catch (err) {\n if (!_.checkError.compatibleConstructor(err, AssertionError)) {\n throw err;\n }\n if (firstErr === null) firstErr = err;\n numErrs++;\n }\n }, this);\n\n // When validating .not.include with multiple properties, we only want\n // to throw an assertion error if all of the properties are included,\n // in which case we throw the first property assertion error that we\n // encountered.\n if (negate && props.length > 1 && numErrs === props.length) {\n throw firstErr;\n }\n return;\n }\n\n // Assert inclusion in collection or substring in a string.\n this.assert(\n included\n , 'expected #{this} to ' + descriptor + 'include ' + _.inspect(val)\n , 'expected #{this} to not ' + descriptor + 'include ' + _.inspect(val));\n }\n\n Assertion.addChainableMethod('include', include, includeChainingBehavior);\n Assertion.addChainableMethod('contain', include, includeChainingBehavior);\n Assertion.addChainableMethod('contains', include, includeChainingBehavior);\n Assertion.addChainableMethod('includes', include, includeChainingBehavior);\n\n /**\n * ### .ok\n *\n * Asserts that the target is a truthy value (considered `true` in boolean context).\n * However, it's often best to assert that the target is strictly (`===`) or\n * deeply equal to its expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.ok; // Not recommended\n *\n * expect(true).to.be.true; // Recommended\n * expect(true).to.be.ok; // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.ok`.\n *\n * expect(0).to.equal(0); // Recommended\n * expect(0).to.not.be.ok; // Not recommended\n *\n * expect(false).to.be.false; // Recommended\n * expect(false).to.not.be.ok; // Not recommended\n *\n * expect(null).to.be.null; // Recommended\n * expect(null).to.not.be.ok; // Not recommended\n *\n * expect(undefined).to.be.undefined; // Recommended\n * expect(undefined).to.not.be.ok; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(false, 'nooo why fail??').to.be.ok;\n *\n * @name ok\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('ok', function () {\n this.assert(\n flag(this, 'object')\n , 'expected #{this} to be truthy'\n , 'expected #{this} to be falsy');\n });\n\n /**\n * ### .true\n *\n * Asserts that the target is strictly (`===`) equal to `true`.\n *\n * expect(true).to.be.true;\n *\n * Add `.not` earlier in the chain to negate `.true`. However, it's often best\n * to assert that the target is equal to its expected value, rather than not\n * equal to `true`.\n *\n * expect(false).to.be.false; // Recommended\n * expect(false).to.not.be.true; // Not recommended\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.true; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(false, 'nooo why fail??').to.be.true;\n *\n * @name true\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('true', function () {\n this.assert(\n true === flag(this, 'object')\n , 'expected #{this} to be true'\n , 'expected #{this} to be false'\n , flag(this, 'negate') ? false : true\n );\n });\n\n /**\n * ### .false\n *\n * Asserts that the target is strictly (`===`) equal to `false`.\n *\n * expect(false).to.be.false;\n *\n * Add `.not` earlier in the chain to negate `.false`. However, it's often\n * best to assert that the target is equal to its expected value, rather than\n * not equal to `false`.\n *\n * expect(true).to.be.true; // Recommended\n * expect(true).to.not.be.false; // Not recommended\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.false; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(true, 'nooo why fail??').to.be.false;\n *\n * @name false\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('false', function () {\n this.assert(\n false === flag(this, 'object')\n , 'expected #{this} to be false'\n , 'expected #{this} to be true'\n , flag(this, 'negate') ? true : false\n );\n });\n\n /**\n * ### .null\n *\n * Asserts that the target is strictly (`===`) equal to `null`.\n *\n * expect(null).to.be.null;\n *\n * Add `.not` earlier in the chain to negate `.null`. However, it's often best\n * to assert that the target is equal to its expected value, rather than not\n * equal to `null`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.null; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(42, 'nooo why fail??').to.be.null;\n *\n * @name null\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('null', function () {\n this.assert(\n null === flag(this, 'object')\n , 'expected #{this} to be null'\n , 'expected #{this} not to be null'\n );\n });\n\n /**\n * ### .undefined\n *\n * Asserts that the target is strictly (`===`) equal to `undefined`.\n *\n * expect(undefined).to.be.undefined;\n *\n * Add `.not` earlier in the chain to negate `.undefined`. However, it's often\n * best to assert that the target is equal to its expected value, rather than\n * not equal to `undefined`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.undefined; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(42, 'nooo why fail??').to.be.undefined;\n *\n * @name undefined\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('undefined', function () {\n this.assert(\n undefined === flag(this, 'object')\n , 'expected #{this} to be undefined'\n , 'expected #{this} not to be undefined'\n );\n });\n\n /**\n * ### .NaN\n *\n * Asserts that the target is exactly `NaN`.\n *\n * expect(NaN).to.be.NaN;\n *\n * Add `.not` earlier in the chain to negate `.NaN`. However, it's often best\n * to assert that the target is equal to its expected value, rather than not\n * equal to `NaN`.\n *\n * expect('foo').to.equal('foo'); // Recommended\n * expect('foo').to.not.be.NaN; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(42, 'nooo why fail??').to.be.NaN;\n *\n * @name NaN\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('NaN', function () {\n this.assert(\n _.isNaN(flag(this, 'object'))\n , 'expected #{this} to be NaN'\n , 'expected #{this} not to be NaN'\n );\n });\n\n /**\n * ### .exist\n *\n * Asserts that the target is not strictly (`===`) equal to either `null` or\n * `undefined`. However, it's often best to assert that the target is equal to\n * its expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.exist; // Not recommended\n *\n * expect(0).to.equal(0); // Recommended\n * expect(0).to.exist; // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.exist`.\n *\n * expect(null).to.be.null; // Recommended\n * expect(null).to.not.exist; // Not recommended\n *\n * expect(undefined).to.be.undefined; // Recommended\n * expect(undefined).to.not.exist; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(null, 'nooo why fail??').to.exist;\n *\n * The alias `.exists` can be used interchangeably with `.exist`.\n *\n * @name exist\n * @alias exists\n * @namespace BDD\n * @api public\n */\n\n function assertExist () {\n var val = flag(this, 'object');\n this.assert(\n val !== null && val !== undefined\n , 'expected #{this} to exist'\n , 'expected #{this} to not exist'\n );\n }\n\n Assertion.addProperty('exist', assertExist);\n Assertion.addProperty('exists', assertExist);\n\n /**\n * ### .empty\n *\n * When the target is a string or array, `.empty` asserts that the target's\n * `length` property is strictly (`===`) equal to `0`.\n *\n * expect([]).to.be.empty;\n * expect('').to.be.empty;\n *\n * When the target is a map or set, `.empty` asserts that the target's `size`\n * property is strictly equal to `0`.\n *\n * expect(new Set()).to.be.empty;\n * expect(new Map()).to.be.empty;\n *\n * When the target is a non-function object, `.empty` asserts that the target\n * doesn't have any own enumerable properties. Properties with Symbol-based\n * keys are excluded from the count.\n *\n * expect({}).to.be.empty;\n *\n * Because `.empty` does different things based on the target's type, it's\n * important to check the target's type before using `.empty`. See the `.a`\n * doc for info on testing a target's type.\n *\n * expect([]).to.be.an('array').that.is.empty;\n *\n * Add `.not` earlier in the chain to negate `.empty`. However, it's often\n * best to assert that the target contains its expected number of values,\n * rather than asserting that it's not empty.\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.not.be.empty; // Not recommended\n *\n * expect(new Set([1, 2, 3])).to.have.property('size', 3); // Recommended\n * expect(new Set([1, 2, 3])).to.not.be.empty; // Not recommended\n *\n * expect(Object.keys({a: 1})).to.have.lengthOf(1); // Recommended\n * expect({a: 1}).to.not.be.empty; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect([1, 2, 3], 'nooo why fail??').to.be.empty;\n *\n * @name empty\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('empty', function () {\n var val = flag(this, 'object')\n , ssfi = flag(this, 'ssfi')\n , flagMsg = flag(this, 'message')\n , itemsCount;\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n switch (_.type(val).toLowerCase()) {\n case 'array':\n case 'string':\n itemsCount = val.length;\n break;\n case 'map':\n case 'set':\n itemsCount = val.size;\n break;\n case 'weakmap':\n case 'weakset':\n throw new AssertionError(\n flagMsg + '.empty was passed a weak collection',\n undefined,\n ssfi\n );\n case 'function':\n var msg = flagMsg + '.empty was passed a function ' + _.getName(val);\n throw new AssertionError(msg.trim(), undefined, ssfi);\n default:\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + '.empty was passed non-string primitive ' + _.inspect(val),\n undefined,\n ssfi\n );\n }\n itemsCount = Object.keys(val).length;\n }\n\n this.assert(\n 0 === itemsCount\n , 'expected #{this} to be empty'\n , 'expected #{this} not to be empty'\n );\n });\n\n /**\n * ### .arguments\n *\n * Asserts that the target is an `arguments` object.\n *\n * function test () {\n * expect(arguments).to.be.arguments;\n * }\n *\n * test();\n *\n * Add `.not` earlier in the chain to negate `.arguments`. However, it's often\n * best to assert which type the target is expected to be, rather than\n * asserting that it’s not an `arguments` object.\n *\n * expect('foo').to.be.a('string'); // Recommended\n * expect('foo').to.not.be.arguments; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({}, 'nooo why fail??').to.be.arguments;\n *\n * The alias `.Arguments` can be used interchangeably with `.arguments`.\n *\n * @name arguments\n * @alias Arguments\n * @namespace BDD\n * @api public\n */\n\n function checkArguments () {\n var obj = flag(this, 'object')\n , type = _.type(obj);\n this.assert(\n 'Arguments' === type\n , 'expected #{this} to be arguments but got ' + type\n , 'expected #{this} to not be arguments'\n );\n }\n\n Assertion.addProperty('arguments', checkArguments);\n Assertion.addProperty('Arguments', checkArguments);\n\n /**\n * ### .equal(val[, msg])\n *\n * Asserts that the target is strictly (`===`) equal to the given `val`.\n *\n * expect(1).to.equal(1);\n * expect('foo').to.equal('foo');\n *\n * Add `.deep` earlier in the chain to use deep equality instead. See the\n * `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target object deeply (but not strictly) equals `{a: 1}`\n * expect({a: 1}).to.deep.equal({a: 1});\n * expect({a: 1}).to.not.equal({a: 1});\n *\n * // Target array deeply (but not strictly) equals `[1, 2]`\n * expect([1, 2]).to.deep.equal([1, 2]);\n * expect([1, 2]).to.not.equal([1, 2]);\n *\n * Add `.not` earlier in the chain to negate `.equal`. However, it's often\n * best to assert that the target is equal to its expected value, rather than\n * not equal to one of countless unexpected values.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.equal(2); // Not recommended\n *\n * `.equal` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.equal(2, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.equal(2);\n *\n * The aliases `.equals` and `eq` can be used interchangeably with `.equal`.\n *\n * @name equal\n * @alias equals\n * @alias eq\n * @param {Mixed} val\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertEqual (val, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n if (flag(this, 'deep')) {\n var prevLockSsfi = flag(this, 'lockSsfi');\n flag(this, 'lockSsfi', true);\n this.eql(val);\n flag(this, 'lockSsfi', prevLockSsfi);\n } else {\n this.assert(\n val === obj\n , 'expected #{this} to equal #{exp}'\n , 'expected #{this} to not equal #{exp}'\n , val\n , this._obj\n , true\n );\n }\n }\n\n Assertion.addMethod('equal', assertEqual);\n Assertion.addMethod('equals', assertEqual);\n Assertion.addMethod('eq', assertEqual);\n\n /**\n * ### .eql(obj[, msg])\n *\n * Asserts that the target is deeply equal to the given `obj`. See the\n * `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target object is deeply (but not strictly) equal to {a: 1}\n * expect({a: 1}).to.eql({a: 1}).but.not.equal({a: 1});\n *\n * // Target array is deeply (but not strictly) equal to [1, 2]\n * expect([1, 2]).to.eql([1, 2]).but.not.equal([1, 2]);\n *\n * Add `.not` earlier in the chain to negate `.eql`. However, it's often best\n * to assert that the target is deeply equal to its expected value, rather\n * than not deeply equal to one of countless unexpected values.\n *\n * expect({a: 1}).to.eql({a: 1}); // Recommended\n * expect({a: 1}).to.not.eql({b: 2}); // Not recommended\n *\n * `.eql` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect({a: 1}).to.eql({b: 2}, 'nooo why fail??');\n * expect({a: 1}, 'nooo why fail??').to.eql({b: 2});\n *\n * The alias `.eqls` can be used interchangeably with `.eql`.\n *\n * The `.deep.equal` assertion is almost identical to `.eql` but with one\n * difference: `.deep.equal` causes deep equality comparisons to also be used\n * for any other assertions that follow in the chain.\n *\n * @name eql\n * @alias eqls\n * @param {Mixed} obj\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertEql(obj, msg) {\n if (msg) flag(this, 'message', msg);\n var eql = flag(this, 'eql');\n this.assert(\n eql(obj, flag(this, 'object'))\n , 'expected #{this} to deeply equal #{exp}'\n , 'expected #{this} to not deeply equal #{exp}'\n , obj\n , this._obj\n , true\n );\n }\n\n Assertion.addMethod('eql', assertEql);\n Assertion.addMethod('eqls', assertEql);\n\n /**\n * ### .above(n[, msg])\n *\n * Asserts that the target is a number or a date greater than the given number or date `n` respectively.\n * However, it's often best to assert that the target is equal to its expected\n * value.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.be.above(1); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is greater than the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.above(2); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.above(2); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.above`.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(1).to.not.be.above(2); // Not recommended\n *\n * `.above` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.be.above(2, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.above(2);\n *\n * The aliases `.gt` and `.greaterThan` can be used interchangeably with\n * `.above`.\n *\n * @name above\n * @alias gt\n * @alias greaterThan\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertAbove (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to above must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to above must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount > n\n , 'expected #{this} to have a ' + descriptor + ' above #{exp} but got #{act}'\n , 'expected #{this} to not have a ' + descriptor + ' above #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj > n\n , 'expected #{this} to be above #{exp}'\n , 'expected #{this} to be at most #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('above', assertAbove);\n Assertion.addMethod('gt', assertAbove);\n Assertion.addMethod('greaterThan', assertAbove);\n\n /**\n * ### .least(n[, msg])\n *\n * Asserts that the target is a number or a date greater than or equal to the given\n * number or date `n` respectively. However, it's often best to assert that the target is equal to\n * its expected value.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.be.at.least(1); // Not recommended\n * expect(2).to.be.at.least(2); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is greater than or equal to the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.at.least(2); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.at.least(2); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.least`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.at.least(2); // Not recommended\n *\n * `.least` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.be.at.least(2, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.at.least(2);\n *\n * The aliases `.gte` and `.greaterThanOrEqual` can be used interchangeably with\n * `.least`.\n *\n * @name least\n * @alias gte\n * @alias greaterThanOrEqual\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertLeast (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to least must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to least must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= n\n , 'expected #{this} to have a ' + descriptor + ' at least #{exp} but got #{act}'\n , 'expected #{this} to have a ' + descriptor + ' below #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj >= n\n , 'expected #{this} to be at least #{exp}'\n , 'expected #{this} to be below #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('least', assertLeast);\n Assertion.addMethod('gte', assertLeast);\n Assertion.addMethod('greaterThanOrEqual', assertLeast);\n\n /**\n * ### .below(n[, msg])\n *\n * Asserts that the target is a number or a date less than the given number or date `n` respectively.\n * However, it's often best to assert that the target is equal to its expected\n * value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.below(2); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is less than the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.below(4); // Not recommended\n *\n * expect([1, 2, 3]).to.have.length(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.below(4); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.below`.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.not.be.below(1); // Not recommended\n *\n * `.below` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(2).to.be.below(1, 'nooo why fail??');\n * expect(2, 'nooo why fail??').to.be.below(1);\n *\n * The aliases `.lt` and `.lessThan` can be used interchangeably with\n * `.below`.\n *\n * @name below\n * @alias lt\n * @alias lessThan\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertBelow (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to below must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to below must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount < n\n , 'expected #{this} to have a ' + descriptor + ' below #{exp} but got #{act}'\n , 'expected #{this} to not have a ' + descriptor + ' below #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj < n\n , 'expected #{this} to be below #{exp}'\n , 'expected #{this} to be at least #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('below', assertBelow);\n Assertion.addMethod('lt', assertBelow);\n Assertion.addMethod('lessThan', assertBelow);\n\n /**\n * ### .most(n[, msg])\n *\n * Asserts that the target is a number or a date less than or equal to the given number\n * or date `n` respectively. However, it's often best to assert that the target is equal to its\n * expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.at.most(2); // Not recommended\n * expect(1).to.be.at.most(1); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is less than or equal to the given number `n`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.at.most(4); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.at.most(4); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.most`.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.not.be.at.most(1); // Not recommended\n *\n * `.most` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(2).to.be.at.most(1, 'nooo why fail??');\n * expect(2, 'nooo why fail??').to.be.at.most(1);\n *\n * The aliases `.lte` and `.lessThanOrEqual` can be used interchangeably with\n * `.most`.\n *\n * @name most\n * @alias lte\n * @alias lessThanOrEqual\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertMost (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , nType = _.type(n).toLowerCase()\n , errorMessage\n , shouldThrow = true;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && nType !== 'date')) {\n errorMessage = msgPrefix + 'the argument to most must be a date';\n } else if (nType !== 'number' && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the argument to most must be a number';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount <= n\n , 'expected #{this} to have a ' + descriptor + ' at most #{exp} but got #{act}'\n , 'expected #{this} to have a ' + descriptor + ' above #{exp}'\n , n\n , itemsCount\n );\n } else {\n this.assert(\n obj <= n\n , 'expected #{this} to be at most #{exp}'\n , 'expected #{this} to be above #{exp}'\n , n\n );\n }\n }\n\n Assertion.addMethod('most', assertMost);\n Assertion.addMethod('lte', assertMost);\n Assertion.addMethod('lessThanOrEqual', assertMost);\n\n /**\n * ### .within(start, finish[, msg])\n *\n * Asserts that the target is a number or a date greater than or equal to the given\n * number or date `start`, and less than or equal to the given number or date `finish` respectively.\n * However, it's often best to assert that the target is equal to its expected\n * value.\n *\n * expect(2).to.equal(2); // Recommended\n * expect(2).to.be.within(1, 3); // Not recommended\n * expect(2).to.be.within(2, 3); // Not recommended\n * expect(2).to.be.within(1, 2); // Not recommended\n *\n * Add `.lengthOf` earlier in the chain to assert that the target's `length`\n * or `size` is greater than or equal to the given number `start`, and less\n * than or equal to the given number `finish`.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.have.lengthOf.within(2, 4); // Not recommended\n *\n * expect([1, 2, 3]).to.have.lengthOf(3); // Recommended\n * expect([1, 2, 3]).to.have.lengthOf.within(2, 4); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.within`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.within(2, 4); // Not recommended\n *\n * `.within` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(4).to.be.within(1, 3, 'nooo why fail??');\n * expect(4, 'nooo why fail??').to.be.within(1, 3);\n *\n * @name within\n * @param {Number} start lower bound inclusive\n * @param {Number} finish upper bound inclusive\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('within', function (start, finish, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , doLength = flag(this, 'doLength')\n , flagMsg = flag(this, 'message')\n , msgPrefix = ((flagMsg) ? flagMsg + ': ' : '')\n , ssfi = flag(this, 'ssfi')\n , objType = _.type(obj).toLowerCase()\n , startType = _.type(start).toLowerCase()\n , finishType = _.type(finish).toLowerCase()\n , errorMessage\n , shouldThrow = true\n , range = (startType === 'date' && finishType === 'date')\n ? start.toISOString() + '..' + finish.toISOString()\n : start + '..' + finish;\n\n if (doLength && objType !== 'map' && objType !== 'set') {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n }\n\n if (!doLength && (objType === 'date' && (startType !== 'date' || finishType !== 'date'))) {\n errorMessage = msgPrefix + 'the arguments to within must be dates';\n } else if ((startType !== 'number' || finishType !== 'number') && (doLength || objType === 'number')) {\n errorMessage = msgPrefix + 'the arguments to within must be numbers';\n } else if (!doLength && (objType !== 'date' && objType !== 'number')) {\n var printObj = (objType === 'string') ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + 'expected ' + printObj + ' to be a number or a date';\n } else {\n shouldThrow = false;\n }\n\n if (shouldThrow) {\n throw new AssertionError(errorMessage, undefined, ssfi);\n }\n\n if (doLength) {\n var descriptor = 'length'\n , itemsCount;\n if (objType === 'map' || objType === 'set') {\n descriptor = 'size';\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= start && itemsCount <= finish\n , 'expected #{this} to have a ' + descriptor + ' within ' + range\n , 'expected #{this} to not have a ' + descriptor + ' within ' + range\n );\n } else {\n this.assert(\n obj >= start && obj <= finish\n , 'expected #{this} to be within ' + range\n , 'expected #{this} to not be within ' + range\n );\n }\n });\n\n /**\n * ### .instanceof(constructor[, msg])\n *\n * Asserts that the target is an instance of the given `constructor`.\n *\n * function Cat () { }\n *\n * expect(new Cat()).to.be.an.instanceof(Cat);\n * expect([1, 2]).to.be.an.instanceof(Array);\n *\n * Add `.not` earlier in the chain to negate `.instanceof`.\n *\n * expect({a: 1}).to.not.be.an.instanceof(Array);\n *\n * `.instanceof` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(1).to.be.an.instanceof(Array, 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.an.instanceof(Array);\n *\n * Due to limitations in ES5, `.instanceof` may not always work as expected\n * when using a transpiler such as Babel or TypeScript. In particular, it may\n * produce unexpected results when subclassing built-in object such as\n * `Array`, `Error`, and `Map`. See your transpiler's docs for details:\n *\n * - ([Babel](https://babeljs.io/docs/usage/caveats/#classes))\n * - ([TypeScript](https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work))\n *\n * The alias `.instanceOf` can be used interchangeably with `.instanceof`.\n *\n * @name instanceof\n * @param {Constructor} constructor\n * @param {String} msg _optional_\n * @alias instanceOf\n * @namespace BDD\n * @api public\n */\n\n function assertInstanceOf (constructor, msg) {\n if (msg) flag(this, 'message', msg);\n\n var target = flag(this, 'object')\n var ssfi = flag(this, 'ssfi');\n var flagMsg = flag(this, 'message');\n\n try {\n var isInstanceOf = target instanceof constructor;\n } catch (err) {\n if (err instanceof TypeError) {\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n throw new AssertionError(\n flagMsg + 'The instanceof assertion needs a constructor but '\n + _.type(constructor) + ' was given.',\n undefined,\n ssfi\n );\n }\n throw err;\n }\n\n var name = _.getName(constructor);\n if (name === null) {\n name = 'an unnamed constructor';\n }\n\n this.assert(\n isInstanceOf\n , 'expected #{this} to be an instance of ' + name\n , 'expected #{this} to not be an instance of ' + name\n );\n };\n\n Assertion.addMethod('instanceof', assertInstanceOf);\n Assertion.addMethod('instanceOf', assertInstanceOf);\n\n /**\n * ### .property(name[, val[, msg]])\n *\n * Asserts that the target has a property with the given key `name`.\n *\n * expect({a: 1}).to.have.property('a');\n *\n * When `val` is provided, `.property` also asserts that the property's value\n * is equal to the given `val`.\n *\n * expect({a: 1}).to.have.property('a', 1);\n *\n * By default, strict (`===`) equality is used. Add `.deep` earlier in the\n * chain to use deep equality instead. See the `deep-eql` project page for\n * info on the deep equality algorithm: https://github.com/chaijs/deep-eql.\n *\n * // Target object deeply (but not strictly) has property `x: {a: 1}`\n * expect({x: {a: 1}}).to.have.deep.property('x', {a: 1});\n * expect({x: {a: 1}}).to.not.have.property('x', {a: 1});\n *\n * The target's enumerable and non-enumerable properties are always included\n * in the search. By default, both own and inherited properties are included.\n * Add `.own` earlier in the chain to exclude inherited properties from the\n * search.\n *\n * Object.prototype.b = 2;\n *\n * expect({a: 1}).to.have.own.property('a');\n * expect({a: 1}).to.have.own.property('a', 1);\n * expect({a: 1}).to.have.property('b');\n * expect({a: 1}).to.not.have.own.property('b');\n *\n * `.deep` and `.own` can be combined.\n *\n * expect({x: {a: 1}}).to.have.deep.own.property('x', {a: 1});\n *\n * Add `.nested` earlier in the chain to enable dot- and bracket-notation when\n * referencing nested properties.\n *\n * expect({a: {b: ['x', 'y']}}).to.have.nested.property('a.b[1]');\n * expect({a: {b: ['x', 'y']}}).to.have.nested.property('a.b[1]', 'y');\n *\n * If `.` or `[]` are part of an actual property name, they can be escaped by\n * adding two backslashes before them.\n *\n * expect({'.a': {'[b]': 'x'}}).to.have.nested.property('\\\\.a.\\\\[b\\\\]');\n *\n * `.deep` and `.nested` can be combined.\n *\n * expect({a: {b: [{c: 3}]}})\n * .to.have.deep.nested.property('a.b[0]', {c: 3});\n *\n * `.own` and `.nested` cannot be combined.\n *\n * Add `.not` earlier in the chain to negate `.property`.\n *\n * expect({a: 1}).to.not.have.property('b');\n *\n * However, it's dangerous to negate `.property` when providing `val`. The\n * problem is that it creates uncertain expectations by asserting that the\n * target either doesn't have a property with the given key `name`, or that it\n * does have a property with the given key `name` but its value isn't equal to\n * the given `val`. It's often best to identify the exact output that's\n * expected, and then write an assertion that only accepts that exact output.\n *\n * When the target isn't expected to have a property with the given key\n * `name`, it's often best to assert exactly that.\n *\n * expect({b: 2}).to.not.have.property('a'); // Recommended\n * expect({b: 2}).to.not.have.property('a', 1); // Not recommended\n *\n * When the target is expected to have a property with the given key `name`,\n * it's often best to assert that the property has its expected value, rather\n * than asserting that it doesn't have one of many unexpected values.\n *\n * expect({a: 3}).to.have.property('a', 3); // Recommended\n * expect({a: 3}).to.not.have.property('a', 1); // Not recommended\n *\n * `.property` changes the target of any assertions that follow in the chain\n * to be the value of the property from the original target object.\n *\n * expect({a: 1}).to.have.property('a').that.is.a('number');\n *\n * `.property` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing `val`, only use the\n * second form.\n *\n * // Recommended\n * expect({a: 1}).to.have.property('a', 2, 'nooo why fail??');\n * expect({a: 1}, 'nooo why fail??').to.have.property('a', 2);\n * expect({a: 1}, 'nooo why fail??').to.have.property('b');\n *\n * // Not recommended\n * expect({a: 1}).to.have.property('b', undefined, 'nooo why fail??');\n *\n * The above assertion isn't the same thing as not providing `val`. Instead,\n * it's asserting that the target object has a `b` property that's equal to\n * `undefined`.\n *\n * The assertions `.ownProperty` and `.haveOwnProperty` can be used\n * interchangeably with `.own.property`.\n *\n * @name property\n * @param {String} name\n * @param {Mixed} val (optional)\n * @param {String} msg _optional_\n * @returns value of property for chaining\n * @namespace BDD\n * @api public\n */\n\n function assertProperty (name, val, msg) {\n if (msg) flag(this, 'message', msg);\n\n var isNested = flag(this, 'nested')\n , isOwn = flag(this, 'own')\n , flagMsg = flag(this, 'message')\n , obj = flag(this, 'object')\n , ssfi = flag(this, 'ssfi')\n , nameType = typeof name;\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n\n if (isNested) {\n if (nameType !== 'string') {\n throw new AssertionError(\n flagMsg + 'the argument to property must be a string when using nested syntax',\n undefined,\n ssfi\n );\n }\n } else {\n if (nameType !== 'string' && nameType !== 'number' && nameType !== 'symbol') {\n throw new AssertionError(\n flagMsg + 'the argument to property must be a string, number, or symbol',\n undefined,\n ssfi\n );\n }\n }\n\n if (isNested && isOwn) {\n throw new AssertionError(\n flagMsg + 'The \"nested\" and \"own\" flags cannot be combined.',\n undefined,\n ssfi\n );\n }\n\n if (obj === null || obj === undefined) {\n throw new AssertionError(\n flagMsg + 'Target cannot be null or undefined.',\n undefined,\n ssfi\n );\n }\n\n var isDeep = flag(this, 'deep')\n , negate = flag(this, 'negate')\n , pathInfo = isNested ? _.getPathInfo(obj, name) : null\n , value = isNested ? pathInfo.value : obj[name]\n , isEql = isDeep ? flag(this, 'eql') : (val1, val2) => val1 === val2;;\n\n var descriptor = '';\n if (isDeep) descriptor += 'deep ';\n if (isOwn) descriptor += 'own ';\n if (isNested) descriptor += 'nested ';\n descriptor += 'property ';\n\n var hasProperty;\n if (isOwn) hasProperty = Object.prototype.hasOwnProperty.call(obj, name);\n else if (isNested) hasProperty = pathInfo.exists;\n else hasProperty = _.hasProperty(obj, name);\n\n // When performing a negated assertion for both name and val, merely having\n // a property with the given name isn't enough to cause the assertion to\n // fail. It must both have a property with the given name, and the value of\n // that property must equal the given val. Therefore, skip this assertion in\n // favor of the next.\n if (!negate || arguments.length === 1) {\n this.assert(\n hasProperty\n , 'expected #{this} to have ' + descriptor + _.inspect(name)\n , 'expected #{this} to not have ' + descriptor + _.inspect(name));\n }\n\n if (arguments.length > 1) {\n this.assert(\n hasProperty && isEql(val, value)\n , 'expected #{this} to have ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}'\n , 'expected #{this} to not have ' + descriptor + _.inspect(name) + ' of #{act}'\n , val\n , value\n );\n }\n\n flag(this, 'object', value);\n }\n\n Assertion.addMethod('property', assertProperty);\n\n function assertOwnProperty (name, value, msg) {\n flag(this, 'own', true);\n assertProperty.apply(this, arguments);\n }\n\n Assertion.addMethod('ownProperty', assertOwnProperty);\n Assertion.addMethod('haveOwnProperty', assertOwnProperty);\n\n /**\n * ### .ownPropertyDescriptor(name[, descriptor[, msg]])\n *\n * Asserts that the target has its own property descriptor with the given key\n * `name`. Enumerable and non-enumerable properties are included in the\n * search.\n *\n * expect({a: 1}).to.have.ownPropertyDescriptor('a');\n *\n * When `descriptor` is provided, `.ownPropertyDescriptor` also asserts that\n * the property's descriptor is deeply equal to the given `descriptor`. See\n * the `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * expect({a: 1}).to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 1,\n * });\n *\n * Add `.not` earlier in the chain to negate `.ownPropertyDescriptor`.\n *\n * expect({a: 1}).to.not.have.ownPropertyDescriptor('b');\n *\n * However, it's dangerous to negate `.ownPropertyDescriptor` when providing\n * a `descriptor`. The problem is that it creates uncertain expectations by\n * asserting that the target either doesn't have a property descriptor with\n * the given key `name`, or that it does have a property descriptor with the\n * given key `name` but it’s not deeply equal to the given `descriptor`. It's\n * often best to identify the exact output that's expected, and then write an\n * assertion that only accepts that exact output.\n *\n * When the target isn't expected to have a property descriptor with the given\n * key `name`, it's often best to assert exactly that.\n *\n * // Recommended\n * expect({b: 2}).to.not.have.ownPropertyDescriptor('a');\n *\n * // Not recommended\n * expect({b: 2}).to.not.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 1,\n * });\n *\n * When the target is expected to have a property descriptor with the given\n * key `name`, it's often best to assert that the property has its expected\n * descriptor, rather than asserting that it doesn't have one of many\n * unexpected descriptors.\n *\n * // Recommended\n * expect({a: 3}).to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 3,\n * });\n *\n * // Not recommended\n * expect({a: 3}).to.not.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 1,\n * });\n *\n * `.ownPropertyDescriptor` changes the target of any assertions that follow\n * in the chain to be the value of the property descriptor from the original\n * target object.\n *\n * expect({a: 1}).to.have.ownPropertyDescriptor('a')\n * .that.has.property('enumerable', true);\n *\n * `.ownPropertyDescriptor` accepts an optional `msg` argument which is a\n * custom error message to show when the assertion fails. The message can also\n * be given as the second argument to `expect`. When not providing\n * `descriptor`, only use the second form.\n *\n * // Recommended\n * expect({a: 1}).to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 2,\n * }, 'nooo why fail??');\n *\n * // Recommended\n * expect({a: 1}, 'nooo why fail??').to.have.ownPropertyDescriptor('a', {\n * configurable: true,\n * enumerable: true,\n * writable: true,\n * value: 2,\n * });\n *\n * // Recommended\n * expect({a: 1}, 'nooo why fail??').to.have.ownPropertyDescriptor('b');\n *\n * // Not recommended\n * expect({a: 1})\n * .to.have.ownPropertyDescriptor('b', undefined, 'nooo why fail??');\n *\n * The above assertion isn't the same thing as not providing `descriptor`.\n * Instead, it's asserting that the target object has a `b` property\n * descriptor that's deeply equal to `undefined`.\n *\n * The alias `.haveOwnPropertyDescriptor` can be used interchangeably with\n * `.ownPropertyDescriptor`.\n *\n * @name ownPropertyDescriptor\n * @alias haveOwnPropertyDescriptor\n * @param {String} name\n * @param {Object} descriptor _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertOwnPropertyDescriptor (name, descriptor, msg) {\n if (typeof descriptor === 'string') {\n msg = descriptor;\n descriptor = null;\n }\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);\n var eql = flag(this, 'eql');\n if (actualDescriptor && descriptor) {\n this.assert(\n eql(descriptor, actualDescriptor)\n , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to match ' + _.inspect(descriptor) + ', got ' + _.inspect(actualDescriptor)\n , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to not match ' + _.inspect(descriptor)\n , descriptor\n , actualDescriptor\n , true\n );\n } else {\n this.assert(\n actualDescriptor\n , 'expected #{this} to have an own property descriptor for ' + _.inspect(name)\n , 'expected #{this} to not have an own property descriptor for ' + _.inspect(name)\n );\n }\n flag(this, 'object', actualDescriptor);\n }\n\n Assertion.addMethod('ownPropertyDescriptor', assertOwnPropertyDescriptor);\n Assertion.addMethod('haveOwnPropertyDescriptor', assertOwnPropertyDescriptor);\n\n /**\n * ### .lengthOf(n[, msg])\n *\n * Asserts that the target's `length` or `size` is equal to the given number\n * `n`.\n *\n * expect([1, 2, 3]).to.have.lengthOf(3);\n * expect('foo').to.have.lengthOf(3);\n * expect(new Set([1, 2, 3])).to.have.lengthOf(3);\n * expect(new Map([['a', 1], ['b', 2], ['c', 3]])).to.have.lengthOf(3);\n *\n * Add `.not` earlier in the chain to negate `.lengthOf`. However, it's often\n * best to assert that the target's `length` property is equal to its expected\n * value, rather than not equal to one of many unexpected values.\n *\n * expect('foo').to.have.lengthOf(3); // Recommended\n * expect('foo').to.not.have.lengthOf(4); // Not recommended\n *\n * `.lengthOf` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect([1, 2, 3]).to.have.lengthOf(2, 'nooo why fail??');\n * expect([1, 2, 3], 'nooo why fail??').to.have.lengthOf(2);\n *\n * `.lengthOf` can also be used as a language chain, causing all `.above`,\n * `.below`, `.least`, `.most`, and `.within` assertions that follow in the\n * chain to use the target's `length` property as the target. However, it's\n * often best to assert that the target's `length` property is equal to its\n * expected length, rather than asserting that its `length` property falls\n * within some range of values.\n *\n * // Recommended\n * expect([1, 2, 3]).to.have.lengthOf(3);\n *\n * // Not recommended\n * expect([1, 2, 3]).to.have.lengthOf.above(2);\n * expect([1, 2, 3]).to.have.lengthOf.below(4);\n * expect([1, 2, 3]).to.have.lengthOf.at.least(3);\n * expect([1, 2, 3]).to.have.lengthOf.at.most(3);\n * expect([1, 2, 3]).to.have.lengthOf.within(2,4);\n *\n * Due to a compatibility issue, the alias `.length` can't be chained directly\n * off of an uninvoked method such as `.a`. Therefore, `.length` can't be used\n * interchangeably with `.lengthOf` in every situation. It's recommended to\n * always use `.lengthOf` instead of `.length`.\n *\n * expect([1, 2, 3]).to.have.a.length(3); // incompatible; throws error\n * expect([1, 2, 3]).to.have.a.lengthOf(3); // passes as expected\n *\n * @name lengthOf\n * @alias length\n * @param {Number} n\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertLengthChain () {\n flag(this, 'doLength', true);\n }\n\n function assertLength (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , objType = _.type(obj).toLowerCase()\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi')\n , descriptor = 'length'\n , itemsCount;\n\n switch (objType) {\n case 'map':\n case 'set':\n descriptor = 'size';\n itemsCount = obj.size;\n break;\n default:\n new Assertion(obj, flagMsg, ssfi, true).to.have.property('length');\n itemsCount = obj.length;\n }\n\n this.assert(\n itemsCount == n\n , 'expected #{this} to have a ' + descriptor + ' of #{exp} but got #{act}'\n , 'expected #{this} to not have a ' + descriptor + ' of #{act}'\n , n\n , itemsCount\n );\n }\n\n Assertion.addChainableMethod('length', assertLength, assertLengthChain);\n Assertion.addChainableMethod('lengthOf', assertLength, assertLengthChain);\n\n /**\n * ### .match(re[, msg])\n *\n * Asserts that the target matches the given regular expression `re`.\n *\n * expect('foobar').to.match(/^foo/);\n *\n * Add `.not` earlier in the chain to negate `.match`.\n *\n * expect('foobar').to.not.match(/taco/);\n *\n * `.match` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect('foobar').to.match(/taco/, 'nooo why fail??');\n * expect('foobar', 'nooo why fail??').to.match(/taco/);\n *\n * The alias `.matches` can be used interchangeably with `.match`.\n *\n * @name match\n * @alias matches\n * @param {RegExp} re\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n function assertMatch(re, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n this.assert(\n re.exec(obj)\n , 'expected #{this} to match ' + re\n , 'expected #{this} not to match ' + re\n );\n }\n\n Assertion.addMethod('match', assertMatch);\n Assertion.addMethod('matches', assertMatch);\n\n /**\n * ### .string(str[, msg])\n *\n * Asserts that the target string contains the given substring `str`.\n *\n * expect('foobar').to.have.string('bar');\n *\n * Add `.not` earlier in the chain to negate `.string`.\n *\n * expect('foobar').to.not.have.string('taco');\n *\n * `.string` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect('foobar').to.have.string('taco', 'nooo why fail??');\n * expect('foobar', 'nooo why fail??').to.have.string('taco');\n *\n * @name string\n * @param {String} str\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('string', function (str, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(obj, flagMsg, ssfi, true).is.a('string');\n\n this.assert(\n ~obj.indexOf(str)\n , 'expected #{this} to contain ' + _.inspect(str)\n , 'expected #{this} to not contain ' + _.inspect(str)\n );\n });\n\n /**\n * ### .keys(key1[, key2[, ...]])\n *\n * Asserts that the target object, array, map, or set has the given keys. Only\n * the target's own inherited properties are included in the search.\n *\n * When the target is an object or array, keys can be provided as one or more\n * string arguments, a single array argument, or a single object argument. In\n * the latter case, only the keys in the given object matter; the values are\n * ignored.\n *\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b');\n * expect(['x', 'y']).to.have.all.keys(0, 1);\n *\n * expect({a: 1, b: 2}).to.have.all.keys(['a', 'b']);\n * expect(['x', 'y']).to.have.all.keys([0, 1]);\n *\n * expect({a: 1, b: 2}).to.have.all.keys({a: 4, b: 5}); // ignore 4 and 5\n * expect(['x', 'y']).to.have.all.keys({0: 4, 1: 5}); // ignore 4 and 5\n *\n * When the target is a map or set, each key must be provided as a separate\n * argument.\n *\n * expect(new Map([['a', 1], ['b', 2]])).to.have.all.keys('a', 'b');\n * expect(new Set(['a', 'b'])).to.have.all.keys('a', 'b');\n *\n * Because `.keys` does different things based on the target's type, it's\n * important to check the target's type before using `.keys`. See the `.a` doc\n * for info on testing a target's type.\n *\n * expect({a: 1, b: 2}).to.be.an('object').that.has.all.keys('a', 'b');\n *\n * By default, strict (`===`) equality is used to compare keys of maps and\n * sets. Add `.deep` earlier in the chain to use deep equality instead. See\n * the `deep-eql` project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target set deeply (but not strictly) has key `{a: 1}`\n * expect(new Set([{a: 1}])).to.have.all.deep.keys([{a: 1}]);\n * expect(new Set([{a: 1}])).to.not.have.all.keys([{a: 1}]);\n *\n * By default, the target must have all of the given keys and no more. Add\n * `.any` earlier in the chain to only require that the target have at least\n * one of the given keys. Also, add `.not` earlier in the chain to negate\n * `.keys`. It's often best to add `.any` when negating `.keys`, and to use\n * `.all` when asserting `.keys` without negation.\n *\n * When negating `.keys`, `.any` is preferred because `.not.any.keys` asserts\n * exactly what's expected of the output, whereas `.not.all.keys` creates\n * uncertain expectations.\n *\n * // Recommended; asserts that target doesn't have any of the given keys\n * expect({a: 1, b: 2}).to.not.have.any.keys('c', 'd');\n *\n * // Not recommended; asserts that target doesn't have all of the given\n * // keys but may or may not have some of them\n * expect({a: 1, b: 2}).to.not.have.all.keys('c', 'd');\n *\n * When asserting `.keys` without negation, `.all` is preferred because\n * `.all.keys` asserts exactly what's expected of the output, whereas\n * `.any.keys` creates uncertain expectations.\n *\n * // Recommended; asserts that target has all the given keys\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b');\n *\n * // Not recommended; asserts that target has at least one of the given\n * // keys but may or may not have more of them\n * expect({a: 1, b: 2}).to.have.any.keys('a', 'b');\n *\n * Note that `.all` is used by default when neither `.all` nor `.any` appear\n * earlier in the chain. However, it's often best to add `.all` anyway because\n * it improves readability.\n *\n * // Both assertions are identical\n * expect({a: 1, b: 2}).to.have.all.keys('a', 'b'); // Recommended\n * expect({a: 1, b: 2}).to.have.keys('a', 'b'); // Not recommended\n *\n * Add `.include` earlier in the chain to require that the target's keys be a\n * superset of the expected keys, rather than identical sets.\n *\n * // Target object's keys are a superset of ['a', 'b'] but not identical\n * expect({a: 1, b: 2, c: 3}).to.include.all.keys('a', 'b');\n * expect({a: 1, b: 2, c: 3}).to.not.have.all.keys('a', 'b');\n *\n * However, if `.any` and `.include` are combined, only the `.any` takes\n * effect. The `.include` is ignored in this case.\n *\n * // Both assertions are identical\n * expect({a: 1}).to.have.any.keys('a', 'b');\n * expect({a: 1}).to.include.any.keys('a', 'b');\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({a: 1}, 'nooo why fail??').to.have.key('b');\n *\n * The alias `.key` can be used interchangeably with `.keys`.\n *\n * @name keys\n * @alias key\n * @param {...String|Array|Object} keys\n * @namespace BDD\n * @api public\n */\n\n function assertKeys (keys) {\n var obj = flag(this, 'object')\n , objType = _.type(obj)\n , keysType = _.type(keys)\n , ssfi = flag(this, 'ssfi')\n , isDeep = flag(this, 'deep')\n , str\n , deepStr = ''\n , actual\n , ok = true\n , flagMsg = flag(this, 'message');\n\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n var mixedArgsMsg = flagMsg + 'when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments';\n\n if (objType === 'Map' || objType === 'Set') {\n deepStr = isDeep ? 'deeply ' : '';\n actual = [];\n\n // Map and Set '.keys' aren't supported in IE 11. Therefore, use .forEach.\n obj.forEach(function (val, key) { actual.push(key) });\n\n if (keysType !== 'Array') {\n keys = Array.prototype.slice.call(arguments);\n }\n } else {\n actual = _.getOwnEnumerableProperties(obj);\n\n switch (keysType) {\n case 'Array':\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, undefined, ssfi);\n }\n break;\n case 'Object':\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, undefined, ssfi);\n }\n keys = Object.keys(keys);\n break;\n default:\n keys = Array.prototype.slice.call(arguments);\n }\n\n // Only stringify non-Symbols because Symbols would become \"Symbol()\"\n keys = keys.map(function (val) {\n return typeof val === 'symbol' ? val : String(val);\n });\n }\n\n if (!keys.length) {\n throw new AssertionError(flagMsg + 'keys required', undefined, ssfi);\n }\n\n var len = keys.length\n , any = flag(this, 'any')\n , all = flag(this, 'all')\n , expected = keys\n , isEql = isDeep ? flag(this, 'eql') : (val1, val2) => val1 === val2;\n\n if (!any && !all) {\n all = true;\n }\n\n // Has any\n if (any) {\n ok = expected.some(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n }\n\n // Has all\n if (all) {\n ok = expected.every(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n\n if (!flag(this, 'contains')) {\n ok = ok && keys.length == actual.length;\n }\n }\n\n // Key string\n if (len > 1) {\n keys = keys.map(function(key) {\n return _.inspect(key);\n });\n var last = keys.pop();\n if (all) {\n str = keys.join(', ') + ', and ' + last;\n }\n if (any) {\n str = keys.join(', ') + ', or ' + last;\n }\n } else {\n str = _.inspect(keys[0]);\n }\n\n // Form\n str = (len > 1 ? 'keys ' : 'key ') + str;\n\n // Have / include\n str = (flag(this, 'contains') ? 'contain ' : 'have ') + str;\n\n // Assertion\n this.assert(\n ok\n , 'expected #{this} to ' + deepStr + str\n , 'expected #{this} to not ' + deepStr + str\n , expected.slice(0).sort(_.compareByInspect)\n , actual.sort(_.compareByInspect)\n , true\n );\n }\n\n Assertion.addMethod('keys', assertKeys);\n Assertion.addMethod('key', assertKeys);\n\n /**\n * ### .throw([errorLike], [errMsgMatcher], [msg])\n *\n * When no arguments are provided, `.throw` invokes the target function and\n * asserts that an error is thrown.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw();\n *\n * When one argument is provided, and it's an error constructor, `.throw`\n * invokes the target function and asserts that an error is thrown that's an\n * instance of that error constructor.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw(TypeError);\n *\n * When one argument is provided, and it's an error instance, `.throw` invokes\n * the target function and asserts that an error is thrown that's strictly\n * (`===`) equal to that error instance.\n *\n * var err = new TypeError('Illegal salmon!');\n * var badFn = function () { throw err; };\n *\n * expect(badFn).to.throw(err);\n *\n * When one argument is provided, and it's a string, `.throw` invokes the\n * target function and asserts that an error is thrown with a message that\n * contains that string.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw('salmon');\n *\n * When one argument is provided, and it's a regular expression, `.throw`\n * invokes the target function and asserts that an error is thrown with a\n * message that matches that regular expression.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw(/salmon/);\n *\n * When two arguments are provided, and the first is an error instance or\n * constructor, and the second is a string or regular expression, `.throw`\n * invokes the function and asserts that an error is thrown that fulfills both\n * conditions as described above.\n *\n * var err = new TypeError('Illegal salmon!');\n * var badFn = function () { throw err; };\n *\n * expect(badFn).to.throw(TypeError, 'salmon');\n * expect(badFn).to.throw(TypeError, /salmon/);\n * expect(badFn).to.throw(err, 'salmon');\n * expect(badFn).to.throw(err, /salmon/);\n *\n * Add `.not` earlier in the chain to negate `.throw`.\n *\n * var goodFn = function () {};\n *\n * expect(goodFn).to.not.throw();\n *\n * However, it's dangerous to negate `.throw` when providing any arguments.\n * The problem is that it creates uncertain expectations by asserting that the\n * target either doesn't throw an error, or that it throws an error but of a\n * different type than the given type, or that it throws an error of the given\n * type but with a message that doesn't include the given string. It's often\n * best to identify the exact output that's expected, and then write an\n * assertion that only accepts that exact output.\n *\n * When the target isn't expected to throw an error, it's often best to assert\n * exactly that.\n *\n * var goodFn = function () {};\n *\n * expect(goodFn).to.not.throw(); // Recommended\n * expect(goodFn).to.not.throw(ReferenceError, 'x'); // Not recommended\n *\n * When the target is expected to throw an error, it's often best to assert\n * that the error is of its expected type, and has a message that includes an\n * expected string, rather than asserting that it doesn't have one of many\n * unexpected types, and doesn't have a message that includes some string.\n *\n * var badFn = function () { throw new TypeError('Illegal salmon!'); };\n *\n * expect(badFn).to.throw(TypeError, 'salmon'); // Recommended\n * expect(badFn).to.not.throw(ReferenceError, 'x'); // Not recommended\n *\n * `.throw` changes the target of any assertions that follow in the chain to\n * be the error object that's thrown.\n *\n * var err = new TypeError('Illegal salmon!');\n * err.code = 42;\n * var badFn = function () { throw err; };\n *\n * expect(badFn).to.throw(TypeError).with.property('code', 42);\n *\n * `.throw` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`. When not providing two arguments, always use\n * the second form.\n *\n * var goodFn = function () {};\n *\n * expect(goodFn).to.throw(TypeError, 'x', 'nooo why fail??');\n * expect(goodFn, 'nooo why fail??').to.throw();\n *\n * Due to limitations in ES5, `.throw` may not always work as expected when\n * using a transpiler such as Babel or TypeScript. In particular, it may\n * produce unexpected results when subclassing the built-in `Error` object and\n * then passing the subclassed constructor to `.throw`. See your transpiler's\n * docs for details:\n *\n * - ([Babel](https://babeljs.io/docs/usage/caveats/#classes))\n * - ([TypeScript](https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work))\n *\n * Beware of some common mistakes when using the `throw` assertion. One common\n * mistake is to accidentally invoke the function yourself instead of letting\n * the `throw` assertion invoke the function for you. For example, when\n * testing if a function named `fn` throws, provide `fn` instead of `fn()` as\n * the target for the assertion.\n *\n * expect(fn).to.throw(); // Good! Tests `fn` as desired\n * expect(fn()).to.throw(); // Bad! Tests result of `fn()`, not `fn`\n *\n * If you need to assert that your function `fn` throws when passed certain\n * arguments, then wrap a call to `fn` inside of another function.\n *\n * expect(function () { fn(42); }).to.throw(); // Function expression\n * expect(() => fn(42)).to.throw(); // ES6 arrow function\n *\n * Another common mistake is to provide an object method (or any stand-alone\n * function that relies on `this`) as the target of the assertion. Doing so is\n * problematic because the `this` context will be lost when the function is\n * invoked by `.throw`; there's no way for it to know what `this` is supposed\n * to be. There are two ways around this problem. One solution is to wrap the\n * method or function call inside of another function. Another solution is to\n * use `bind`.\n *\n * expect(function () { cat.meow(); }).to.throw(); // Function expression\n * expect(() => cat.meow()).to.throw(); // ES6 arrow function\n * expect(cat.meow.bind(cat)).to.throw(); // Bind\n *\n * Finally, it's worth mentioning that it's a best practice in JavaScript to\n * only throw `Error` and derivatives of `Error` such as `ReferenceError`,\n * `TypeError`, and user-defined objects that extend `Error`. No other type of\n * value will generate a stack trace when initialized. With that said, the\n * `throw` assertion does technically support any type of value being thrown,\n * not just `Error` and its derivatives.\n *\n * The aliases `.throws` and `.Throw` can be used interchangeably with\n * `.throw`.\n *\n * @name throw\n * @alias throws\n * @alias Throw\n * @param {Error|ErrorConstructor} errorLike\n * @param {String|RegExp} errMsgMatcher error message\n * @param {String} msg _optional_\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @returns error for chaining (null if no error)\n * @namespace BDD\n * @api public\n */\n\n function assertThrows (errorLike, errMsgMatcher, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , ssfi = flag(this, 'ssfi')\n , flagMsg = flag(this, 'message')\n , negate = flag(this, 'negate') || false;\n new Assertion(obj, flagMsg, ssfi, true).is.a('function');\n\n if (errorLike instanceof RegExp || typeof errorLike === 'string') {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n\n var caughtErr;\n try {\n obj();\n } catch (err) {\n caughtErr = err;\n }\n\n // If we have the negate flag enabled and at least one valid argument it means we do expect an error\n // but we want it to match a given set of criteria\n var everyArgIsUndefined = errorLike === undefined && errMsgMatcher === undefined;\n\n // If we've got the negate flag enabled and both args, we should only fail if both aren't compatible\n // See Issue #551 and PR #683@GitHub\n var everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n var errorLikeFail = false;\n var errMsgMatcherFail = false;\n\n // Checking if error was thrown\n if (everyArgIsUndefined || !everyArgIsUndefined && !negate) {\n // We need this to display results correctly according to their types\n var errorLikeString = 'an error';\n if (errorLike instanceof Error) {\n errorLikeString = '#{exp}';\n } else if (errorLike) {\n errorLikeString = _.checkError.getConstructorName(errorLike);\n }\n\n this.assert(\n caughtErr\n , 'expected #{this} to throw ' + errorLikeString\n , 'expected #{this} to not throw an error but #{act} was thrown'\n , errorLike && errorLike.toString()\n , (caughtErr instanceof Error ?\n caughtErr.toString() : (typeof caughtErr === 'string' ? caughtErr : caughtErr &&\n _.checkError.getConstructorName(caughtErr)))\n );\n }\n\n if (errorLike && caughtErr) {\n // We should compare instances only if `errorLike` is an instance of `Error`\n if (errorLike instanceof Error) {\n var isCompatibleInstance = _.checkError.compatibleInstance(caughtErr, errorLike);\n\n if (isCompatibleInstance === negate) {\n // These checks were created to ensure we won't fail too soon when we've got both args and a negate\n // See Issue #551 and PR #683@GitHub\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp}' + (caughtErr && !negate ? ' but #{act} was thrown' : '')\n , errorLike.toString()\n , caughtErr.toString()\n );\n }\n }\n }\n\n var isCompatibleConstructor = _.checkError.compatibleConstructor(caughtErr, errorLike);\n if (isCompatibleConstructor === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp}' + (caughtErr ? ' but #{act} was thrown' : '')\n , (errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike))\n , (caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr))\n );\n }\n }\n }\n\n if (caughtErr && errMsgMatcher !== undefined && errMsgMatcher !== null) {\n // Here we check compatible messages\n var placeholder = 'including';\n if (errMsgMatcher instanceof RegExp) {\n placeholder = 'matching'\n }\n\n var isCompatibleMessage = _.checkError.compatibleMessage(caughtErr, errMsgMatcher);\n if (isCompatibleMessage === negate) {\n if (everyArgIsDefined && negate) {\n errMsgMatcherFail = true;\n } else {\n this.assert(\n negate\n , 'expected #{this} to throw error ' + placeholder + ' #{exp} but got #{act}'\n , 'expected #{this} to throw error not ' + placeholder + ' #{exp}'\n , errMsgMatcher\n , _.checkError.getMessage(caughtErr)\n );\n }\n }\n }\n\n // If both assertions failed and both should've matched we throw an error\n if (errorLikeFail && errMsgMatcherFail) {\n this.assert(\n negate\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp}' + (caughtErr ? ' but #{act} was thrown' : '')\n , (errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike))\n , (caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr))\n );\n }\n\n flag(this, 'object', caughtErr);\n };\n\n Assertion.addMethod('throw', assertThrows);\n Assertion.addMethod('throws', assertThrows);\n Assertion.addMethod('Throw', assertThrows);\n\n /**\n * ### .respondTo(method[, msg])\n *\n * When the target is a non-function object, `.respondTo` asserts that the\n * target has a method with the given name `method`. The method can be own or\n * inherited, and it can be enumerable or non-enumerable.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n *\n * expect(new Cat()).to.respondTo('meow');\n *\n * When the target is a function, `.respondTo` asserts that the target's\n * `prototype` property has a method with the given name `method`. Again, the\n * method can be own or inherited, and it can be enumerable or non-enumerable.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n *\n * expect(Cat).to.respondTo('meow');\n *\n * Add `.itself` earlier in the chain to force `.respondTo` to treat the\n * target as a non-function object, even if it's a function. Thus, it asserts\n * that the target has a method with the given name `method`, rather than\n * asserting that the target's `prototype` property has a method with the\n * given name `method`.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n * Cat.hiss = function () {};\n *\n * expect(Cat).itself.to.respondTo('hiss').but.not.respondTo('meow');\n *\n * When not adding `.itself`, it's important to check the target's type before\n * using `.respondTo`. See the `.a` doc for info on checking a target's type.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n *\n * expect(new Cat()).to.be.an('object').that.respondsTo('meow');\n *\n * Add `.not` earlier in the chain to negate `.respondTo`.\n *\n * function Dog () {}\n * Dog.prototype.bark = function () {};\n *\n * expect(new Dog()).to.not.respondTo('meow');\n *\n * `.respondTo` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect({}).to.respondTo('meow', 'nooo why fail??');\n * expect({}, 'nooo why fail??').to.respondTo('meow');\n *\n * The alias `.respondsTo` can be used interchangeably with `.respondTo`.\n *\n * @name respondTo\n * @alias respondsTo\n * @param {String} method\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function respondTo (method, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , itself = flag(this, 'itself')\n , context = ('function' === typeof obj && !itself)\n ? obj.prototype[method]\n : obj[method];\n\n this.assert(\n 'function' === typeof context\n , 'expected #{this} to respond to ' + _.inspect(method)\n , 'expected #{this} to not respond to ' + _.inspect(method)\n );\n }\n\n Assertion.addMethod('respondTo', respondTo);\n Assertion.addMethod('respondsTo', respondTo);\n\n /**\n * ### .itself\n *\n * Forces all `.respondTo` assertions that follow in the chain to behave as if\n * the target is a non-function object, even if it's a function. Thus, it\n * causes `.respondTo` to assert that the target has a method with the given\n * name, rather than asserting that the target's `prototype` property has a\n * method with the given name.\n *\n * function Cat () {}\n * Cat.prototype.meow = function () {};\n * Cat.hiss = function () {};\n *\n * expect(Cat).itself.to.respondTo('hiss').but.not.respondTo('meow');\n *\n * @name itself\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('itself', function () {\n flag(this, 'itself', true);\n });\n\n /**\n * ### .satisfy(matcher[, msg])\n *\n * Invokes the given `matcher` function with the target being passed as the\n * first argument, and asserts that the value returned is truthy.\n *\n * expect(1).to.satisfy(function(num) {\n * return num > 0;\n * });\n *\n * Add `.not` earlier in the chain to negate `.satisfy`.\n *\n * expect(1).to.not.satisfy(function(num) {\n * return num > 2;\n * });\n *\n * `.satisfy` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(1).to.satisfy(function(num) {\n * return num > 2;\n * }, 'nooo why fail??');\n *\n * expect(1, 'nooo why fail??').to.satisfy(function(num) {\n * return num > 2;\n * });\n *\n * The alias `.satisfies` can be used interchangeably with `.satisfy`.\n *\n * @name satisfy\n * @alias satisfies\n * @param {Function} matcher\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function satisfy (matcher, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n var result = matcher(obj);\n this.assert(\n result\n , 'expected #{this} to satisfy ' + _.objDisplay(matcher)\n , 'expected #{this} to not satisfy' + _.objDisplay(matcher)\n , flag(this, 'negate') ? false : true\n , result\n );\n }\n\n Assertion.addMethod('satisfy', satisfy);\n Assertion.addMethod('satisfies', satisfy);\n\n /**\n * ### .closeTo(expected, delta[, msg])\n *\n * Asserts that the target is a number that's within a given +/- `delta` range\n * of the given number `expected`. However, it's often best to assert that the\n * target is equal to its expected value.\n *\n * // Recommended\n * expect(1.5).to.equal(1.5);\n *\n * // Not recommended\n * expect(1.5).to.be.closeTo(1, 0.5);\n * expect(1.5).to.be.closeTo(2, 0.5);\n * expect(1.5).to.be.closeTo(1, 1);\n *\n * Add `.not` earlier in the chain to negate `.closeTo`.\n *\n * expect(1.5).to.equal(1.5); // Recommended\n * expect(1.5).to.not.be.closeTo(3, 1); // Not recommended\n *\n * `.closeTo` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect(1.5).to.be.closeTo(3, 1, 'nooo why fail??');\n * expect(1.5, 'nooo why fail??').to.be.closeTo(3, 1);\n *\n * The alias `.approximately` can be used interchangeably with `.closeTo`.\n *\n * @name closeTo\n * @alias approximately\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function closeTo(expected, delta, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n\n new Assertion(obj, flagMsg, ssfi, true).is.a('number');\n if (typeof expected !== 'number' || typeof delta !== 'number') {\n flagMsg = flagMsg ? flagMsg + ': ' : '';\n var deltaMessage = delta === undefined ? \", and a delta is required\" : \"\";\n throw new AssertionError(\n flagMsg + 'the arguments to closeTo or approximately must be numbers' + deltaMessage,\n undefined,\n ssfi\n );\n }\n\n this.assert(\n Math.abs(obj - expected) <= delta\n , 'expected #{this} to be close to ' + expected + ' +/- ' + delta\n , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta\n );\n }\n\n Assertion.addMethod('closeTo', closeTo);\n Assertion.addMethod('approximately', closeTo);\n\n // Note: Duplicates are ignored if testing for inclusion instead of sameness.\n function isSubsetOf(subset, superset, cmp, contains, ordered) {\n if (!contains) {\n if (subset.length !== superset.length) return false;\n superset = superset.slice();\n }\n\n return subset.every(function(elem, idx) {\n if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx];\n\n if (!cmp) {\n var matchIdx = superset.indexOf(elem);\n if (matchIdx === -1) return false;\n\n // Remove match from superset so not counted twice if duplicate in subset.\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n }\n\n return superset.some(function(elem2, matchIdx) {\n if (!cmp(elem, elem2)) return false;\n\n // Remove match from superset so not counted twice if duplicate in subset.\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n });\n });\n }\n\n /**\n * ### .members(set[, msg])\n *\n * Asserts that the target array has the same members as the given array\n * `set`.\n *\n * expect([1, 2, 3]).to.have.members([2, 1, 3]);\n * expect([1, 2, 2]).to.have.members([2, 1, 2]);\n *\n * By default, members are compared using strict (`===`) equality. Add `.deep`\n * earlier in the chain to use deep equality instead. See the `deep-eql`\n * project page for info on the deep equality algorithm:\n * https://github.com/chaijs/deep-eql.\n *\n * // Target array deeply (but not strictly) has member `{a: 1}`\n * expect([{a: 1}]).to.have.deep.members([{a: 1}]);\n * expect([{a: 1}]).to.not.have.members([{a: 1}]);\n *\n * By default, order doesn't matter. Add `.ordered` earlier in the chain to\n * require that members appear in the same order.\n *\n * expect([1, 2, 3]).to.have.ordered.members([1, 2, 3]);\n * expect([1, 2, 3]).to.have.members([2, 1, 3])\n * .but.not.ordered.members([2, 1, 3]);\n *\n * By default, both arrays must be the same size. Add `.include` earlier in\n * the chain to require that the target's members be a superset of the\n * expected members. Note that duplicates are ignored in the subset when\n * `.include` is added.\n *\n * // Target array is a superset of [1, 2] but not identical\n * expect([1, 2, 3]).to.include.members([1, 2]);\n * expect([1, 2, 3]).to.not.have.members([1, 2]);\n *\n * // Duplicates in the subset are ignored\n * expect([1, 2, 3]).to.include.members([1, 2, 2, 2]);\n *\n * `.deep`, `.ordered`, and `.include` can all be combined. However, if\n * `.include` and `.ordered` are combined, the ordering begins at the start of\n * both arrays.\n *\n * expect([{a: 1}, {b: 2}, {c: 3}])\n * .to.include.deep.ordered.members([{a: 1}, {b: 2}])\n * .but.not.include.deep.ordered.members([{b: 2}, {c: 3}]);\n *\n * Add `.not` earlier in the chain to negate `.members`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the target array doesn't have all of the same members as\n * the given array `set` but may or may not have some of them. It's often best\n * to identify the exact output that's expected, and then write an assertion\n * that only accepts that exact output.\n *\n * expect([1, 2]).to.not.include(3).and.not.include(4); // Recommended\n * expect([1, 2]).to.not.have.members([3, 4]); // Not recommended\n *\n * `.members` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`.\n *\n * expect([1, 2]).to.have.members([1, 2, 3], 'nooo why fail??');\n * expect([1, 2], 'nooo why fail??').to.have.members([1, 2, 3]);\n *\n * @name members\n * @param {Array} set\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('members', function (subset, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n\n new Assertion(obj, flagMsg, ssfi, true).to.be.an('array');\n new Assertion(subset, flagMsg, ssfi, true).to.be.an('array');\n\n var contains = flag(this, 'contains');\n var ordered = flag(this, 'ordered');\n\n var subject, failMsg, failNegateMsg;\n\n if (contains) {\n subject = ordered ? 'an ordered superset' : 'a superset';\n failMsg = 'expected #{this} to be ' + subject + ' of #{exp}';\n failNegateMsg = 'expected #{this} to not be ' + subject + ' of #{exp}';\n } else {\n subject = ordered ? 'ordered members' : 'members';\n failMsg = 'expected #{this} to have the same ' + subject + ' as #{exp}';\n failNegateMsg = 'expected #{this} to not have the same ' + subject + ' as #{exp}';\n }\n\n var cmp = flag(this, 'deep') ? flag(this, 'eql') : undefined;\n\n this.assert(\n isSubsetOf(subset, obj, cmp, contains, ordered)\n , failMsg\n , failNegateMsg\n , subset\n , obj\n , true\n );\n });\n\n /**\n * ### .oneOf(list[, msg])\n *\n * Asserts that the target is a member of the given array `list`. However,\n * it's often best to assert that the target is equal to its expected value.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.be.oneOf([1, 2, 3]); // Not recommended\n *\n * Comparisons are performed using strict (`===`) equality.\n *\n * Add `.not` earlier in the chain to negate `.oneOf`.\n *\n * expect(1).to.equal(1); // Recommended\n * expect(1).to.not.be.oneOf([2, 3, 4]); // Not recommended\n *\n * It can also be chained with `.contain` or `.include`, which will work with\n * both arrays and strings:\n *\n * expect('Today is sunny').to.contain.oneOf(['sunny', 'cloudy'])\n * expect('Today is rainy').to.not.contain.oneOf(['sunny', 'cloudy'])\n * expect([1,2,3]).to.contain.oneOf([3,4,5])\n * expect([1,2,3]).to.not.contain.oneOf([4,5,6])\n *\n * `.oneOf` accepts an optional `msg` argument which is a custom error message\n * to show when the assertion fails. The message can also be given as the\n * second argument to `expect`.\n *\n * expect(1).to.be.oneOf([2, 3, 4], 'nooo why fail??');\n * expect(1, 'nooo why fail??').to.be.oneOf([2, 3, 4]);\n *\n * @name oneOf\n * @param {Array<*>} list\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function oneOf (list, msg) {\n if (msg) flag(this, 'message', msg);\n var expected = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi')\n , contains = flag(this, 'contains')\n , isDeep = flag(this, 'deep')\n , eql = flag(this, 'eql');\n new Assertion(list, flagMsg, ssfi, true).to.be.an('array');\n\n if (contains) {\n this.assert(\n list.some(function(possibility) { return expected.indexOf(possibility) > -1 })\n , 'expected #{this} to contain one of #{exp}'\n , 'expected #{this} to not contain one of #{exp}'\n , list\n , expected\n );\n } else {\n if (isDeep) {\n this.assert(\n list.some(function(possibility) { return eql(expected, possibility) })\n , 'expected #{this} to deeply equal one of #{exp}'\n , 'expected #{this} to deeply equal one of #{exp}'\n , list\n , expected\n );\n } else {\n this.assert(\n list.indexOf(expected) > -1\n , 'expected #{this} to be one of #{exp}'\n , 'expected #{this} to not be one of #{exp}'\n , list\n , expected\n );\n }\n }\n }\n\n Assertion.addMethod('oneOf', oneOf);\n\n /**\n * ### .change(subject[, prop[, msg]])\n *\n * When one argument is provided, `.change` asserts that the given function\n * `subject` returns a different value when it's invoked before the target\n * function compared to when it's invoked afterward. However, it's often best\n * to assert that `subject` is equal to its expected value.\n *\n * var dots = ''\n * , addDot = function () { dots += '.'; }\n * , getDots = function () { return dots; };\n *\n * // Recommended\n * expect(getDots()).to.equal('');\n * addDot();\n * expect(getDots()).to.equal('.');\n *\n * // Not recommended\n * expect(addDot).to.change(getDots);\n *\n * When two arguments are provided, `.change` asserts that the value of the\n * given object `subject`'s `prop` property is different before invoking the\n * target function compared to afterward.\n *\n * var myObj = {dots: ''}\n * , addDot = function () { myObj.dots += '.'; };\n *\n * // Recommended\n * expect(myObj).to.have.property('dots', '');\n * addDot();\n * expect(myObj).to.have.property('dots', '.');\n *\n * // Not recommended\n * expect(addDot).to.change(myObj, 'dots');\n *\n * Strict (`===`) equality is used to compare before and after values.\n *\n * Add `.not` earlier in the chain to negate `.change`.\n *\n * var dots = ''\n * , noop = function () {}\n * , getDots = function () { return dots; };\n *\n * expect(noop).to.not.change(getDots);\n *\n * var myObj = {dots: ''}\n * , noop = function () {};\n *\n * expect(noop).to.not.change(myObj, 'dots');\n *\n * `.change` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing two arguments, always\n * use the second form.\n *\n * var myObj = {dots: ''}\n * , addDot = function () { myObj.dots += '.'; };\n *\n * expect(addDot).to.not.change(myObj, 'dots', 'nooo why fail??');\n *\n * var dots = ''\n * , addDot = function () { dots += '.'; }\n * , getDots = function () { return dots; };\n *\n * expect(addDot, 'nooo why fail??').to.not.change(getDots);\n *\n * `.change` also causes all `.by` assertions that follow in the chain to\n * assert how much a numeric subject was increased or decreased by. However,\n * it's dangerous to use `.change.by`. The problem is that it creates\n * uncertain expectations by asserting that the subject either increases by\n * the given delta, or that it decreases by the given delta. It's often best\n * to identify the exact output that's expected, and then write an assertion\n * that only accepts that exact output.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; }\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * The alias `.changes` can be used interchangeably with `.change`.\n *\n * @name change\n * @alias changes\n * @param {String} subject\n * @param {String} prop name _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertChanges (subject, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(fn, flagMsg, ssfi, true).is.a('function');\n\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a('function');\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n\n fn();\n\n var final = prop === undefined || prop === null ? subject() : subject[prop];\n var msgObj = prop === undefined || prop === null ? initial : '.' + prop;\n\n // This gets flagged because of the .by(delta) assertion\n flag(this, 'deltaMsgObj', msgObj);\n flag(this, 'initialDeltaValue', initial);\n flag(this, 'finalDeltaValue', final);\n flag(this, 'deltaBehavior', 'change');\n flag(this, 'realDelta', final !== initial);\n\n this.assert(\n initial !== final\n , 'expected ' + msgObj + ' to change'\n , 'expected ' + msgObj + ' to not change'\n );\n }\n\n Assertion.addMethod('change', assertChanges);\n Assertion.addMethod('changes', assertChanges);\n\n /**\n * ### .increase(subject[, prop[, msg]])\n *\n * When one argument is provided, `.increase` asserts that the given function\n * `subject` returns a greater number when it's invoked after invoking the\n * target function compared to when it's invoked beforehand. `.increase` also\n * causes all `.by` assertions that follow in the chain to assert how much\n * greater of a number is returned. It's often best to assert that the return\n * value increased by the expected amount, rather than asserting it increased\n * by any amount.\n *\n * var val = 1\n * , addTwo = function () { val += 2; }\n * , getVal = function () { return val; };\n *\n * expect(addTwo).to.increase(getVal).by(2); // Recommended\n * expect(addTwo).to.increase(getVal); // Not recommended\n *\n * When two arguments are provided, `.increase` asserts that the value of the\n * given object `subject`'s `prop` property is greater after invoking the\n * target function compared to beforehand.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.increase(myObj, 'val'); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.increase`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the subject either decreases, or that it stays the same.\n * It's often best to identify the exact output that's expected, and then\n * write an assertion that only accepts that exact output.\n *\n * When the subject is expected to decrease, it's often best to assert that it\n * decreased by the expected amount.\n *\n * var myObj = {val: 1}\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.not.increase(myObj, 'val'); // Not recommended\n *\n * When the subject is expected to stay the same, it's often best to assert\n * exactly that.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.not.change(myObj, 'val'); // Recommended\n * expect(noop).to.not.increase(myObj, 'val'); // Not recommended\n *\n * `.increase` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing two arguments, always\n * use the second form.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.increase(myObj, 'val', 'nooo why fail??');\n *\n * var val = 1\n * , noop = function () {}\n * , getVal = function () { return val; };\n *\n * expect(noop, 'nooo why fail??').to.increase(getVal);\n *\n * The alias `.increases` can be used interchangeably with `.increase`.\n *\n * @name increase\n * @alias increases\n * @param {String|Function} subject\n * @param {String} prop name _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertIncreases (subject, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(fn, flagMsg, ssfi, true).is.a('function');\n\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a('function');\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n\n // Make sure that the target is a number\n new Assertion(initial, flagMsg, ssfi, true).is.a('number');\n\n fn();\n\n var final = prop === undefined || prop === null ? subject() : subject[prop];\n var msgObj = prop === undefined || prop === null ? initial : '.' + prop;\n\n flag(this, 'deltaMsgObj', msgObj);\n flag(this, 'initialDeltaValue', initial);\n flag(this, 'finalDeltaValue', final);\n flag(this, 'deltaBehavior', 'increase');\n flag(this, 'realDelta', final - initial);\n\n this.assert(\n final - initial > 0\n , 'expected ' + msgObj + ' to increase'\n , 'expected ' + msgObj + ' to not increase'\n );\n }\n\n Assertion.addMethod('increase', assertIncreases);\n Assertion.addMethod('increases', assertIncreases);\n\n /**\n * ### .decrease(subject[, prop[, msg]])\n *\n * When one argument is provided, `.decrease` asserts that the given function\n * `subject` returns a lesser number when it's invoked after invoking the\n * target function compared to when it's invoked beforehand. `.decrease` also\n * causes all `.by` assertions that follow in the chain to assert how much\n * lesser of a number is returned. It's often best to assert that the return\n * value decreased by the expected amount, rather than asserting it decreased\n * by any amount.\n *\n * var val = 1\n * , subtractTwo = function () { val -= 2; }\n * , getVal = function () { return val; };\n *\n * expect(subtractTwo).to.decrease(getVal).by(2); // Recommended\n * expect(subtractTwo).to.decrease(getVal); // Not recommended\n *\n * When two arguments are provided, `.decrease` asserts that the value of the\n * given object `subject`'s `prop` property is lesser after invoking the\n * target function compared to beforehand.\n *\n * var myObj = {val: 1}\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.decrease(myObj, 'val'); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.decrease`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the subject either increases, or that it stays the same.\n * It's often best to identify the exact output that's expected, and then\n * write an assertion that only accepts that exact output.\n *\n * When the subject is expected to increase, it's often best to assert that it\n * increased by the expected amount.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.not.decrease(myObj, 'val'); // Not recommended\n *\n * When the subject is expected to stay the same, it's often best to assert\n * exactly that.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.not.change(myObj, 'val'); // Recommended\n * expect(noop).to.not.decrease(myObj, 'val'); // Not recommended\n *\n * `.decrease` accepts an optional `msg` argument which is a custom error\n * message to show when the assertion fails. The message can also be given as\n * the second argument to `expect`. When not providing two arguments, always\n * use the second form.\n *\n * var myObj = {val: 1}\n * , noop = function () {};\n *\n * expect(noop).to.decrease(myObj, 'val', 'nooo why fail??');\n *\n * var val = 1\n * , noop = function () {}\n * , getVal = function () { return val; };\n *\n * expect(noop, 'nooo why fail??').to.decrease(getVal);\n *\n * The alias `.decreases` can be used interchangeably with `.decrease`.\n *\n * @name decrease\n * @alias decreases\n * @param {String|Function} subject\n * @param {String} prop name _optional_\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertDecreases (subject, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object')\n , flagMsg = flag(this, 'message')\n , ssfi = flag(this, 'ssfi');\n new Assertion(fn, flagMsg, ssfi, true).is.a('function');\n\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a('function');\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n\n // Make sure that the target is a number\n new Assertion(initial, flagMsg, ssfi, true).is.a('number');\n\n fn();\n\n var final = prop === undefined || prop === null ? subject() : subject[prop];\n var msgObj = prop === undefined || prop === null ? initial : '.' + prop;\n\n flag(this, 'deltaMsgObj', msgObj);\n flag(this, 'initialDeltaValue', initial);\n flag(this, 'finalDeltaValue', final);\n flag(this, 'deltaBehavior', 'decrease');\n flag(this, 'realDelta', initial - final);\n\n this.assert(\n final - initial < 0\n , 'expected ' + msgObj + ' to decrease'\n , 'expected ' + msgObj + ' to not decrease'\n );\n }\n\n Assertion.addMethod('decrease', assertDecreases);\n Assertion.addMethod('decreases', assertDecreases);\n\n /**\n * ### .by(delta[, msg])\n *\n * When following an `.increase` assertion in the chain, `.by` asserts that\n * the subject of the `.increase` assertion increased by the given `delta`.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2);\n *\n * When following a `.decrease` assertion in the chain, `.by` asserts that the\n * subject of the `.decrease` assertion decreased by the given `delta`.\n *\n * var myObj = {val: 1}\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2);\n *\n * When following a `.change` assertion in the chain, `.by` asserts that the\n * subject of the `.change` assertion either increased or decreased by the\n * given `delta`. However, it's dangerous to use `.change.by`. The problem is\n * that it creates uncertain expectations. It's often best to identify the\n * exact output that's expected, and then write an assertion that only accepts\n * that exact output.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; }\n * , subtractTwo = function () { myObj.val -= 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(2); // Recommended\n * expect(addTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * expect(subtractTwo).to.decrease(myObj, 'val').by(2); // Recommended\n * expect(subtractTwo).to.change(myObj, 'val').by(2); // Not recommended\n *\n * Add `.not` earlier in the chain to negate `.by`. However, it's often best\n * to assert that the subject changed by its expected delta, rather than\n * asserting that it didn't change by one of countless unexpected deltas.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * // Recommended\n * expect(addTwo).to.increase(myObj, 'val').by(2);\n *\n * // Not recommended\n * expect(addTwo).to.increase(myObj, 'val').but.not.by(3);\n *\n * `.by` accepts an optional `msg` argument which is a custom error message to\n * show when the assertion fails. The message can also be given as the second\n * argument to `expect`.\n *\n * var myObj = {val: 1}\n * , addTwo = function () { myObj.val += 2; };\n *\n * expect(addTwo).to.increase(myObj, 'val').by(3, 'nooo why fail??');\n * expect(addTwo, 'nooo why fail??').to.increase(myObj, 'val').by(3);\n *\n * @name by\n * @param {Number} delta\n * @param {String} msg _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertDelta(delta, msg) {\n if (msg) flag(this, 'message', msg);\n\n var msgObj = flag(this, 'deltaMsgObj');\n var initial = flag(this, 'initialDeltaValue');\n var final = flag(this, 'finalDeltaValue');\n var behavior = flag(this, 'deltaBehavior');\n var realDelta = flag(this, 'realDelta');\n\n var expression;\n if (behavior === 'change') {\n expression = Math.abs(final - initial) === Math.abs(delta);\n } else {\n expression = realDelta === Math.abs(delta);\n }\n\n this.assert(\n expression\n , 'expected ' + msgObj + ' to ' + behavior + ' by ' + delta\n , 'expected ' + msgObj + ' to not ' + behavior + ' by ' + delta\n );\n }\n\n Assertion.addMethod('by', assertDelta);\n\n /**\n * ### .extensible\n *\n * Asserts that the target is extensible, which means that new properties can\n * be added to it. Primitives are never extensible.\n *\n * expect({a: 1}).to.be.extensible;\n *\n * Add `.not` earlier in the chain to negate `.extensible`.\n *\n * var nonExtensibleObject = Object.preventExtensions({})\n * , sealedObject = Object.seal({})\n * , frozenObject = Object.freeze({});\n *\n * expect(nonExtensibleObject).to.not.be.extensible;\n * expect(sealedObject).to.not.be.extensible;\n * expect(frozenObject).to.not.be.extensible;\n * expect(1).to.not.be.extensible;\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect(1, 'nooo why fail??').to.be.extensible;\n *\n * @name extensible\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('extensible', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is a primitive, then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible\n // The following provides ES6 behavior for ES5 environments.\n\n var isExtensible = obj === Object(obj) && Object.isExtensible(obj);\n\n this.assert(\n isExtensible\n , 'expected #{this} to be extensible'\n , 'expected #{this} to not be extensible'\n );\n });\n\n /**\n * ### .sealed\n *\n * Asserts that the target is sealed, which means that new properties can't be\n * added to it, and its existing properties can't be reconfigured or deleted.\n * However, it's possible that its existing properties can still be reassigned\n * to different values. Primitives are always sealed.\n *\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.freeze({});\n *\n * expect(sealedObject).to.be.sealed;\n * expect(frozenObject).to.be.sealed;\n * expect(1).to.be.sealed;\n *\n * Add `.not` earlier in the chain to negate `.sealed`.\n *\n * expect({a: 1}).to.not.be.sealed;\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({a: 1}, 'nooo why fail??').to.be.sealed;\n *\n * @name sealed\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('sealed', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is a primitive, then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed\n // The following provides ES6 behavior for ES5 environments.\n\n var isSealed = obj === Object(obj) ? Object.isSealed(obj) : true;\n\n this.assert(\n isSealed\n , 'expected #{this} to be sealed'\n , 'expected #{this} to not be sealed'\n );\n });\n\n /**\n * ### .frozen\n *\n * Asserts that the target is frozen, which means that new properties can't be\n * added to it, and its existing properties can't be reassigned to different\n * values, reconfigured, or deleted. Primitives are always frozen.\n *\n * var frozenObject = Object.freeze({});\n *\n * expect(frozenObject).to.be.frozen;\n * expect(1).to.be.frozen;\n *\n * Add `.not` earlier in the chain to negate `.frozen`.\n *\n * expect({a: 1}).to.not.be.frozen;\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect({a: 1}, 'nooo why fail??').to.be.frozen;\n *\n * @name frozen\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('frozen', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is a primitive, then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen\n // The following provides ES6 behavior for ES5 environments.\n\n var isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true;\n\n this.assert(\n isFrozen\n , 'expected #{this} to be frozen'\n , 'expected #{this} to not be frozen'\n );\n });\n\n /**\n * ### .finite\n *\n * Asserts that the target is a number, and isn't `NaN` or positive/negative\n * `Infinity`.\n *\n * expect(1).to.be.finite;\n *\n * Add `.not` earlier in the chain to negate `.finite`. However, it's\n * dangerous to do so. The problem is that it creates uncertain expectations\n * by asserting that the subject either isn't a number, or that it's `NaN`, or\n * that it's positive `Infinity`, or that it's negative `Infinity`. It's often\n * best to identify the exact output that's expected, and then write an\n * assertion that only accepts that exact output.\n *\n * When the target isn't expected to be a number, it's often best to assert\n * that it's the expected type, rather than asserting that it isn't one of\n * many unexpected types.\n *\n * expect('foo').to.be.a('string'); // Recommended\n * expect('foo').to.not.be.finite; // Not recommended\n *\n * When the target is expected to be `NaN`, it's often best to assert exactly\n * that.\n *\n * expect(NaN).to.be.NaN; // Recommended\n * expect(NaN).to.not.be.finite; // Not recommended\n *\n * When the target is expected to be positive infinity, it's often best to\n * assert exactly that.\n *\n * expect(Infinity).to.equal(Infinity); // Recommended\n * expect(Infinity).to.not.be.finite; // Not recommended\n *\n * When the target is expected to be negative infinity, it's often best to\n * assert exactly that.\n *\n * expect(-Infinity).to.equal(-Infinity); // Recommended\n * expect(-Infinity).to.not.be.finite; // Not recommended\n *\n * A custom error message can be given as the second argument to `expect`.\n *\n * expect('foo', 'nooo why fail??').to.be.finite;\n *\n * @name finite\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('finite', function(msg) {\n var obj = flag(this, 'object');\n\n this.assert(\n typeof obj === 'number' && isFinite(obj)\n , 'expected #{this} to be a finite number'\n , 'expected #{this} to not be a finite number'\n );\n });\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n chai.expect = function (val, message) {\n return new chai.Assertion(val, message);\n };\n\n /**\n * ### .fail([message])\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure.\n *\n * expect.fail();\n * expect.fail(\"custom error message\");\n * expect.fail(1, 2);\n * expect.fail(1, 2, \"custom error message\");\n * expect.fail(1, 2, \"custom error message\", \">\");\n * expect.fail(1, 2, undefined, \">\");\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace BDD\n * @api public\n */\n\n chai.expect.fail = function (actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = undefined;\n }\n\n message = message || 'expect.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, chai.expect.fail);\n };\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n var Assertion = chai.Assertion;\n\n function loadShould () {\n // explicitly define this method as function as to have it's name to include as `ssfi`\n function shouldGetter() {\n if (this instanceof String\n || this instanceof Number\n || this instanceof Boolean\n || typeof Symbol === 'function' && this instanceof Symbol\n || typeof BigInt === 'function' && this instanceof BigInt) {\n return new Assertion(this.valueOf(), null, shouldGetter);\n }\n return new Assertion(this, null, shouldGetter);\n }\n function shouldSetter(value) {\n // See https://github.com/chaijs/chai/issues/86: this makes\n // `whatever.should = someValue` actually set `someValue`, which is\n // especially useful for `global.should = require('chai').should()`.\n //\n // Note that we have to use [[DefineProperty]] instead of [[Put]]\n // since otherwise we would trigger this very setter!\n Object.defineProperty(this, 'should', {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n // modify Object.prototype to have `should`\n Object.defineProperty(Object.prototype, 'should', {\n set: shouldSetter\n , get: shouldGetter\n , configurable: true\n });\n\n var should = {};\n\n /**\n * ### .fail([message])\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure.\n *\n * should.fail();\n * should.fail(\"custom error message\");\n * should.fail(1, 2);\n * should.fail(1, 2, \"custom error message\");\n * should.fail(1, 2, \"custom error message\", \">\");\n * should.fail(1, 2, undefined, \">\");\n *\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace BDD\n * @api public\n */\n\n should.fail = function (actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = undefined;\n }\n\n message = message || 'should.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, should.fail);\n };\n\n /**\n * ### .equal(actual, expected, [message])\n *\n * Asserts non-strict equality (`==`) of `actual` and `expected`.\n *\n * should.equal(3, '3', '== coerces values to strings');\n *\n * @name equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Should\n * @api public\n */\n\n should.equal = function (val1, val2, msg) {\n new Assertion(val1, msg).to.equal(val2);\n };\n\n /**\n * ### .throw(function, [constructor/string/regexp], [string/regexp], [message])\n *\n * Asserts that `function` will throw an error that is an instance of\n * `constructor`, or alternately that it will throw an error with message\n * matching `regexp`.\n *\n * should.throw(fn, 'function throws a reference error');\n * should.throw(fn, /function throws a reference error/);\n * should.throw(fn, ReferenceError);\n * should.throw(fn, ReferenceError, 'function throws a reference error');\n * should.throw(fn, ReferenceError, /function throws a reference error/);\n *\n * @name throw\n * @alias Throw\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Should\n * @api public\n */\n\n should.Throw = function (fn, errt, errs, msg) {\n new Assertion(fn, msg).to.Throw(errt, errs);\n };\n\n /**\n * ### .exist\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var foo = 'hi';\n *\n * should.exist(foo, 'foo exists');\n *\n * @name exist\n * @namespace Should\n * @api public\n */\n\n should.exist = function (val, msg) {\n new Assertion(val, msg).to.exist;\n }\n\n // negation\n should.not = {}\n\n /**\n * ### .not.equal(actual, expected, [message])\n *\n * Asserts non-strict inequality (`!=`) of `actual` and `expected`.\n *\n * should.not.equal(3, 4, 'these numbers are not equal');\n *\n * @name not.equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Should\n * @api public\n */\n\n should.not.equal = function (val1, val2, msg) {\n new Assertion(val1, msg).to.not.equal(val2);\n };\n\n /**\n * ### .throw(function, [constructor/regexp], [message])\n *\n * Asserts that `function` will _not_ throw an error that is an instance of\n * `constructor`, or alternately that it will not throw an error with message\n * matching `regexp`.\n *\n * should.not.throw(fn, Error, 'function does not throw');\n *\n * @name not.throw\n * @alias not.Throw\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Should\n * @api public\n */\n\n should.not.Throw = function (fn, errt, errs, msg) {\n new Assertion(fn, msg).to.not.Throw(errt, errs);\n };\n\n /**\n * ### .not.exist\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var bar = null;\n *\n * should.not.exist(bar, 'bar does not exist');\n *\n * @name not.exist\n * @namespace Should\n * @api public\n */\n\n should.not.exist = function (val, msg) {\n new Assertion(val, msg).to.not.exist;\n }\n\n should['throw'] = should['Throw'];\n should.not['throw'] = should.not['Throw'];\n\n return should;\n };\n\n chai.should = loadShould;\n chai.Should = loadShould;\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n /*!\n * Chai dependencies.\n */\n\n var Assertion = chai.Assertion\n , flag = util.flag;\n\n /*!\n * Module export.\n */\n\n /**\n * ### assert(expression, message)\n *\n * Write your own test expressions.\n *\n * assert('foo' !== 'bar', 'foo is not bar');\n * assert(Array.isArray([]), 'empty arrays are arrays');\n *\n * @param {Mixed} expression to test for truthiness\n * @param {String} message to display on error\n * @name assert\n * @namespace Assert\n * @api public\n */\n\n var assert = chai.assert = function (express, errmsg) {\n var test = new Assertion(null, null, chai.assert, true);\n test.assert(\n express\n , errmsg\n , '[ negation message unavailable ]'\n );\n };\n\n /**\n * ### .fail([message])\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure. Node.js `assert` module-compatible.\n *\n * assert.fail();\n * assert.fail(\"custom error message\");\n * assert.fail(1, 2);\n * assert.fail(1, 2, \"custom error message\");\n * assert.fail(1, 2, \"custom error message\", \">\");\n * assert.fail(1, 2, undefined, \">\");\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace Assert\n * @api public\n */\n\n assert.fail = function (actual, expected, message, operator) {\n if (arguments.length < 2) {\n // Comply with Node's fail([message]) interface\n\n message = actual;\n actual = undefined;\n }\n\n message = message || 'assert.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, assert.fail);\n };\n\n /**\n * ### .isOk(object, [message])\n *\n * Asserts that `object` is truthy.\n *\n * assert.isOk('everything', 'everything is ok');\n * assert.isOk(false, 'this will fail');\n *\n * @name isOk\n * @alias ok\n * @param {Mixed} object to test\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isOk = function (val, msg) {\n new Assertion(val, msg, assert.isOk, true).is.ok;\n };\n\n /**\n * ### .isNotOk(object, [message])\n *\n * Asserts that `object` is falsy.\n *\n * assert.isNotOk('everything', 'this will fail');\n * assert.isNotOk(false, 'this will pass');\n *\n * @name isNotOk\n * @alias notOk\n * @param {Mixed} object to test\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotOk = function (val, msg) {\n new Assertion(val, msg, assert.isNotOk, true).is.not.ok;\n };\n\n /**\n * ### .equal(actual, expected, [message])\n *\n * Asserts non-strict equality (`==`) of `actual` and `expected`.\n *\n * assert.equal(3, '3', '== coerces values to strings');\n *\n * @name equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.equal = function (act, exp, msg) {\n var test = new Assertion(act, msg, assert.equal, true);\n\n test.assert(\n exp == flag(test, 'object')\n , 'expected #{this} to equal #{exp}'\n , 'expected #{this} to not equal #{act}'\n , exp\n , act\n , true\n );\n };\n\n /**\n * ### .notEqual(actual, expected, [message])\n *\n * Asserts non-strict inequality (`!=`) of `actual` and `expected`.\n *\n * assert.notEqual(3, 4, 'these numbers are not equal');\n *\n * @name notEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notEqual = function (act, exp, msg) {\n var test = new Assertion(act, msg, assert.notEqual, true);\n\n test.assert(\n exp != flag(test, 'object')\n , 'expected #{this} to not equal #{exp}'\n , 'expected #{this} to equal #{act}'\n , exp\n , act\n , true\n );\n };\n\n /**\n * ### .strictEqual(actual, expected, [message])\n *\n * Asserts strict equality (`===`) of `actual` and `expected`.\n *\n * assert.strictEqual(true, true, 'these booleans are strictly equal');\n *\n * @name strictEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.strictEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.strictEqual, true).to.equal(exp);\n };\n\n /**\n * ### .notStrictEqual(actual, expected, [message])\n *\n * Asserts strict inequality (`!==`) of `actual` and `expected`.\n *\n * assert.notStrictEqual(3, '3', 'no coercion for strict equality');\n *\n * @name notStrictEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notStrictEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.notStrictEqual, true).to.not.equal(exp);\n };\n\n /**\n * ### .deepEqual(actual, expected, [message])\n *\n * Asserts that `actual` is deeply equal to `expected`.\n *\n * assert.deepEqual({ tea: 'green' }, { tea: 'green' });\n *\n * @name deepEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @alias deepStrictEqual\n * @namespace Assert\n * @api public\n */\n\n assert.deepEqual = assert.deepStrictEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.deepEqual, true).to.eql(exp);\n };\n\n /**\n * ### .notDeepEqual(actual, expected, [message])\n *\n * Assert that `actual` is not deeply equal to `expected`.\n *\n * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' });\n *\n * @name notDeepEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepEqual = function (act, exp, msg) {\n new Assertion(act, msg, assert.notDeepEqual, true).to.not.eql(exp);\n };\n\n /**\n * ### .isAbove(valueToCheck, valueToBeAbove, [message])\n *\n * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove`.\n *\n * assert.isAbove(5, 2, '5 is strictly greater than 2');\n *\n * @name isAbove\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAbove\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAbove = function (val, abv, msg) {\n new Assertion(val, msg, assert.isAbove, true).to.be.above(abv);\n };\n\n /**\n * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message])\n *\n * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast`.\n *\n * assert.isAtLeast(5, 2, '5 is greater or equal to 2');\n * assert.isAtLeast(3, 3, '3 is greater or equal to 3');\n *\n * @name isAtLeast\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAtLeast\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAtLeast = function (val, atlst, msg) {\n new Assertion(val, msg, assert.isAtLeast, true).to.be.least(atlst);\n };\n\n /**\n * ### .isBelow(valueToCheck, valueToBeBelow, [message])\n *\n * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow`.\n *\n * assert.isBelow(3, 6, '3 is strictly less than 6');\n *\n * @name isBelow\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeBelow\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isBelow = function (val, blw, msg) {\n new Assertion(val, msg, assert.isBelow, true).to.be.below(blw);\n };\n\n /**\n * ### .isAtMost(valueToCheck, valueToBeAtMost, [message])\n *\n * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost`.\n *\n * assert.isAtMost(3, 6, '3 is less than or equal to 6');\n * assert.isAtMost(4, 4, '4 is less than or equal to 4');\n *\n * @name isAtMost\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAtMost\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAtMost = function (val, atmst, msg) {\n new Assertion(val, msg, assert.isAtMost, true).to.be.most(atmst);\n };\n\n /**\n * ### .isTrue(value, [message])\n *\n * Asserts that `value` is true.\n *\n * var teaServed = true;\n * assert.isTrue(teaServed, 'the tea has been served');\n *\n * @name isTrue\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isTrue = function (val, msg) {\n new Assertion(val, msg, assert.isTrue, true).is['true'];\n };\n\n /**\n * ### .isNotTrue(value, [message])\n *\n * Asserts that `value` is not true.\n *\n * var tea = 'tasty chai';\n * assert.isNotTrue(tea, 'great, time for tea!');\n *\n * @name isNotTrue\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotTrue = function (val, msg) {\n new Assertion(val, msg, assert.isNotTrue, true).to.not.equal(true);\n };\n\n /**\n * ### .isFalse(value, [message])\n *\n * Asserts that `value` is false.\n *\n * var teaServed = false;\n * assert.isFalse(teaServed, 'no tea yet? hmm...');\n *\n * @name isFalse\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFalse = function (val, msg) {\n new Assertion(val, msg, assert.isFalse, true).is['false'];\n };\n\n /**\n * ### .isNotFalse(value, [message])\n *\n * Asserts that `value` is not false.\n *\n * var tea = 'tasty chai';\n * assert.isNotFalse(tea, 'great, time for tea!');\n *\n * @name isNotFalse\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFalse = function (val, msg) {\n new Assertion(val, msg, assert.isNotFalse, true).to.not.equal(false);\n };\n\n /**\n * ### .isNull(value, [message])\n *\n * Asserts that `value` is null.\n *\n * assert.isNull(err, 'there was no error');\n *\n * @name isNull\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNull = function (val, msg) {\n new Assertion(val, msg, assert.isNull, true).to.equal(null);\n };\n\n /**\n * ### .isNotNull(value, [message])\n *\n * Asserts that `value` is not null.\n *\n * var tea = 'tasty chai';\n * assert.isNotNull(tea, 'great, time for tea!');\n *\n * @name isNotNull\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotNull = function (val, msg) {\n new Assertion(val, msg, assert.isNotNull, true).to.not.equal(null);\n };\n\n /**\n * ### .isNaN\n *\n * Asserts that value is NaN.\n *\n * assert.isNaN(NaN, 'NaN is NaN');\n *\n * @name isNaN\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNaN = function (val, msg) {\n new Assertion(val, msg, assert.isNaN, true).to.be.NaN;\n };\n\n /**\n * ### .isNotNaN\n *\n * Asserts that value is not NaN.\n *\n * assert.isNotNaN(4, '4 is not NaN');\n *\n * @name isNotNaN\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n assert.isNotNaN = function (val, msg) {\n new Assertion(val, msg, assert.isNotNaN, true).not.to.be.NaN;\n };\n\n /**\n * ### .exists\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var foo = 'hi';\n *\n * assert.exists(foo, 'foo is neither `null` nor `undefined`');\n *\n * @name exists\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.exists = function (val, msg) {\n new Assertion(val, msg, assert.exists, true).to.exist;\n };\n\n /**\n * ### .notExists\n *\n * Asserts that the target is either `null` or `undefined`.\n *\n * var bar = null\n * , baz;\n *\n * assert.notExists(bar);\n * assert.notExists(baz, 'baz is either null or undefined');\n *\n * @name notExists\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notExists = function (val, msg) {\n new Assertion(val, msg, assert.notExists, true).to.not.exist;\n };\n\n /**\n * ### .isUndefined(value, [message])\n *\n * Asserts that `value` is `undefined`.\n *\n * var tea;\n * assert.isUndefined(tea, 'no tea defined');\n *\n * @name isUndefined\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isUndefined = function (val, msg) {\n new Assertion(val, msg, assert.isUndefined, true).to.equal(undefined);\n };\n\n /**\n * ### .isDefined(value, [message])\n *\n * Asserts that `value` is not `undefined`.\n *\n * var tea = 'cup of chai';\n * assert.isDefined(tea, 'tea has been defined');\n *\n * @name isDefined\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isDefined = function (val, msg) {\n new Assertion(val, msg, assert.isDefined, true).to.not.equal(undefined);\n };\n\n /**\n * ### .isFunction(value, [message])\n *\n * Asserts that `value` is a function.\n *\n * function serveTea() { return 'cup of tea'; };\n * assert.isFunction(serveTea, 'great, we can have tea now');\n *\n * @name isFunction\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFunction = function (val, msg) {\n new Assertion(val, msg, assert.isFunction, true).to.be.a('function');\n };\n\n /**\n * ### .isNotFunction(value, [message])\n *\n * Asserts that `value` is _not_ a function.\n *\n * var serveTea = [ 'heat', 'pour', 'sip' ];\n * assert.isNotFunction(serveTea, 'great, we have listed the steps');\n *\n * @name isNotFunction\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFunction = function (val, msg) {\n new Assertion(val, msg, assert.isNotFunction, true).to.not.be.a('function');\n };\n\n /**\n * ### .isObject(value, [message])\n *\n * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`).\n * _The assertion does not match subclassed objects._\n *\n * var selection = { name: 'Chai', serve: 'with spices' };\n * assert.isObject(selection, 'tea selection is an object');\n *\n * @name isObject\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isObject = function (val, msg) {\n new Assertion(val, msg, assert.isObject, true).to.be.a('object');\n };\n\n /**\n * ### .isNotObject(value, [message])\n *\n * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`).\n *\n * var selection = 'chai'\n * assert.isNotObject(selection, 'tea selection is not an object');\n * assert.isNotObject(null, 'null is not an object');\n *\n * @name isNotObject\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotObject = function (val, msg) {\n new Assertion(val, msg, assert.isNotObject, true).to.not.be.a('object');\n };\n\n /**\n * ### .isArray(value, [message])\n *\n * Asserts that `value` is an array.\n *\n * var menu = [ 'green', 'chai', 'oolong' ];\n * assert.isArray(menu, 'what kind of tea do we want?');\n *\n * @name isArray\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isArray = function (val, msg) {\n new Assertion(val, msg, assert.isArray, true).to.be.an('array');\n };\n\n /**\n * ### .isNotArray(value, [message])\n *\n * Asserts that `value` is _not_ an array.\n *\n * var menu = 'green|chai|oolong';\n * assert.isNotArray(menu, 'what kind of tea do we want?');\n *\n * @name isNotArray\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotArray = function (val, msg) {\n new Assertion(val, msg, assert.isNotArray, true).to.not.be.an('array');\n };\n\n /**\n * ### .isString(value, [message])\n *\n * Asserts that `value` is a string.\n *\n * var teaOrder = 'chai';\n * assert.isString(teaOrder, 'order placed');\n *\n * @name isString\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isString = function (val, msg) {\n new Assertion(val, msg, assert.isString, true).to.be.a('string');\n };\n\n /**\n * ### .isNotString(value, [message])\n *\n * Asserts that `value` is _not_ a string.\n *\n * var teaOrder = 4;\n * assert.isNotString(teaOrder, 'order placed');\n *\n * @name isNotString\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotString = function (val, msg) {\n new Assertion(val, msg, assert.isNotString, true).to.not.be.a('string');\n };\n\n /**\n * ### .isNumber(value, [message])\n *\n * Asserts that `value` is a number.\n *\n * var cups = 2;\n * assert.isNumber(cups, 'how many cups');\n *\n * @name isNumber\n * @param {Number} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNumber = function (val, msg) {\n new Assertion(val, msg, assert.isNumber, true).to.be.a('number');\n };\n\n /**\n * ### .isNotNumber(value, [message])\n *\n * Asserts that `value` is _not_ a number.\n *\n * var cups = '2 cups please';\n * assert.isNotNumber(cups, 'how many cups');\n *\n * @name isNotNumber\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotNumber = function (val, msg) {\n new Assertion(val, msg, assert.isNotNumber, true).to.not.be.a('number');\n };\n\n /**\n * ### .isFinite(value, [message])\n *\n * Asserts that `value` is a finite number. Unlike `.isNumber`, this will fail for `NaN` and `Infinity`.\n *\n * var cups = 2;\n * assert.isFinite(cups, 'how many cups');\n *\n * assert.isFinite(NaN); // throws\n *\n * @name isFinite\n * @param {Number} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFinite = function (val, msg) {\n new Assertion(val, msg, assert.isFinite, true).to.be.finite;\n };\n\n /**\n * ### .isBoolean(value, [message])\n *\n * Asserts that `value` is a boolean.\n *\n * var teaReady = true\n * , teaServed = false;\n *\n * assert.isBoolean(teaReady, 'is the tea ready');\n * assert.isBoolean(teaServed, 'has tea been served');\n *\n * @name isBoolean\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isBoolean = function (val, msg) {\n new Assertion(val, msg, assert.isBoolean, true).to.be.a('boolean');\n };\n\n /**\n * ### .isNotBoolean(value, [message])\n *\n * Asserts that `value` is _not_ a boolean.\n *\n * var teaReady = 'yep'\n * , teaServed = 'nope';\n *\n * assert.isNotBoolean(teaReady, 'is the tea ready');\n * assert.isNotBoolean(teaServed, 'has tea been served');\n *\n * @name isNotBoolean\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotBoolean = function (val, msg) {\n new Assertion(val, msg, assert.isNotBoolean, true).to.not.be.a('boolean');\n };\n\n /**\n * ### .typeOf(value, name, [message])\n *\n * Asserts that `value`'s type is `name`, as determined by\n * `Object.prototype.toString`.\n *\n * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object');\n * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array');\n * assert.typeOf('tea', 'string', 'we have a string');\n * assert.typeOf(/tea/, 'regexp', 'we have a regular expression');\n * assert.typeOf(null, 'null', 'we have a null');\n * assert.typeOf(undefined, 'undefined', 'we have an undefined');\n *\n * @name typeOf\n * @param {Mixed} value\n * @param {String} name\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.typeOf = function (val, type, msg) {\n new Assertion(val, msg, assert.typeOf, true).to.be.a(type);\n };\n\n /**\n * ### .notTypeOf(value, name, [message])\n *\n * Asserts that `value`'s type is _not_ `name`, as determined by\n * `Object.prototype.toString`.\n *\n * assert.notTypeOf('tea', 'number', 'strings are not numbers');\n *\n * @name notTypeOf\n * @param {Mixed} value\n * @param {String} typeof name\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notTypeOf = function (val, type, msg) {\n new Assertion(val, msg, assert.notTypeOf, true).to.not.be.a(type);\n };\n\n /**\n * ### .instanceOf(object, constructor, [message])\n *\n * Asserts that `value` is an instance of `constructor`.\n *\n * var Tea = function (name) { this.name = name; }\n * , chai = new Tea('chai');\n *\n * assert.instanceOf(chai, Tea, 'chai is an instance of tea');\n *\n * @name instanceOf\n * @param {Object} object\n * @param {Constructor} constructor\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.instanceOf = function (val, type, msg) {\n new Assertion(val, msg, assert.instanceOf, true).to.be.instanceOf(type);\n };\n\n /**\n * ### .notInstanceOf(object, constructor, [message])\n *\n * Asserts `value` is not an instance of `constructor`.\n *\n * var Tea = function (name) { this.name = name; }\n * , chai = new String('chai');\n *\n * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea');\n *\n * @name notInstanceOf\n * @param {Object} object\n * @param {Constructor} constructor\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notInstanceOf = function (val, type, msg) {\n new Assertion(val, msg, assert.notInstanceOf, true)\n .to.not.be.instanceOf(type);\n };\n\n /**\n * ### .include(haystack, needle, [message])\n *\n * Asserts that `haystack` includes `needle`. Can be used to assert the\n * inclusion of a value in an array, a substring in a string, or a subset of\n * properties in an object.\n *\n * assert.include([1,2,3], 2, 'array contains value');\n * assert.include('foobar', 'foo', 'string contains substring');\n * assert.include({ foo: 'bar', hello: 'universe' }, { foo: 'bar' }, 'object contains property');\n *\n * Strict equality (===) is used. When asserting the inclusion of a value in\n * an array, the array is searched for an element that's strictly equal to the\n * given value. When asserting a subset of properties in an object, the object\n * is searched for the given property keys, checking that each one is present\n * and strictly equal to the given property value. For instance:\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.include([obj1, obj2], obj1);\n * assert.include({foo: obj1, bar: obj2}, {foo: obj1});\n * assert.include({foo: obj1, bar: obj2}, {foo: obj1, bar: obj2});\n *\n * @name include\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.include = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.include, true).include(inc);\n };\n\n /**\n * ### .notInclude(haystack, needle, [message])\n *\n * Asserts that `haystack` does not include `needle`. Can be used to assert\n * the absence of a value in an array, a substring in a string, or a subset of\n * properties in an object.\n *\n * assert.notInclude([1,2,3], 4, \"array doesn't contain value\");\n * assert.notInclude('foobar', 'baz', \"string doesn't contain substring\");\n * assert.notInclude({ foo: 'bar', hello: 'universe' }, { foo: 'baz' }, 'object doesn't contain property');\n *\n * Strict equality (===) is used. When asserting the absence of a value in an\n * array, the array is searched to confirm the absence of an element that's\n * strictly equal to the given value. When asserting a subset of properties in\n * an object, the object is searched to confirm that at least one of the given\n * property keys is either not present or not strictly equal to the given\n * property value. For instance:\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.notInclude([obj1, obj2], {a: 1});\n * assert.notInclude({foo: obj1, bar: obj2}, {foo: {a: 1}});\n * assert.notInclude({foo: obj1, bar: obj2}, {foo: obj1, bar: {b: 2}});\n *\n * @name notInclude\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.notInclude, true).not.include(inc);\n };\n\n /**\n * ### .deepInclude(haystack, needle, [message])\n *\n * Asserts that `haystack` includes `needle`. Can be used to assert the\n * inclusion of a value in an array or a subset of properties in an object.\n * Deep equality is used.\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.deepInclude([obj1, obj2], {a: 1});\n * assert.deepInclude({foo: obj1, bar: obj2}, {foo: {a: 1}});\n * assert.deepInclude({foo: obj1, bar: obj2}, {foo: {a: 1}, bar: {b: 2}});\n *\n * @name deepInclude\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.deepInclude, true).deep.include(inc);\n };\n\n /**\n * ### .notDeepInclude(haystack, needle, [message])\n *\n * Asserts that `haystack` does not include `needle`. Can be used to assert\n * the absence of a value in an array or a subset of properties in an object.\n * Deep equality is used.\n *\n * var obj1 = {a: 1}\n * , obj2 = {b: 2};\n * assert.notDeepInclude([obj1, obj2], {a: 9});\n * assert.notDeepInclude({foo: obj1, bar: obj2}, {foo: {a: 9}});\n * assert.notDeepInclude({foo: obj1, bar: obj2}, {foo: {a: 1}, bar: {b: 9}});\n *\n * @name notDeepInclude\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepInclude, true).not.deep.include(inc);\n };\n\n /**\n * ### .nestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.nestedInclude({'.a': {'b': 'x'}}, {'\\\\.a.[b]': 'x'});\n * assert.nestedInclude({'a': {'[b]': 'x'}}, {'a.\\\\[b\\\\]': 'x'});\n *\n * @name nestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.nestedInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.nestedInclude, true).nested.include(inc);\n };\n\n /**\n * ### .notNestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' does not include 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.notNestedInclude({'.a': {'b': 'x'}}, {'\\\\.a.b': 'y'});\n * assert.notNestedInclude({'a': {'[b]': 'x'}}, {'a.\\\\[b\\\\]': 'y'});\n *\n * @name notNestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notNestedInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.notNestedInclude, true)\n .not.nested.include(inc);\n };\n\n /**\n * ### .deepNestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object while checking for deep equality.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.deepNestedInclude({a: {b: [{x: 1}]}}, {'a.b[0]': {x: 1}});\n * assert.deepNestedInclude({'.a': {'[b]': {x: 1}}}, {'\\\\.a.\\\\[b\\\\]': {x: 1}});\n *\n * @name deepNestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepNestedInclude, true)\n .deep.nested.include(inc);\n };\n\n /**\n * ### .notDeepNestedInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' does not include 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object while checking for deep equality.\n * Enables the use of dot- and bracket-notation for referencing nested\n * properties.\n * '[]' and '.' in property names can be escaped using double backslashes.\n *\n * assert.notDeepNestedInclude({a: {b: [{x: 1}]}}, {'a.b[0]': {y: 1}})\n * assert.notDeepNestedInclude({'.a': {'[b]': {x: 1}}}, {'\\\\.a.\\\\[b\\\\]': {y: 2}});\n *\n * @name notDeepNestedInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepNestedInclude, true)\n .not.deep.nested.include(inc);\n };\n\n /**\n * ### .ownInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object while ignoring inherited properties.\n *\n * assert.ownInclude({ a: 1 }, { a: 1 });\n *\n * @name ownInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.ownInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.ownInclude, true).own.include(inc);\n };\n\n /**\n * ### .notOwnInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object while ignoring inherited properties.\n *\n * Object.prototype.b = 2;\n *\n * assert.notOwnInclude({ a: 1 }, { b: 2 });\n *\n * @name notOwnInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notOwnInclude, true).not.own.include(inc);\n };\n\n /**\n * ### .deepOwnInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the inclusion of a subset of properties in an\n * object while ignoring inherited properties and checking for deep equality.\n *\n * assert.deepOwnInclude({a: {b: 2}}, {a: {b: 2}});\n *\n * @name deepOwnInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepOwnInclude, true)\n .deep.own.include(inc);\n };\n\n /**\n * ### .notDeepOwnInclude(haystack, needle, [message])\n *\n * Asserts that 'haystack' includes 'needle'.\n * Can be used to assert the absence of a subset of properties in an\n * object while ignoring inherited properties and checking for deep equality.\n *\n * assert.notDeepOwnInclude({a: {b: 2}}, {a: {c: 3}});\n *\n * @name notDeepOwnInclude\n * @param {Object} haystack\n * @param {Object} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepOwnInclude, true)\n .not.deep.own.include(inc);\n };\n\n /**\n * ### .match(value, regexp, [message])\n *\n * Asserts that `value` matches the regular expression `regexp`.\n *\n * assert.match('foobar', /^foo/, 'regexp matches');\n *\n * @name match\n * @param {Mixed} value\n * @param {RegExp} regexp\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.match = function (exp, re, msg) {\n new Assertion(exp, msg, assert.match, true).to.match(re);\n };\n\n /**\n * ### .notMatch(value, regexp, [message])\n *\n * Asserts that `value` does not match the regular expression `regexp`.\n *\n * assert.notMatch('foobar', /^foo/, 'regexp does not match');\n *\n * @name notMatch\n * @param {Mixed} value\n * @param {RegExp} regexp\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notMatch = function (exp, re, msg) {\n new Assertion(exp, msg, assert.notMatch, true).to.not.match(re);\n };\n\n /**\n * ### .property(object, property, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property`.\n *\n * assert.property({ tea: { green: 'matcha' }}, 'tea');\n * assert.property({ tea: { green: 'matcha' }}, 'toString');\n *\n * @name property\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.property = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.property, true).to.have.property(prop);\n };\n\n /**\n * ### .notProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a direct or inherited property named\n * by `property`.\n *\n * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee');\n *\n * @name notProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.notProperty, true)\n .to.not.have.property(prop);\n };\n\n /**\n * ### .propertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property` with a value given by `value`. Uses a strict equality check\n * (===).\n *\n * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good');\n *\n * @name propertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.propertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.propertyVal, true)\n .to.have.property(prop, val);\n };\n\n /**\n * ### .notPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct or inherited property named\n * by `property` with value given by `value`. Uses a strict equality check\n * (===).\n *\n * assert.notPropertyVal({ tea: 'is good' }, 'tea', 'is bad');\n * assert.notPropertyVal({ tea: 'is good' }, 'coffee', 'is good');\n *\n * @name notPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notPropertyVal, true)\n .to.not.have.property(prop, val);\n };\n\n /**\n * ### .deepPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property` with a value given by `value`. Uses a deep equality check.\n *\n * assert.deepPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'matcha' });\n *\n * @name deepPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepPropertyVal, true)\n .to.have.deep.property(prop, val);\n };\n\n /**\n * ### .notDeepPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct or inherited property named\n * by `property` with value given by `value`. Uses a deep equality check.\n *\n * assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'tea', { black: 'matcha' });\n * assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'oolong' });\n * assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'coffee', { green: 'matcha' });\n *\n * @name notDeepPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notDeepPropertyVal, true)\n .to.not.have.deep.property(prop, val);\n };\n\n /**\n * ### .ownProperty(object, property, [message])\n *\n * Asserts that `object` has a direct property named by `property`. Inherited\n * properties aren't checked.\n *\n * assert.ownProperty({ tea: { green: 'matcha' }}, 'tea');\n *\n * @name ownProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @api public\n */\n\n assert.ownProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.ownProperty, true)\n .to.have.own.property(prop);\n };\n\n /**\n * ### .notOwnProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a direct property named by\n * `property`. Inherited properties aren't checked.\n *\n * assert.notOwnProperty({ tea: { green: 'matcha' }}, 'coffee');\n * assert.notOwnProperty({}, 'toString');\n *\n * @name notOwnProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @api public\n */\n\n assert.notOwnProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.notOwnProperty, true)\n .to.not.have.own.property(prop);\n };\n\n /**\n * ### .ownPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct property named by `property` and a value\n * equal to the provided `value`. Uses a strict equality check (===).\n * Inherited properties aren't checked.\n *\n * assert.ownPropertyVal({ coffee: 'is good'}, 'coffee', 'is good');\n *\n * @name ownPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.ownPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.ownPropertyVal, true)\n .to.have.own.property(prop, value);\n };\n\n /**\n * ### .notOwnPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct property named by `property`\n * with a value equal to the provided `value`. Uses a strict equality check\n * (===). Inherited properties aren't checked.\n *\n * assert.notOwnPropertyVal({ tea: 'is better'}, 'tea', 'is worse');\n * assert.notOwnPropertyVal({}, 'toString', Object.prototype.toString);\n *\n * @name notOwnPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.notOwnPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.notOwnPropertyVal, true)\n .to.not.have.own.property(prop, value);\n };\n\n /**\n * ### .deepOwnPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a direct property named by `property` and a value\n * equal to the provided `value`. Uses a deep equality check. Inherited\n * properties aren't checked.\n *\n * assert.deepOwnPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'matcha' });\n *\n * @name deepOwnPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.deepOwnPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.deepOwnPropertyVal, true)\n .to.have.deep.own.property(prop, value);\n };\n\n /**\n * ### .notDeepOwnPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a direct property named by `property`\n * with a value equal to the provided `value`. Uses a deep equality check.\n * Inherited properties aren't checked.\n *\n * assert.notDeepOwnPropertyVal({ tea: { green: 'matcha' } }, 'tea', { black: 'matcha' });\n * assert.notDeepOwnPropertyVal({ tea: { green: 'matcha' } }, 'tea', { green: 'oolong' });\n * assert.notDeepOwnPropertyVal({ tea: { green: 'matcha' } }, 'coffee', { green: 'matcha' });\n * assert.notDeepOwnPropertyVal({}, 'toString', Object.prototype.toString);\n *\n * @name notDeepOwnPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @api public\n */\n\n assert.notDeepOwnPropertyVal = function (obj, prop, value, msg) {\n new Assertion(obj, msg, assert.notDeepOwnPropertyVal, true)\n .to.not.have.deep.own.property(prop, value);\n };\n\n /**\n * ### .nestedProperty(object, property, [message])\n *\n * Asserts that `object` has a direct or inherited property named by\n * `property`, which can be a string using dot- and bracket-notation for\n * nested reference.\n *\n * assert.nestedProperty({ tea: { green: 'matcha' }}, 'tea.green');\n *\n * @name nestedProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.nestedProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.nestedProperty, true)\n .to.have.nested.property(prop);\n };\n\n /**\n * ### .notNestedProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property`, which\n * can be a string using dot- and bracket-notation for nested reference. The\n * property cannot exist on the object nor anywhere in its prototype chain.\n *\n * assert.notNestedProperty({ tea: { green: 'matcha' }}, 'tea.oolong');\n *\n * @name notNestedProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notNestedProperty = function (obj, prop, msg) {\n new Assertion(obj, msg, assert.notNestedProperty, true)\n .to.not.have.nested.property(prop);\n };\n\n /**\n * ### .nestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property` with value given\n * by `value`. `property` can use dot- and bracket-notation for nested\n * reference. Uses a strict equality check (===).\n *\n * assert.nestedPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha');\n *\n * @name nestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.nestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.nestedPropertyVal, true)\n .to.have.nested.property(prop, val);\n };\n\n /**\n * ### .notNestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property` with\n * value given by `value`. `property` can use dot- and bracket-notation for\n * nested reference. Uses a strict equality check (===).\n *\n * assert.notNestedPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha');\n * assert.notNestedPropertyVal({ tea: { green: 'matcha' }}, 'coffee.green', 'matcha');\n *\n * @name notNestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notNestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notNestedPropertyVal, true)\n .to.not.have.nested.property(prop, val);\n };\n\n /**\n * ### .deepNestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property` with a value given\n * by `value`. `property` can use dot- and bracket-notation for nested\n * reference. Uses a deep equality check.\n *\n * assert.deepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.green', { matcha: 'yum' });\n *\n * @name deepNestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepNestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepNestedPropertyVal, true)\n .to.have.deep.nested.property(prop, val);\n };\n\n /**\n * ### .notDeepNestedPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property` with\n * value given by `value`. `property` can use dot- and bracket-notation for\n * nested reference. Uses a deep equality check.\n *\n * assert.notDeepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.green', { oolong: 'yum' });\n * assert.notDeepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.green', { matcha: 'yuck' });\n * assert.notDeepNestedPropertyVal({ tea: { green: { matcha: 'yum' } } }, 'tea.black', { matcha: 'yum' });\n *\n * @name notDeepNestedPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepNestedPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notDeepNestedPropertyVal, true)\n .to.not.have.deep.nested.property(prop, val);\n }\n\n /**\n * ### .lengthOf(object, length, [message])\n *\n * Asserts that `object` has a `length` or `size` with the expected value.\n *\n * assert.lengthOf([1,2,3], 3, 'array has length of 3');\n * assert.lengthOf('foobar', 6, 'string has length of 6');\n * assert.lengthOf(new Set([1,2,3]), 3, 'set has size of 3');\n * assert.lengthOf(new Map([['a',1],['b',2],['c',3]]), 3, 'map has size of 3');\n *\n * @name lengthOf\n * @param {Mixed} object\n * @param {Number} length\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.lengthOf = function (exp, len, msg) {\n new Assertion(exp, msg, assert.lengthOf, true).to.have.lengthOf(len);\n };\n\n /**\n * ### .hasAnyKeys(object, [keys], [message])\n *\n * Asserts that `object` has at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAnyKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'iDontExist', 'baz']);\n * assert.hasAnyKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, iDontExist: 99, baz: 1337});\n * assert.hasAnyKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}, 'key']);\n * assert.hasAnyKeys(new Set([{foo: 'bar'}, 'anotherKey']), [{foo: 'bar'}, 'anotherKey']);\n *\n * @name hasAnyKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAnyKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyKeys, true).to.have.any.keys(keys);\n }\n\n /**\n * ### .hasAllKeys(object, [keys], [message])\n *\n * Asserts that `object` has all and only all of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAllKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'bar', 'baz']);\n * assert.hasAllKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, bar: 99, baz: 1337]);\n * assert.hasAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}, 'key']);\n * assert.hasAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{foo: 'bar'}, 'anotherKey']);\n *\n * @name hasAllKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAllKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllKeys, true).to.have.all.keys(keys);\n }\n\n /**\n * ### .containsAllKeys(object, [keys], [message])\n *\n * Asserts that `object` has all of the `keys` provided but may have more keys not listed.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'baz']);\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, ['foo', 'bar', 'baz']);\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, baz: 1337});\n * assert.containsAllKeys({foo: 1, bar: 2, baz: 3}, {foo: 30, bar: 99, baz: 1337});\n * assert.containsAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}]);\n * assert.containsAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{foo: 1}, 'key']);\n * assert.containsAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{foo: 'bar'}]);\n * assert.containsAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{foo: 'bar'}, 'anotherKey']);\n *\n * @name containsAllKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.containsAllKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllKeys, true)\n .to.contain.all.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAnyKeys(object, [keys], [message])\n *\n * Asserts that `object` has none of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAnyKeys({foo: 1, bar: 2, baz: 3}, ['one', 'two', 'example']);\n * assert.doesNotHaveAnyKeys({foo: 1, bar: 2, baz: 3}, {one: 1, two: 2, example: 'foo'});\n * assert.doesNotHaveAnyKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{one: 'two'}, 'example']);\n * assert.doesNotHaveAnyKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{one: 'two'}, 'example']);\n *\n * @name doesNotHaveAnyKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAnyKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyKeys, true)\n .to.not.have.any.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAllKeys(object, [keys], [message])\n *\n * Asserts that `object` does not have at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAllKeys({foo: 1, bar: 2, baz: 3}, ['one', 'two', 'example']);\n * assert.doesNotHaveAllKeys({foo: 1, bar: 2, baz: 3}, {one: 1, two: 2, example: 'foo'});\n * assert.doesNotHaveAllKeys(new Map([[{foo: 1}, 'bar'], ['key', 'value']]), [{one: 'two'}, 'example']);\n * assert.doesNotHaveAllKeys(new Set([{foo: 'bar'}, 'anotherKey'], [{one: 'two'}, 'example']);\n *\n * @name doesNotHaveAllKeys\n * @param {Mixed} object\n * @param {String[]} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAllKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllKeys, true)\n .to.not.have.all.keys(keys);\n }\n\n /**\n * ### .hasAnyDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` has at least one of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {one: 'one'});\n * assert.hasAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), [{one: 'one'}, {two: 'two'}]);\n * assert.hasAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{one: 'one'}, {two: 'two'}]);\n * assert.hasAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {one: 'one'});\n * assert.hasAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {three: 'three'}]);\n * assert.hasAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {two: 'two'}]);\n *\n * @name hasAnyDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAnyDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyDeepKeys, true)\n .to.have.any.deep.keys(keys);\n }\n\n /**\n * ### .hasAllDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` has all and only all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.hasAllDeepKeys(new Map([[{one: 'one'}, 'valueOne']]), {one: 'one'});\n * assert.hasAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{one: 'one'}, {two: 'two'}]);\n * assert.hasAllDeepKeys(new Set([{one: 'one'}]), {one: 'one'});\n * assert.hasAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {two: 'two'}]);\n *\n * @name hasAllDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.hasAllDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllDeepKeys, true)\n .to.have.all.deep.keys(keys);\n }\n\n /**\n * ### .containsAllDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.containsAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {one: 'one'});\n * assert.containsAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{one: 'one'}, {two: 'two'}]);\n * assert.containsAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {one: 'one'});\n * assert.containsAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {two: 'two'}]);\n *\n * @name containsAllDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.containsAllDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllDeepKeys, true)\n .to.contain.all.deep.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAnyDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` has none of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {thisDoesNot: 'exist'});\n * assert.doesNotHaveAnyDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{twenty: 'twenty'}, {fifty: 'fifty'}]);\n * assert.doesNotHaveAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {twenty: 'twenty'});\n * assert.doesNotHaveAnyDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{twenty: 'twenty'}, {fifty: 'fifty'}]);\n *\n * @name doesNotHaveAnyDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAnyDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyDeepKeys, true)\n .to.not.have.any.deep.keys(keys);\n }\n\n /**\n * ### .doesNotHaveAllDeepKeys(object, [keys], [message])\n *\n * Asserts that `object` does not have at least one of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * assert.doesNotHaveAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [1, 2]]), {thisDoesNot: 'exist'});\n * assert.doesNotHaveAllDeepKeys(new Map([[{one: 'one'}, 'valueOne'], [{two: 'two'}, 'valueTwo']]), [{twenty: 'twenty'}, {one: 'one'}]);\n * assert.doesNotHaveAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), {twenty: 'twenty'});\n * assert.doesNotHaveAllDeepKeys(new Set([{one: 'one'}, {two: 'two'}]), [{one: 'one'}, {fifty: 'fifty'}]);\n *\n * @name doesNotHaveAllDeepKeys\n * @param {Mixed} object\n * @param {Array|Object} keys\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotHaveAllDeepKeys = function (obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllDeepKeys, true)\n .to.not.have.all.deep.keys(keys);\n }\n\n /**\n * ### .throws(fn, [errorLike/string/regexp], [string/regexp], [message])\n *\n * If `errorLike` is an `Error` constructor, asserts that `fn` will throw an error that is an\n * instance of `errorLike`.\n * If `errorLike` is an `Error` instance, asserts that the error thrown is the same\n * instance as `errorLike`.\n * If `errMsgMatcher` is provided, it also asserts that the error thrown will have a\n * message matching `errMsgMatcher`.\n *\n * assert.throws(fn, 'Error thrown must have this msg');\n * assert.throws(fn, /Error thrown must have a msg that matches this/);\n * assert.throws(fn, ReferenceError);\n * assert.throws(fn, errorInstance);\n * assert.throws(fn, ReferenceError, 'Error thrown must be a ReferenceError and have this msg');\n * assert.throws(fn, errorInstance, 'Error thrown must be the same errorInstance and have this msg');\n * assert.throws(fn, ReferenceError, /Error thrown must be a ReferenceError and match this/);\n * assert.throws(fn, errorInstance, /Error thrown must be the same errorInstance and match this/);\n *\n * @name throws\n * @alias throw\n * @alias Throw\n * @param {Function} fn\n * @param {ErrorConstructor|Error} errorLike\n * @param {RegExp|String} errMsgMatcher\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Assert\n * @api public\n */\n\n assert.throws = function (fn, errorLike, errMsgMatcher, msg) {\n if ('string' === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n\n var assertErr = new Assertion(fn, msg, assert.throws, true)\n .to.throw(errorLike, errMsgMatcher);\n return flag(assertErr, 'object');\n };\n\n /**\n * ### .doesNotThrow(fn, [errorLike/string/regexp], [string/regexp], [message])\n *\n * If `errorLike` is an `Error` constructor, asserts that `fn` will _not_ throw an error that is an\n * instance of `errorLike`.\n * If `errorLike` is an `Error` instance, asserts that the error thrown is _not_ the same\n * instance as `errorLike`.\n * If `errMsgMatcher` is provided, it also asserts that the error thrown will _not_ have a\n * message matching `errMsgMatcher`.\n *\n * assert.doesNotThrow(fn, 'Any Error thrown must not have this message');\n * assert.doesNotThrow(fn, /Any Error thrown must not match this/);\n * assert.doesNotThrow(fn, Error);\n * assert.doesNotThrow(fn, errorInstance);\n * assert.doesNotThrow(fn, Error, 'Error must not have this message');\n * assert.doesNotThrow(fn, errorInstance, 'Error must not have this message');\n * assert.doesNotThrow(fn, Error, /Error must not match this/);\n * assert.doesNotThrow(fn, errorInstance, /Error must not match this/);\n *\n * @name doesNotThrow\n * @param {Function} fn\n * @param {ErrorConstructor} errorLike\n * @param {RegExp|String} errMsgMatcher\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotThrow = function (fn, errorLike, errMsgMatcher, msg) {\n if ('string' === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n\n new Assertion(fn, msg, assert.doesNotThrow, true)\n .to.not.throw(errorLike, errMsgMatcher);\n };\n\n /**\n * ### .operator(val1, operator, val2, [message])\n *\n * Compares two values using `operator`.\n *\n * assert.operator(1, '<', 2, 'everything is ok');\n * assert.operator(1, '>', 2, 'this will fail');\n *\n * @name operator\n * @param {Mixed} val1\n * @param {String} operator\n * @param {Mixed} val2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.operator = function (val, operator, val2, msg) {\n var ok;\n switch(operator) {\n case '==':\n ok = val == val2;\n break;\n case '===':\n ok = val === val2;\n break;\n case '>':\n ok = val > val2;\n break;\n case '>=':\n ok = val >= val2;\n break;\n case '<':\n ok = val < val2;\n break;\n case '<=':\n ok = val <= val2;\n break;\n case '!=':\n ok = val != val2;\n break;\n case '!==':\n ok = val !== val2;\n break;\n default:\n msg = msg ? msg + ': ' : msg;\n throw new chai.AssertionError(\n msg + 'Invalid operator \"' + operator + '\"',\n undefined,\n assert.operator\n );\n }\n var test = new Assertion(ok, msg, assert.operator, true);\n test.assert(\n true === flag(test, 'object')\n , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2)\n , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) );\n };\n\n /**\n * ### .closeTo(actual, expected, delta, [message])\n *\n * Asserts that the target is equal `expected`, to within a +/- `delta` range.\n *\n * assert.closeTo(1.5, 1, 0.5, 'numbers are close');\n *\n * @name closeTo\n * @param {Number} actual\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.closeTo = function (act, exp, delta, msg) {\n new Assertion(act, msg, assert.closeTo, true).to.be.closeTo(exp, delta);\n };\n\n /**\n * ### .approximately(actual, expected, delta, [message])\n *\n * Asserts that the target is equal `expected`, to within a +/- `delta` range.\n *\n * assert.approximately(1.5, 1, 0.5, 'numbers are close');\n *\n * @name approximately\n * @param {Number} actual\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.approximately = function (act, exp, delta, msg) {\n new Assertion(act, msg, assert.approximately, true)\n .to.be.approximately(exp, delta);\n };\n\n /**\n * ### .sameMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in any order. Uses a\n * strict equality check (===).\n *\n * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members');\n *\n * @name sameMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameMembers, true)\n .to.have.same.members(set2);\n }\n\n /**\n * ### .notSameMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in any order.\n * Uses a strict equality check (===).\n *\n * assert.notSameMembers([ 1, 2, 3 ], [ 5, 1, 3 ], 'not same members');\n *\n * @name notSameMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameMembers, true)\n .to.not.have.same.members(set2);\n }\n\n /**\n * ### .sameDeepMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in any order. Uses a\n * deep equality check.\n *\n * assert.sameDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [{ b: 2 }, { a: 1 }, { c: 3 }], 'same deep members');\n *\n * @name sameDeepMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameDeepMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameDeepMembers, true)\n .to.have.same.deep.members(set2);\n }\n\n /**\n * ### .notSameDeepMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in any order.\n * Uses a deep equality check.\n *\n * assert.notSameDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [{ b: 2 }, { a: 1 }, { f: 5 }], 'not same deep members');\n *\n * @name notSameDeepMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameDeepMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameDeepMembers, true)\n .to.not.have.same.deep.members(set2);\n }\n\n /**\n * ### .sameOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in the same order.\n * Uses a strict equality check (===).\n *\n * assert.sameOrderedMembers([ 1, 2, 3 ], [ 1, 2, 3 ], 'same ordered members');\n *\n * @name sameOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameOrderedMembers, true)\n .to.have.same.ordered.members(set2);\n }\n\n /**\n * ### .notSameOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in the same\n * order. Uses a strict equality check (===).\n *\n * assert.notSameOrderedMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'not same ordered members');\n *\n * @name notSameOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameOrderedMembers, true)\n .to.not.have.same.ordered.members(set2);\n }\n\n /**\n * ### .sameDeepOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members in the same order.\n * Uses a deep equality check.\n *\n * assert.sameDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { b: 2 }, { c: 3 } ], 'same deep ordered members');\n *\n * @name sameDeepOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameDeepOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.sameDeepOrderedMembers, true)\n .to.have.same.deep.ordered.members(set2);\n }\n\n /**\n * ### .notSameDeepOrderedMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` don't have the same members in the same\n * order. Uses a deep equality check.\n *\n * assert.notSameDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { b: 2 }, { z: 5 } ], 'not same deep ordered members');\n * assert.notSameDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { a: 1 }, { c: 3 } ], 'not same deep ordered members');\n *\n * @name notSameDeepOrderedMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notSameDeepOrderedMembers = function (set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameDeepOrderedMembers, true)\n .to.not.have.same.deep.ordered.members(set2);\n }\n\n /**\n * ### .includeMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in any order. Uses a\n * strict equality check (===). Duplicates are ignored.\n *\n * assert.includeMembers([ 1, 2, 3 ], [ 2, 1, 2 ], 'include members');\n *\n * @name includeMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeMembers, true)\n .to.include.members(subset);\n }\n\n /**\n * ### .notIncludeMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in any order. Uses a\n * strict equality check (===). Duplicates are ignored.\n *\n * assert.notIncludeMembers([ 1, 2, 3 ], [ 5, 1 ], 'not include members');\n *\n * @name notIncludeMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeMembers, true)\n .to.not.include.members(subset);\n }\n\n /**\n * ### .includeDeepMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in any order. Uses a deep\n * equality check. Duplicates are ignored.\n *\n * assert.includeDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { a: 1 }, { b: 2 } ], 'include deep members');\n *\n * @name includeDeepMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeDeepMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeDeepMembers, true)\n .to.include.deep.members(subset);\n }\n\n /**\n * ### .notIncludeDeepMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in any order. Uses a\n * deep equality check. Duplicates are ignored.\n *\n * assert.notIncludeDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { f: 5 } ], 'not include deep members');\n *\n * @name notIncludeDeepMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeDeepMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeDeepMembers, true)\n .to.not.include.deep.members(subset);\n }\n\n /**\n * ### .includeOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a strict equality\n * check (===).\n *\n * assert.includeOrderedMembers([ 1, 2, 3 ], [ 1, 2 ], 'include ordered members');\n *\n * @name includeOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeOrderedMembers, true)\n .to.include.ordered.members(subset);\n }\n\n /**\n * ### .notIncludeOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a strict equality\n * check (===).\n *\n * assert.notIncludeOrderedMembers([ 1, 2, 3 ], [ 2, 1 ], 'not include ordered members');\n * assert.notIncludeOrderedMembers([ 1, 2, 3 ], [ 2, 3 ], 'not include ordered members');\n *\n * @name notIncludeOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeOrderedMembers, true)\n .to.not.include.ordered.members(subset);\n }\n\n /**\n * ### .includeDeepOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a deep equality\n * check.\n *\n * assert.includeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { b: 2 } ], 'include deep ordered members');\n *\n * @name includeDeepOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeDeepOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.includeDeepOrderedMembers, true)\n .to.include.deep.ordered.members(subset);\n }\n\n /**\n * ### .notIncludeDeepOrderedMembers(superset, subset, [message])\n *\n * Asserts that `subset` isn't included in `superset` in the same order\n * beginning with the first element in `superset`. Uses a deep equality\n * check.\n *\n * assert.notIncludeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { a: 1 }, { f: 5 } ], 'not include deep ordered members');\n * assert.notIncludeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { a: 1 } ], 'not include deep ordered members');\n * assert.notIncludeDeepOrderedMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { c: 3 } ], 'not include deep ordered members');\n *\n * @name notIncludeDeepOrderedMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notIncludeDeepOrderedMembers = function (superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeDeepOrderedMembers, true)\n .to.not.include.deep.ordered.members(subset);\n }\n\n /**\n * ### .oneOf(inList, list, [message])\n *\n * Asserts that non-object, non-array value `inList` appears in the flat array `list`.\n *\n * assert.oneOf(1, [ 2, 1 ], 'Not found in list');\n *\n * @name oneOf\n * @param {*} inList\n * @param {Array<*>} list\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.oneOf = function (inList, list, msg) {\n new Assertion(inList, msg, assert.oneOf, true).to.be.oneOf(list);\n }\n\n /**\n * ### .changes(function, object, property, [message])\n *\n * Asserts that a function changes the value of a property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 22 };\n * assert.changes(fn, obj, 'val');\n *\n * @name changes\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.changes = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.changes, true).to.change(obj, prop);\n }\n\n /**\n * ### .changesBy(function, object, property, delta, [message])\n *\n * Asserts that a function changes the value of a property by an amount (delta).\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val += 2 };\n * assert.changesBy(fn, obj, 'val', 2);\n *\n * @name changesBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.changesBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.changesBy, true)\n .to.change(obj, prop).by(delta);\n }\n\n /**\n * ### .doesNotChange(function, object, property, [message])\n *\n * Asserts that a function does not change the value of a property.\n *\n * var obj = { val: 10 };\n * var fn = function() { console.log('foo'); };\n * assert.doesNotChange(fn, obj, 'val');\n *\n * @name doesNotChange\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotChange = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotChange, true)\n .to.not.change(obj, prop);\n }\n\n /**\n * ### .changesButNotBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not change the value of a property or of a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val += 10 };\n * assert.changesButNotBy(fn, obj, 'val', 5);\n *\n * @name changesButNotBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.changesButNotBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.changesButNotBy, true)\n .to.change(obj, prop).but.not.by(delta);\n }\n\n /**\n * ### .increases(function, object, property, [message])\n *\n * Asserts that a function increases a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 13 };\n * assert.increases(fn, obj, 'val');\n *\n * @name increases\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.increases = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.increases, true)\n .to.increase(obj, prop);\n }\n\n /**\n * ### .increasesBy(function, object, property, delta, [message])\n *\n * Asserts that a function increases a numeric object property or a function's return value by an amount (delta).\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val += 10 };\n * assert.increasesBy(fn, obj, 'val', 10);\n *\n * @name increasesBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.increasesBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.increasesBy, true)\n .to.increase(obj, prop).by(delta);\n }\n\n /**\n * ### .doesNotIncrease(function, object, property, [message])\n *\n * Asserts that a function does not increase a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 8 };\n * assert.doesNotIncrease(fn, obj, 'val');\n *\n * @name doesNotIncrease\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotIncrease = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotIncrease, true)\n .to.not.increase(obj, prop);\n }\n\n /**\n * ### .increasesButNotBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not increase a numeric object property or function's return value by an amount (delta).\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 15 };\n * assert.increasesButNotBy(fn, obj, 'val', 10);\n *\n * @name increasesButNotBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.increasesButNotBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.increasesButNotBy, true)\n .to.increase(obj, prop).but.not.by(delta);\n }\n\n /**\n * ### .decreases(function, object, property, [message])\n *\n * Asserts that a function decreases a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * assert.decreases(fn, obj, 'val');\n *\n * @name decreases\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.decreases = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.decreases, true)\n .to.decrease(obj, prop);\n }\n\n /**\n * ### .decreasesBy(function, object, property, delta, [message])\n *\n * Asserts that a function decreases a numeric object property or a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val -= 5 };\n * assert.decreasesBy(fn, obj, 'val', 5);\n *\n * @name decreasesBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.decreasesBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.decreasesBy, true)\n .to.decrease(obj, prop).by(delta);\n }\n\n /**\n * ### .doesNotDecrease(function, object, property, [message])\n *\n * Asserts that a function does not decreases a numeric object property.\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 15 };\n * assert.doesNotDecrease(fn, obj, 'val');\n *\n * @name doesNotDecrease\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotDecrease = function (fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === 'function') {\n msg = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotDecrease, true)\n .to.not.decrease(obj, prop);\n }\n\n /**\n * ### .doesNotDecreaseBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not decreases a numeric object property or a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * assert.doesNotDecreaseBy(fn, obj, 'val', 1);\n *\n * @name doesNotDecreaseBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotDecreaseBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n return new Assertion(fn, msg, assert.doesNotDecreaseBy, true)\n .to.not.decrease(obj, prop).by(delta);\n }\n\n /**\n * ### .decreasesButNotBy(function, object, property, delta, [message])\n *\n * Asserts that a function does not decreases a numeric object property or a function's return value by an amount (delta)\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * assert.decreasesButNotBy(fn, obj, 'val', 1);\n *\n * @name decreasesButNotBy\n * @param {Function} modifier function\n * @param {Object} object or getter function\n * @param {String} property name _optional_\n * @param {Number} change amount (delta)\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.decreasesButNotBy = function (fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === 'function') {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n\n new Assertion(fn, msg, assert.decreasesButNotBy, true)\n .to.decrease(obj, prop).but.not.by(delta);\n }\n\n /*!\n * ### .ifError(object)\n *\n * Asserts if value is not a false value, and throws if it is a true value.\n * This is added to allow for chai to be a drop-in replacement for Node's\n * assert class.\n *\n * var err = new Error('I am a custom error');\n * assert.ifError(err); // Rethrows err!\n *\n * @name ifError\n * @param {Object} object\n * @namespace Assert\n * @api public\n */\n\n assert.ifError = function (val) {\n if (val) {\n throw(val);\n }\n };\n\n /**\n * ### .isExtensible(object)\n *\n * Asserts that `object` is extensible (can have new properties added to it).\n *\n * assert.isExtensible({});\n *\n * @name isExtensible\n * @alias extensible\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isExtensible = function (obj, msg) {\n new Assertion(obj, msg, assert.isExtensible, true).to.be.extensible;\n };\n\n /**\n * ### .isNotExtensible(object)\n *\n * Asserts that `object` is _not_ extensible.\n *\n * var nonExtensibleObject = Object.preventExtensions({});\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.freeze({});\n *\n * assert.isNotExtensible(nonExtensibleObject);\n * assert.isNotExtensible(sealedObject);\n * assert.isNotExtensible(frozenObject);\n *\n * @name isNotExtensible\n * @alias notExtensible\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotExtensible = function (obj, msg) {\n new Assertion(obj, msg, assert.isNotExtensible, true).to.not.be.extensible;\n };\n\n /**\n * ### .isSealed(object)\n *\n * Asserts that `object` is sealed (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.seal({});\n *\n * assert.isSealed(sealedObject);\n * assert.isSealed(frozenObject);\n *\n * @name isSealed\n * @alias sealed\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isSealed = function (obj, msg) {\n new Assertion(obj, msg, assert.isSealed, true).to.be.sealed;\n };\n\n /**\n * ### .isNotSealed(object)\n *\n * Asserts that `object` is _not_ sealed.\n *\n * assert.isNotSealed({});\n *\n * @name isNotSealed\n * @alias notSealed\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotSealed = function (obj, msg) {\n new Assertion(obj, msg, assert.isNotSealed, true).to.not.be.sealed;\n };\n\n /**\n * ### .isFrozen(object)\n *\n * Asserts that `object` is frozen (cannot have new properties added to it\n * and its existing properties cannot be modified).\n *\n * var frozenObject = Object.freeze({});\n * assert.frozen(frozenObject);\n *\n * @name isFrozen\n * @alias frozen\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isFrozen = function (obj, msg) {\n new Assertion(obj, msg, assert.isFrozen, true).to.be.frozen;\n };\n\n /**\n * ### .isNotFrozen(object)\n *\n * Asserts that `object` is _not_ frozen.\n *\n * assert.isNotFrozen({});\n *\n * @name isNotFrozen\n * @alias notFrozen\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFrozen = function (obj, msg) {\n new Assertion(obj, msg, assert.isNotFrozen, true).to.not.be.frozen;\n };\n\n /**\n * ### .isEmpty(target)\n *\n * Asserts that the target does not contain any values.\n * For arrays and strings, it checks the `length` property.\n * For `Map` and `Set` instances, it checks the `size` property.\n * For non-function objects, it gets the count of own\n * enumerable string keys.\n *\n * assert.isEmpty([]);\n * assert.isEmpty('');\n * assert.isEmpty(new Map);\n * assert.isEmpty({});\n *\n * @name isEmpty\n * @alias empty\n * @param {Object|Array|String|Map|Set} target\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isEmpty, true).to.be.empty;\n };\n\n /**\n * ### .isNotEmpty(target)\n *\n * Asserts that the target contains values.\n * For arrays and strings, it checks the `length` property.\n * For `Map` and `Set` instances, it checks the `size` property.\n * For non-function objects, it gets the count of own\n * enumerable string keys.\n *\n * assert.isNotEmpty([1, 2]);\n * assert.isNotEmpty('34');\n * assert.isNotEmpty(new Set([5, 6]));\n * assert.isNotEmpty({ key: 7 });\n *\n * @name isNotEmpty\n * @alias notEmpty\n * @param {Object|Array|String|Map|Set} target\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isNotEmpty, true).to.not.be.empty;\n };\n\n /*!\n * Aliases.\n */\n\n (function alias(name, as){\n assert[as] = assert[name];\n return alias;\n })\n ('isOk', 'ok')\n ('isNotOk', 'notOk')\n ('throws', 'throw')\n ('throws', 'Throw')\n ('isExtensible', 'extensible')\n ('isNotExtensible', 'notExtensible')\n ('isSealed', 'sealed')\n ('isNotSealed', 'notSealed')\n ('isFrozen', 'frozen')\n ('isNotFrozen', 'notFrozen')\n ('isEmpty', 'empty')\n ('isNotEmpty', 'notEmpty');\n};\n", "/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer \n * MIT Licensed\n */\n\nvar used = [];\n\n/*!\n * Chai version\n */\n\nexports.version = '4.3.8';\n\n/*!\n * Assertion Error\n */\n\nexports.AssertionError = require('assertion-error');\n\n/*!\n * Utils for plugins (not exported)\n */\n\nvar util = require('./chai/utils');\n\n/**\n * # .use(function)\n *\n * Provides a way to extend the internals of Chai.\n *\n * @param {Function}\n * @returns {this} for chaining\n * @api public\n */\n\nexports.use = function (fn) {\n if (!~used.indexOf(fn)) {\n fn(exports, util);\n used.push(fn);\n }\n\n return exports;\n};\n\n/*!\n * Utility Functions\n */\n\nexports.util = util;\n\n/*!\n * Configuration\n */\n\nvar config = require('./chai/config');\nexports.config = config;\n\n/*!\n * Primary `Assertion` prototype\n */\n\nvar assertion = require('./chai/assertion');\nexports.use(assertion);\n\n/*!\n * Core Assertions\n */\n\nvar core = require('./chai/core/assertions');\nexports.use(core);\n\n/*!\n * Expect interface\n */\n\nvar expect = require('./chai/interface/expect');\nexports.use(expect);\n\n/*!\n * Should interface\n */\n\nvar should = require('./chai/interface/should');\nexports.use(should);\n\n/*!\n * Assert interface\n */\n\nvar assert = require('./chai/interface/assert');\nexports.use(assert);\n", "module.exports = require('./lib/chai');\n", "import chai from './index.js';\n\nexport const expect = chai.expect;\nexport const version = chai.version;\nexport const Assertion = chai.Assertion;\nexport const AssertionError = chai.AssertionError;\nexport const util = chai.util;\nexport const config = chai.config;\nexport const use = chai.use;\nexport const should = chai.should;\nexport const assert = chai.assert;\nexport const core = chai.core;\n\nexport default chai;\n"], - "mappings": "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", - "names": ["AssertionError", "AssertionError", "config", "config", "config", "chai", "config", "chai", "chai", "chai", "chai", "chai", "config", "util", "AssertionError", "Assertion", "chai", "Assertion", "AssertionError", "matchIdx", "chai", "util", "chai", "util", "Assertion", "should", "chai", "util", "Assertion", "assert", "util", "config", "core", "expect", "should", "assert", "require_chai", "chai"] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js b/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js deleted file mode 100644 index 2b0997d..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js +++ /dev/null @@ -1,485 +0,0 @@ -import { - __commonJS -} from "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/diff-sequences/build/index.js -var require_build = __commonJS({ - "../../node_modules/diff-sequences/build/index.js"(exports) { - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = diffSequence; - var pkg = "diff-sequences"; - var NOT_YET_SET = 0; - var countCommonItemsF = (aIndex, aEnd, bIndex, bEnd, isCommon) => { - let nCommon = 0; - while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) { - aIndex += 1; - bIndex += 1; - nCommon += 1; - } - return nCommon; - }; - var countCommonItemsR = (aStart, aIndex, bStart, bIndex, isCommon) => { - let nCommon = 0; - while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) { - aIndex -= 1; - bIndex -= 1; - nCommon += 1; - } - return nCommon; - }; - var extendPathsF = (d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF) => { - let iF = 0; - let kF = -d; - let aFirst = aIndexesF[iF]; - let aIndexPrev1 = aFirst; - aIndexesF[iF] += countCommonItemsF( - aFirst + 1, - aEnd, - bF + aFirst - kF + 1, - bEnd, - isCommon - ); - const nF = d < iMaxF ? d : iMaxF; - for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) { - if (iF !== d && aIndexPrev1 < aIndexesF[iF]) { - aFirst = aIndexesF[iF]; - } else { - aFirst = aIndexPrev1 + 1; - if (aEnd <= aFirst) { - return iF - 1; - } - } - aIndexPrev1 = aIndexesF[iF]; - aIndexesF[iF] = aFirst + countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon); - } - return iMaxF; - }; - var extendPathsR = (d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR) => { - let iR = 0; - let kR = d; - let aFirst = aIndexesR[iR]; - let aIndexPrev1 = aFirst; - aIndexesR[iR] -= countCommonItemsR( - aStart, - aFirst - 1, - bStart, - bR + aFirst - kR - 1, - isCommon - ); - const nR = d < iMaxR ? d : iMaxR; - for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) { - if (iR !== d && aIndexesR[iR] < aIndexPrev1) { - aFirst = aIndexesR[iR]; - } else { - aFirst = aIndexPrev1 - 1; - if (aFirst < aStart) { - return iR - 1; - } - } - aIndexPrev1 = aIndexesR[iR]; - aIndexesR[iR] = aFirst - countCommonItemsR( - aStart, - aFirst - 1, - bStart, - bR + aFirst - kR - 1, - isCommon - ); - } - return iMaxR; - }; - var extendOverlappablePathsF = (d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division) => { - const bF = bStart - aStart; - const aLength = aEnd - aStart; - const bLength = bEnd - bStart; - const baDeltaLength = bLength - aLength; - const kMinOverlapF = -baDeltaLength - (d - 1); - const kMaxOverlapF = -baDeltaLength + (d - 1); - let aIndexPrev1 = NOT_YET_SET; - const nF = d < iMaxF ? d : iMaxF; - for (let iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) { - const insert = iF === 0 || iF !== d && aIndexPrev1 < aIndexesF[iF]; - const aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1; - const aFirst = insert ? aLastPrev : aLastPrev + 1; - const bFirst = bF + aFirst - kF; - const nCommonF = countCommonItemsF( - aFirst + 1, - aEnd, - bFirst + 1, - bEnd, - isCommon - ); - const aLast = aFirst + nCommonF; - aIndexPrev1 = aIndexesF[iF]; - aIndexesF[iF] = aLast; - if (kMinOverlapF <= kF && kF <= kMaxOverlapF) { - const iR = (d - 1 - (kF + baDeltaLength)) / 2; - if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) { - const bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1); - const nCommonR = countCommonItemsR( - aStart, - aLastPrev, - bStart, - bLastPrev, - isCommon - ); - const aIndexPrevFirst = aLastPrev - nCommonR; - const bIndexPrevFirst = bLastPrev - nCommonR; - const aEndPreceding = aIndexPrevFirst + 1; - const bEndPreceding = bIndexPrevFirst + 1; - division.nChangePreceding = d - 1; - if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) { - division.aEndPreceding = aStart; - division.bEndPreceding = bStart; - } else { - division.aEndPreceding = aEndPreceding; - division.bEndPreceding = bEndPreceding; - } - division.nCommonPreceding = nCommonR; - if (nCommonR !== 0) { - division.aCommonPreceding = aEndPreceding; - division.bCommonPreceding = bEndPreceding; - } - division.nCommonFollowing = nCommonF; - if (nCommonF !== 0) { - division.aCommonFollowing = aFirst + 1; - division.bCommonFollowing = bFirst + 1; - } - const aStartFollowing = aLast + 1; - const bStartFollowing = bFirst + nCommonF + 1; - division.nChangeFollowing = d - 1; - if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) { - division.aStartFollowing = aEnd; - division.bStartFollowing = bEnd; - } else { - division.aStartFollowing = aStartFollowing; - division.bStartFollowing = bStartFollowing; - } - return true; - } - } - } - return false; - }; - var extendOverlappablePathsR = (d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division) => { - const bR = bEnd - aEnd; - const aLength = aEnd - aStart; - const bLength = bEnd - bStart; - const baDeltaLength = bLength - aLength; - const kMinOverlapR = baDeltaLength - d; - const kMaxOverlapR = baDeltaLength + d; - let aIndexPrev1 = NOT_YET_SET; - const nR = d < iMaxR ? d : iMaxR; - for (let iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) { - const insert = iR === 0 || iR !== d && aIndexesR[iR] < aIndexPrev1; - const aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1; - const aFirst = insert ? aLastPrev : aLastPrev - 1; - const bFirst = bR + aFirst - kR; - const nCommonR = countCommonItemsR( - aStart, - aFirst - 1, - bStart, - bFirst - 1, - isCommon - ); - const aLast = aFirst - nCommonR; - aIndexPrev1 = aIndexesR[iR]; - aIndexesR[iR] = aLast; - if (kMinOverlapR <= kR && kR <= kMaxOverlapR) { - const iF = (d + (kR - baDeltaLength)) / 2; - if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) { - const bLast = bFirst - nCommonR; - division.nChangePreceding = d; - if (d === aLast + bLast - aStart - bStart) { - division.aEndPreceding = aStart; - division.bEndPreceding = bStart; - } else { - division.aEndPreceding = aLast; - division.bEndPreceding = bLast; - } - division.nCommonPreceding = nCommonR; - if (nCommonR !== 0) { - division.aCommonPreceding = aLast; - division.bCommonPreceding = bLast; - } - division.nChangeFollowing = d - 1; - if (d === 1) { - division.nCommonFollowing = 0; - division.aStartFollowing = aEnd; - division.bStartFollowing = bEnd; - } else { - const bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1); - const nCommonF = countCommonItemsF( - aLastPrev, - aEnd, - bLastPrev, - bEnd, - isCommon - ); - division.nCommonFollowing = nCommonF; - if (nCommonF !== 0) { - division.aCommonFollowing = aLastPrev; - division.bCommonFollowing = bLastPrev; - } - const aStartFollowing = aLastPrev + nCommonF; - const bStartFollowing = bLastPrev + nCommonF; - if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) { - division.aStartFollowing = aEnd; - division.bStartFollowing = bEnd; - } else { - division.aStartFollowing = aStartFollowing; - division.bStartFollowing = bStartFollowing; - } - } - return true; - } - } - } - return false; - }; - var divide = (nChange, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, aIndexesR, division) => { - const bF = bStart - aStart; - const bR = bEnd - aEnd; - const aLength = aEnd - aStart; - const bLength = bEnd - bStart; - const baDeltaLength = bLength - aLength; - let iMaxF = aLength; - let iMaxR = aLength; - aIndexesF[0] = aStart - 1; - aIndexesR[0] = aEnd; - if (baDeltaLength % 2 === 0) { - const dMin = (nChange || baDeltaLength) / 2; - const dMax = (aLength + bLength) / 2; - for (let d = 1; d <= dMax; d += 1) { - iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); - if (d < dMin) { - iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR); - } else if ( - // If a reverse path overlaps a forward path in the same diagonal, - // return a division of the index intervals at the middle change. - extendOverlappablePathsR( - d, - aStart, - aEnd, - bStart, - bEnd, - isCommon, - aIndexesF, - iMaxF, - aIndexesR, - iMaxR, - division - ) - ) { - return; - } - } - } else { - const dMin = ((nChange || baDeltaLength) + 1) / 2; - const dMax = (aLength + bLength + 1) / 2; - let d = 1; - iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); - for (d += 1; d <= dMax; d += 1) { - iMaxR = extendPathsR( - d - 1, - aStart, - bStart, - bR, - isCommon, - aIndexesR, - iMaxR - ); - if (d < dMin) { - iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); - } else if ( - // If a forward path overlaps a reverse path in the same diagonal, - // return a division of the index intervals at the middle change. - extendOverlappablePathsF( - d, - aStart, - aEnd, - bStart, - bEnd, - isCommon, - aIndexesF, - iMaxF, - aIndexesR, - iMaxR, - division - ) - ) { - return; - } - } - } - throw new Error( - `${pkg}: no overlap aStart=${aStart} aEnd=${aEnd} bStart=${bStart} bEnd=${bEnd}` - ); - }; - var findSubsequences = (nChange, aStart, aEnd, bStart, bEnd, transposed, callbacks, aIndexesF, aIndexesR, division) => { - if (bEnd - bStart < aEnd - aStart) { - transposed = !transposed; - if (transposed && callbacks.length === 1) { - const { foundSubsequence: foundSubsequence2, isCommon: isCommon2 } = callbacks[0]; - callbacks[1] = { - foundSubsequence: (nCommon, bCommon, aCommon) => { - foundSubsequence2(nCommon, aCommon, bCommon); - }, - isCommon: (bIndex, aIndex) => isCommon2(aIndex, bIndex) - }; - } - const tStart = aStart; - const tEnd = aEnd; - aStart = bStart; - aEnd = bEnd; - bStart = tStart; - bEnd = tEnd; - } - const { foundSubsequence, isCommon } = callbacks[transposed ? 1 : 0]; - divide( - nChange, - aStart, - aEnd, - bStart, - bEnd, - isCommon, - aIndexesF, - aIndexesR, - division - ); - const { - nChangePreceding, - aEndPreceding, - bEndPreceding, - nCommonPreceding, - aCommonPreceding, - bCommonPreceding, - nCommonFollowing, - aCommonFollowing, - bCommonFollowing, - nChangeFollowing, - aStartFollowing, - bStartFollowing - } = division; - if (aStart < aEndPreceding && bStart < bEndPreceding) { - findSubsequences( - nChangePreceding, - aStart, - aEndPreceding, - bStart, - bEndPreceding, - transposed, - callbacks, - aIndexesF, - aIndexesR, - division - ); - } - if (nCommonPreceding !== 0) { - foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding); - } - if (nCommonFollowing !== 0) { - foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing); - } - if (aStartFollowing < aEnd && bStartFollowing < bEnd) { - findSubsequences( - nChangeFollowing, - aStartFollowing, - aEnd, - bStartFollowing, - bEnd, - transposed, - callbacks, - aIndexesF, - aIndexesR, - division - ); - } - }; - var validateLength = (name, arg) => { - if (typeof arg !== "number") { - throw new TypeError(`${pkg}: ${name} typeof ${typeof arg} is not a number`); - } - if (!Number.isSafeInteger(arg)) { - throw new RangeError(`${pkg}: ${name} value ${arg} is not a safe integer`); - } - if (arg < 0) { - throw new RangeError(`${pkg}: ${name} value ${arg} is a negative integer`); - } - }; - var validateCallback = (name, arg) => { - const type = typeof arg; - if (type !== "function") { - throw new TypeError(`${pkg}: ${name} typeof ${type} is not a function`); - } - }; - function diffSequence(aLength, bLength, isCommon, foundSubsequence) { - validateLength("aLength", aLength); - validateLength("bLength", bLength); - validateCallback("isCommon", isCommon); - validateCallback("foundSubsequence", foundSubsequence); - const nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon); - if (nCommonF !== 0) { - foundSubsequence(nCommonF, 0, 0); - } - if (aLength !== nCommonF || bLength !== nCommonF) { - const aStart = nCommonF; - const bStart = nCommonF; - const nCommonR = countCommonItemsR( - aStart, - aLength - 1, - bStart, - bLength - 1, - isCommon - ); - const aEnd = aLength - nCommonR; - const bEnd = bLength - nCommonR; - const nCommonFR = nCommonF + nCommonR; - if (aLength !== nCommonFR && bLength !== nCommonFR) { - const nChange = 0; - const transposed = false; - const callbacks = [ - { - foundSubsequence, - isCommon - } - ]; - const aIndexesF = [NOT_YET_SET]; - const aIndexesR = [NOT_YET_SET]; - const division = { - aCommonFollowing: NOT_YET_SET, - aCommonPreceding: NOT_YET_SET, - aEndPreceding: NOT_YET_SET, - aStartFollowing: NOT_YET_SET, - bCommonFollowing: NOT_YET_SET, - bCommonPreceding: NOT_YET_SET, - bEndPreceding: NOT_YET_SET, - bStartFollowing: NOT_YET_SET, - nChangeFollowing: NOT_YET_SET, - nChangePreceding: NOT_YET_SET, - nCommonFollowing: NOT_YET_SET, - nCommonPreceding: NOT_YET_SET - }; - findSubsequences( - nChange, - aStart, - aEnd, - bStart, - bEnd, - transposed, - callbacks, - aIndexesF, - aIndexesR, - division - ); - } - if (nCommonR !== 0) { - foundSubsequence(nCommonR, aEnd, bEnd); - } - } - } - } -}); -export default require_build(); -//# sourceMappingURL=vitest___diff-sequences.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map b/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map deleted file mode 100644 index 8245223..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___diff-sequences.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/diff-sequences/build/index.js"], - "sourcesContent": ["'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = diffSequence;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// This diff-sequences package implements the linear space variation in\n// An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers\n\n// Relationship in notation between Myers paper and this package:\n// A is a\n// N is aLength, aEnd - aStart, and so on\n// x is aIndex, aFirst, aLast, and so on\n// B is b\n// M is bLength, bEnd - bStart, and so on\n// y is bIndex, bFirst, bLast, and so on\n// Δ = N - M is negative of baDeltaLength = bLength - aLength\n// D is d\n// k is kF\n// k + Δ is kF = kR - baDeltaLength\n// V is aIndexesF or aIndexesR (see comment below about Indexes type)\n// index intervals [1, N] and [1, M] are [0, aLength) and [0, bLength)\n// starting point in forward direction (0, 0) is (-1, -1)\n// starting point in reverse direction (N + 1, M + 1) is (aLength, bLength)\n\n// The “edit graph” for sequences a and b corresponds to items:\n// in a on the horizontal axis\n// in b on the vertical axis\n//\n// Given a-coordinate of a point in a diagonal, you can compute b-coordinate.\n//\n// Forward diagonals kF:\n// zero diagonal intersects top left corner\n// positive diagonals intersect top edge\n// negative diagonals insersect left edge\n//\n// Reverse diagonals kR:\n// zero diagonal intersects bottom right corner\n// positive diagonals intersect right edge\n// negative diagonals intersect bottom edge\n\n// The graph contains a directed acyclic graph of edges:\n// horizontal: delete an item from a\n// vertical: insert an item from b\n// diagonal: common item in a and b\n//\n// The algorithm solves dual problems in the graph analogy:\n// Find longest common subsequence: path with maximum number of diagonal edges\n// Find shortest edit script: path with minimum number of non-diagonal edges\n\n// Input callback function compares items at indexes in the sequences.\n\n// Output callback function receives the number of adjacent items\n// and starting indexes of each common subsequence.\n// Either original functions or wrapped to swap indexes if graph is transposed.\n// Indexes in sequence a of last point of forward or reverse paths in graph.\n// Myers algorithm indexes by diagonal k which for negative is bad deopt in V8.\n// This package indexes by iF and iR which are greater than or equal to zero.\n// and also updates the index arrays in place to cut memory in half.\n// kF = 2 * iF - d\n// kR = d - 2 * iR\n// Division of index intervals in sequences a and b at the middle change.\n// Invariant: intervals do not have common items at the start or end.\nconst pkg = 'diff-sequences'; // for error messages\nconst NOT_YET_SET = 0; // small int instead of undefined to avoid deopt in V8\n\n// Return the number of common items that follow in forward direction.\n// The length of what Myers paper calls a “snake” in a forward path.\nconst countCommonItemsF = (aIndex, aEnd, bIndex, bEnd, isCommon) => {\n let nCommon = 0;\n while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) {\n aIndex += 1;\n bIndex += 1;\n nCommon += 1;\n }\n return nCommon;\n};\n\n// Return the number of common items that precede in reverse direction.\n// The length of what Myers paper calls a “snake” in a reverse path.\nconst countCommonItemsR = (aStart, aIndex, bStart, bIndex, isCommon) => {\n let nCommon = 0;\n while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) {\n aIndex -= 1;\n bIndex -= 1;\n nCommon += 1;\n }\n return nCommon;\n};\n\n// A simple function to extend forward paths from (d - 1) to d changes\n// when forward and reverse paths cannot yet overlap.\nconst extendPathsF = (\n d,\n aEnd,\n bEnd,\n bF,\n isCommon,\n aIndexesF,\n iMaxF // return the value because optimization might decrease it\n) => {\n // Unroll the first iteration.\n let iF = 0;\n let kF = -d; // kF = 2 * iF - d\n let aFirst = aIndexesF[iF]; // in first iteration always insert\n let aIndexPrev1 = aFirst; // prev value of [iF - 1] in next iteration\n aIndexesF[iF] += countCommonItemsF(\n aFirst + 1,\n aEnd,\n bF + aFirst - kF + 1,\n bEnd,\n isCommon\n );\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nF = d < iMaxF ? d : iMaxF;\n\n // The diagonals kF are odd when d is odd and even when d is even.\n for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) {\n // To get first point of path segment, move one change in forward direction\n // from last point of previous path segment in an adjacent diagonal.\n // In last possible iteration when iF === d and kF === d always delete.\n if (iF !== d && aIndexPrev1 < aIndexesF[iF]) {\n aFirst = aIndexesF[iF]; // vertical to insert from b\n } else {\n aFirst = aIndexPrev1 + 1; // horizontal to delete from a\n\n if (aEnd <= aFirst) {\n // Optimization: delete moved past right of graph.\n return iF - 1;\n }\n }\n\n // To get last point of path segment, move along diagonal of common items.\n aIndexPrev1 = aIndexesF[iF];\n aIndexesF[iF] =\n aFirst +\n countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon);\n }\n return iMaxF;\n};\n\n// A simple function to extend reverse paths from (d - 1) to d changes\n// when reverse and forward paths cannot yet overlap.\nconst extendPathsR = (\n d,\n aStart,\n bStart,\n bR,\n isCommon,\n aIndexesR,\n iMaxR // return the value because optimization might decrease it\n) => {\n // Unroll the first iteration.\n let iR = 0;\n let kR = d; // kR = d - 2 * iR\n let aFirst = aIndexesR[iR]; // in first iteration always insert\n let aIndexPrev1 = aFirst; // prev value of [iR - 1] in next iteration\n aIndexesR[iR] -= countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bR + aFirst - kR - 1,\n isCommon\n );\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nR = d < iMaxR ? d : iMaxR;\n\n // The diagonals kR are odd when d is odd and even when d is even.\n for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) {\n // To get first point of path segment, move one change in reverse direction\n // from last point of previous path segment in an adjacent diagonal.\n // In last possible iteration when iR === d and kR === -d always delete.\n if (iR !== d && aIndexesR[iR] < aIndexPrev1) {\n aFirst = aIndexesR[iR]; // vertical to insert from b\n } else {\n aFirst = aIndexPrev1 - 1; // horizontal to delete from a\n\n if (aFirst < aStart) {\n // Optimization: delete moved past left of graph.\n return iR - 1;\n }\n }\n\n // To get last point of path segment, move along diagonal of common items.\n aIndexPrev1 = aIndexesR[iR];\n aIndexesR[iR] =\n aFirst -\n countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bR + aFirst - kR - 1,\n isCommon\n );\n }\n return iMaxR;\n};\n\n// A complete function to extend forward paths from (d - 1) to d changes.\n// Return true if a path overlaps reverse path of (d - 1) changes in its diagonal.\nconst extendOverlappablePathsF = (\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division // update prop values if return true\n) => {\n const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n const baDeltaLength = bLength - aLength; // kF = kR - baDeltaLength\n\n // Range of diagonals in which forward and reverse paths might overlap.\n const kMinOverlapF = -baDeltaLength - (d - 1); // -(d - 1) <= kR\n const kMaxOverlapF = -baDeltaLength + (d - 1); // kR <= (d - 1)\n\n let aIndexPrev1 = NOT_YET_SET; // prev value of [iF - 1] in next iteration\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nF = d < iMaxF ? d : iMaxF;\n\n // The diagonals kF = 2 * iF - d are odd when d is odd and even when d is even.\n for (let iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) {\n // To get first point of path segment, move one change in forward direction\n // from last point of previous path segment in an adjacent diagonal.\n // In first iteration when iF === 0 and kF === -d always insert.\n // In last possible iteration when iF === d and kF === d always delete.\n const insert = iF === 0 || (iF !== d && aIndexPrev1 < aIndexesF[iF]);\n const aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1;\n const aFirst = insert\n ? aLastPrev // vertical to insert from b\n : aLastPrev + 1; // horizontal to delete from a\n\n // To get last point of path segment, move along diagonal of common items.\n const bFirst = bF + aFirst - kF;\n const nCommonF = countCommonItemsF(\n aFirst + 1,\n aEnd,\n bFirst + 1,\n bEnd,\n isCommon\n );\n const aLast = aFirst + nCommonF;\n aIndexPrev1 = aIndexesF[iF];\n aIndexesF[iF] = aLast;\n if (kMinOverlapF <= kF && kF <= kMaxOverlapF) {\n // Solve for iR of reverse path with (d - 1) changes in diagonal kF:\n // kR = kF + baDeltaLength\n // kR = (d - 1) - 2 * iR\n const iR = (d - 1 - (kF + baDeltaLength)) / 2;\n\n // If this forward path overlaps the reverse path in this diagonal,\n // then this is the middle change of the index intervals.\n if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) {\n // Unlike the Myers algorithm which finds only the middle “snake”\n // this package can find two common subsequences per division.\n // Last point of previous path segment is on an adjacent diagonal.\n const bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1);\n\n // Because of invariant that intervals preceding the middle change\n // cannot have common items at the end,\n // move in reverse direction along a diagonal of common items.\n const nCommonR = countCommonItemsR(\n aStart,\n aLastPrev,\n bStart,\n bLastPrev,\n isCommon\n );\n const aIndexPrevFirst = aLastPrev - nCommonR;\n const bIndexPrevFirst = bLastPrev - nCommonR;\n const aEndPreceding = aIndexPrevFirst + 1;\n const bEndPreceding = bIndexPrevFirst + 1;\n division.nChangePreceding = d - 1;\n if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) {\n // Optimization: number of preceding changes in forward direction\n // is equal to number of items in preceding interval,\n // therefore it cannot contain any common items.\n division.aEndPreceding = aStart;\n division.bEndPreceding = bStart;\n } else {\n division.aEndPreceding = aEndPreceding;\n division.bEndPreceding = bEndPreceding;\n }\n division.nCommonPreceding = nCommonR;\n if (nCommonR !== 0) {\n division.aCommonPreceding = aEndPreceding;\n division.bCommonPreceding = bEndPreceding;\n }\n division.nCommonFollowing = nCommonF;\n if (nCommonF !== 0) {\n division.aCommonFollowing = aFirst + 1;\n division.bCommonFollowing = bFirst + 1;\n }\n const aStartFollowing = aLast + 1;\n const bStartFollowing = bFirst + nCommonF + 1;\n division.nChangeFollowing = d - 1;\n if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n // Optimization: number of changes in reverse direction\n // is equal to number of items in following interval,\n // therefore it cannot contain any common items.\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n division.aStartFollowing = aStartFollowing;\n division.bStartFollowing = bStartFollowing;\n }\n return true;\n }\n }\n }\n return false;\n};\n\n// A complete function to extend reverse paths from (d - 1) to d changes.\n// Return true if a path overlaps forward path of d changes in its diagonal.\nconst extendOverlappablePathsR = (\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division // update prop values if return true\n) => {\n const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n const baDeltaLength = bLength - aLength; // kR = kF + baDeltaLength\n\n // Range of diagonals in which forward and reverse paths might overlap.\n const kMinOverlapR = baDeltaLength - d; // -d <= kF\n const kMaxOverlapR = baDeltaLength + d; // kF <= d\n\n let aIndexPrev1 = NOT_YET_SET; // prev value of [iR - 1] in next iteration\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nR = d < iMaxR ? d : iMaxR;\n\n // The diagonals kR = d - 2 * iR are odd when d is odd and even when d is even.\n for (let iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) {\n // To get first point of path segment, move one change in reverse direction\n // from last point of previous path segment in an adjacent diagonal.\n // In first iteration when iR === 0 and kR === d always insert.\n // In last possible iteration when iR === d and kR === -d always delete.\n const insert = iR === 0 || (iR !== d && aIndexesR[iR] < aIndexPrev1);\n const aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1;\n const aFirst = insert\n ? aLastPrev // vertical to insert from b\n : aLastPrev - 1; // horizontal to delete from a\n\n // To get last point of path segment, move along diagonal of common items.\n const bFirst = bR + aFirst - kR;\n const nCommonR = countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bFirst - 1,\n isCommon\n );\n const aLast = aFirst - nCommonR;\n aIndexPrev1 = aIndexesR[iR];\n aIndexesR[iR] = aLast;\n if (kMinOverlapR <= kR && kR <= kMaxOverlapR) {\n // Solve for iF of forward path with d changes in diagonal kR:\n // kF = kR - baDeltaLength\n // kF = 2 * iF - d\n const iF = (d + (kR - baDeltaLength)) / 2;\n\n // If this reverse path overlaps the forward path in this diagonal,\n // then this is a middle change of the index intervals.\n if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) {\n const bLast = bFirst - nCommonR;\n division.nChangePreceding = d;\n if (d === aLast + bLast - aStart - bStart) {\n // Optimization: number of changes in reverse direction\n // is equal to number of items in preceding interval,\n // therefore it cannot contain any common items.\n division.aEndPreceding = aStart;\n division.bEndPreceding = bStart;\n } else {\n division.aEndPreceding = aLast;\n division.bEndPreceding = bLast;\n }\n division.nCommonPreceding = nCommonR;\n if (nCommonR !== 0) {\n // The last point of reverse path segment is start of common subsequence.\n division.aCommonPreceding = aLast;\n division.bCommonPreceding = bLast;\n }\n division.nChangeFollowing = d - 1;\n if (d === 1) {\n // There is no previous path segment.\n division.nCommonFollowing = 0;\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n // Unlike the Myers algorithm which finds only the middle “snake”\n // this package can find two common subsequences per division.\n // Last point of previous path segment is on an adjacent diagonal.\n const bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1);\n\n // Because of invariant that intervals following the middle change\n // cannot have common items at the start,\n // move in forward direction along a diagonal of common items.\n const nCommonF = countCommonItemsF(\n aLastPrev,\n aEnd,\n bLastPrev,\n bEnd,\n isCommon\n );\n division.nCommonFollowing = nCommonF;\n if (nCommonF !== 0) {\n // The last point of reverse path segment is start of common subsequence.\n division.aCommonFollowing = aLastPrev;\n division.bCommonFollowing = bLastPrev;\n }\n const aStartFollowing = aLastPrev + nCommonF; // aFirstPrev\n const bStartFollowing = bLastPrev + nCommonF; // bFirstPrev\n\n if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n // Optimization: number of changes in forward direction\n // is equal to number of items in following interval,\n // therefore it cannot contain any common items.\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n division.aStartFollowing = aStartFollowing;\n division.bStartFollowing = bStartFollowing;\n }\n }\n return true;\n }\n }\n }\n return false;\n};\n\n// Given index intervals and input function to compare items at indexes,\n// divide at the middle change.\n//\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because this function will throw the “no overlap” error.\nconst divide = (\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n aIndexesR,\n division // output\n) => {\n const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n\n // Because graph has square or portrait orientation,\n // length difference is minimum number of items to insert from b.\n // Corresponding forward and reverse diagonals in graph\n // depend on length difference of the sequences:\n // kF = kR - baDeltaLength\n // kR = kF + baDeltaLength\n const baDeltaLength = bLength - aLength;\n\n // Optimization: max diagonal in graph intersects corner of shorter side.\n let iMaxF = aLength;\n let iMaxR = aLength;\n\n // Initialize no changes yet in forward or reverse direction:\n aIndexesF[0] = aStart - 1; // at open start of interval, outside closed start\n aIndexesR[0] = aEnd; // at open end of interval\n\n if (baDeltaLength % 2 === 0) {\n // The number of changes in paths is 2 * d if length difference is even.\n const dMin = (nChange || baDeltaLength) / 2;\n const dMax = (aLength + bLength) / 2;\n for (let d = 1; d <= dMax; d += 1) {\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n if (d < dMin) {\n iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR);\n } else if (\n // If a reverse path overlaps a forward path in the same diagonal,\n // return a division of the index intervals at the middle change.\n extendOverlappablePathsR(\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division\n )\n ) {\n return;\n }\n }\n } else {\n // The number of changes in paths is 2 * d - 1 if length difference is odd.\n const dMin = ((nChange || baDeltaLength) + 1) / 2;\n const dMax = (aLength + bLength + 1) / 2;\n\n // Unroll first half iteration so loop extends the relevant pairs of paths.\n // Because of invariant that intervals have no common items at start or end,\n // and limitation not to call divide with empty intervals,\n // therefore it cannot be called if a forward path with one change\n // would overlap a reverse path with no changes, even if dMin === 1.\n let d = 1;\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n for (d += 1; d <= dMax; d += 1) {\n iMaxR = extendPathsR(\n d - 1,\n aStart,\n bStart,\n bR,\n isCommon,\n aIndexesR,\n iMaxR\n );\n if (d < dMin) {\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n } else if (\n // If a forward path overlaps a reverse path in the same diagonal,\n // return a division of the index intervals at the middle change.\n extendOverlappablePathsF(\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division\n )\n ) {\n return;\n }\n }\n }\n\n /* istanbul ignore next */\n throw new Error(\n `${pkg}: no overlap aStart=${aStart} aEnd=${aEnd} bStart=${bStart} bEnd=${bEnd}`\n );\n};\n\n// Given index intervals and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence. Divide and conquer with only linear space.\n//\n// The index intervals are half open [start, end) like array slice method.\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because divide function will throw the “no overlap” error.\nconst findSubsequences = (\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division // temporary memory, not input nor output\n) => {\n if (bEnd - bStart < aEnd - aStart) {\n // Transpose graph so it has portrait instead of landscape orientation.\n // Always compare shorter to longer sequence for consistency and optimization.\n transposed = !transposed;\n if (transposed && callbacks.length === 1) {\n // Lazily wrap callback functions to swap args if graph is transposed.\n const {foundSubsequence, isCommon} = callbacks[0];\n callbacks[1] = {\n foundSubsequence: (nCommon, bCommon, aCommon) => {\n foundSubsequence(nCommon, aCommon, bCommon);\n },\n isCommon: (bIndex, aIndex) => isCommon(aIndex, bIndex)\n };\n }\n const tStart = aStart;\n const tEnd = aEnd;\n aStart = bStart;\n aEnd = bEnd;\n bStart = tStart;\n bEnd = tEnd;\n }\n const {foundSubsequence, isCommon} = callbacks[transposed ? 1 : 0];\n\n // Divide the index intervals at the middle change.\n divide(\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n aIndexesR,\n division\n );\n const {\n nChangePreceding,\n aEndPreceding,\n bEndPreceding,\n nCommonPreceding,\n aCommonPreceding,\n bCommonPreceding,\n nCommonFollowing,\n aCommonFollowing,\n bCommonFollowing,\n nChangeFollowing,\n aStartFollowing,\n bStartFollowing\n } = division;\n\n // Unless either index interval is empty, they might contain common items.\n if (aStart < aEndPreceding && bStart < bEndPreceding) {\n // Recursely find and return common subsequences preceding the division.\n findSubsequences(\n nChangePreceding,\n aStart,\n aEndPreceding,\n bStart,\n bEndPreceding,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n\n // Return common subsequences that are adjacent to the middle change.\n if (nCommonPreceding !== 0) {\n foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding);\n }\n if (nCommonFollowing !== 0) {\n foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing);\n }\n\n // Unless either index interval is empty, they might contain common items.\n if (aStartFollowing < aEnd && bStartFollowing < bEnd) {\n // Recursely find and return common subsequences following the division.\n findSubsequences(\n nChangeFollowing,\n aStartFollowing,\n aEnd,\n bStartFollowing,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n};\nconst validateLength = (name, arg) => {\n if (typeof arg !== 'number') {\n throw new TypeError(`${pkg}: ${name} typeof ${typeof arg} is not a number`);\n }\n if (!Number.isSafeInteger(arg)) {\n throw new RangeError(`${pkg}: ${name} value ${arg} is not a safe integer`);\n }\n if (arg < 0) {\n throw new RangeError(`${pkg}: ${name} value ${arg} is a negative integer`);\n }\n};\nconst validateCallback = (name, arg) => {\n const type = typeof arg;\n if (type !== 'function') {\n throw new TypeError(`${pkg}: ${name} typeof ${type} is not a function`);\n }\n};\n\n// Compare items in two sequences to find a longest common subsequence.\n// Given lengths of sequences and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence.\nfunction diffSequence(aLength, bLength, isCommon, foundSubsequence) {\n validateLength('aLength', aLength);\n validateLength('bLength', bLength);\n validateCallback('isCommon', isCommon);\n validateCallback('foundSubsequence', foundSubsequence);\n\n // Count common items from the start in the forward direction.\n const nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon);\n if (nCommonF !== 0) {\n foundSubsequence(nCommonF, 0, 0);\n }\n\n // Unless both sequences consist of common items only,\n // find common items in the half-trimmed index intervals.\n if (aLength !== nCommonF || bLength !== nCommonF) {\n // Invariant: intervals do not have common items at the start.\n // The start of an index interval is closed like array slice method.\n const aStart = nCommonF;\n const bStart = nCommonF;\n\n // Count common items from the end in the reverse direction.\n const nCommonR = countCommonItemsR(\n aStart,\n aLength - 1,\n bStart,\n bLength - 1,\n isCommon\n );\n\n // Invariant: intervals do not have common items at the end.\n // The end of an index interval is open like array slice method.\n const aEnd = aLength - nCommonR;\n const bEnd = bLength - nCommonR;\n\n // Unless one sequence consists of common items only,\n // therefore the other trimmed index interval consists of changes only,\n // find common items in the trimmed index intervals.\n const nCommonFR = nCommonF + nCommonR;\n if (aLength !== nCommonFR && bLength !== nCommonFR) {\n const nChange = 0; // number of change items is not yet known\n const transposed = false; // call the original unwrapped functions\n const callbacks = [\n {\n foundSubsequence,\n isCommon\n }\n ];\n\n // Indexes in sequence a of last points in furthest reaching paths\n // from outside the start at top left in the forward direction:\n const aIndexesF = [NOT_YET_SET];\n // from the end at bottom right in the reverse direction:\n const aIndexesR = [NOT_YET_SET];\n\n // Initialize one object as output of all calls to divide function.\n const division = {\n aCommonFollowing: NOT_YET_SET,\n aCommonPreceding: NOT_YET_SET,\n aEndPreceding: NOT_YET_SET,\n aStartFollowing: NOT_YET_SET,\n bCommonFollowing: NOT_YET_SET,\n bCommonPreceding: NOT_YET_SET,\n bEndPreceding: NOT_YET_SET,\n bStartFollowing: NOT_YET_SET,\n nChangeFollowing: NOT_YET_SET,\n nChangePreceding: NOT_YET_SET,\n nCommonFollowing: NOT_YET_SET,\n nCommonPreceding: NOT_YET_SET\n };\n\n // Find and return common subsequences in the trimmed index intervals.\n findSubsequences(\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n if (nCommonR !== 0) {\n foundSubsequence(nCommonR, aEnd, bEnd);\n }\n }\n}\n"], - "mappings": "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", - "names": ["foundSubsequence", "isCommon"] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js deleted file mode 100644 index a8113e6..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js +++ /dev/null @@ -1,7 +0,0 @@ -import { - require_build -} from "./chunk-UCU27OGC.js"; -import "./chunk-UJ726J2L.js"; -import "./chunk-5WRI5ZAA.js"; -export default require_build(); -//# sourceMappingURL=vitest___pretty-format.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map deleted file mode 100644 index 9865211..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js deleted file mode 100644 index 76e26c3..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js +++ /dev/null @@ -1,15 +0,0 @@ -import "./chunk-5WRI5ZAA.js"; - -// ../../node_modules/ansi-regex/index.js -function ansiRegex({ onlyFirst = false } = {}) { - const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)"; - const pattern = [ - `[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`, - "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))" - ].join("|"); - return new RegExp(pattern, onlyFirst ? void 0 : "g"); -} -export { - ansiRegex as default -}; -//# sourceMappingURL=vitest___pretty-format___ansi-regex.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map deleted file mode 100644 index 8d24bd9..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-regex.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/ansi-regex/index.js"], - "sourcesContent": ["export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n"], - "mappings": ";;;AAAe,SAAR,UAA2B,EAAC,YAAY,MAAK,IAAI,CAAC,GAAG;AAE3D,QAAM,KAAK;AACX,QAAM,UAAU;AAAA,IACf,uHAAuH,EAAE;AAAA,IACzH;AAAA,EACD,EAAE,KAAK,GAAG;AAEV,SAAO,IAAI,OAAO,SAAS,YAAY,SAAY,GAAG;AACvD;", - "names": [] -} diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js deleted file mode 100644 index 0bbe027..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js +++ /dev/null @@ -1,6 +0,0 @@ -import { - require_ansi_styles -} from "./chunk-UJ726J2L.js"; -import "./chunk-5WRI5ZAA.js"; -export default require_ansi_styles(); -//# sourceMappingURL=vitest___pretty-format___ansi-styles.js.map diff --git a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map b/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map deleted file mode 100644 index 9865211..0000000 --- a/packages/ridb/node_modules/.vite/deps/vitest___pretty-format___ansi-styles.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/ridb/node_modules/.vite/vitest/results.json b/packages/ridb/node_modules/.vite/vitest/results.json deleted file mode 100644 index f69e2a9..0000000 --- a/packages/ridb/node_modules/.vite/vitest/results.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"1.6.0","results":[[":tests/node.test.ts",{"duration":0,"failed":true}]]} \ No newline at end of file diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 215510f..e5ae2d5 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -43,6 +43,6 @@ "prepublishOnly": "npm run build" }, "devDependencies": { - "@trust0/ridb-wasm": "^1.0.10" + "@trust0/ridb-wasm": "^1.0.11" } } From dc81bb2115e59002c33a510f838f86d436397efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 14:27:42 +0100 Subject: [PATCH 08/35] fix: fetch wasm from workspace --- packages/ridb/esbuild.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ridb/esbuild.config.mjs b/packages/ridb/esbuild.config.mjs index b703d43..571d4d3 100644 --- a/packages/ridb/esbuild.config.mjs +++ b/packages/ridb/esbuild.config.mjs @@ -8,7 +8,7 @@ const wasmPlugin = { name: 'wasm', setup(build) { build.onResolve({ filter: /\.wasm$/ }, args => { - return { path: path.resolve('./node_modules', args.path), namespace: 'wasm' }; + return { path: path.resolve('../../node_modules', args.path), namespace: 'wasm' }; }); build.onLoad({ filter: /.*/, namespace: 'wasm' }, async (args) => { const buffer = await fs.promises.readFile(args.path); From 42e9ecb20e6e036654a14880024ac0fb222d5798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 14:30:45 +0100 Subject: [PATCH 09/35] fix: release process --- package-lock.json | 6 +++++- packages/ridb/.gitignore | 2 +- packages/ridb/package.json | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b138d4b..429cfc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12420,7 +12420,11 @@ "version": "0.10.1", "license": "Apache-2.0", "devDependencies": { - "@trust0/ridb-wasm": "^1.0.11" + "@esbuild-plugins/node-resolve": "^0.2.2", + "@trust0/ridb-wasm": "^1.0.11", + "esbuild": "0.21.5", + "esbuild-plugin-wasm": "^1.1.0", + "esbuild-plugin-wasm-pack": "^1.1.0" }, "engines": { "node": ">=20" diff --git a/packages/ridb/.gitignore b/packages/ridb/.gitignore index 5f2b92d..aa2cb11 100644 --- a/packages/ridb/.gitignore +++ b/packages/ridb/.gitignore @@ -1,5 +1,5 @@ node_modules/* .idea coverage -./build/**/* +build/**/* .turbo \ No newline at end of file diff --git a/packages/ridb/package.json b/packages/ridb/package.json index e5ae2d5..b49eeef 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -43,6 +43,11 @@ "prepublishOnly": "npm run build" }, "devDependencies": { + "esbuild": "0.21.5", + "esbuild-plugin-wasm": "^1.1.0", + "esbuild-plugin-wasm-pack": "^1.1.0", + "@esbuild-plugins/node-resolve": "^0.2.2", + "@trust0/ridb-wasm": "^1.0.11" } } From 5bf4592f58b678c64ea5f0fce27777b23dcf96d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 14:43:20 +0100 Subject: [PATCH 10/35] fix: release ci pipeline --- .github/workflows/release.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e00b697..568a91c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -52,7 +52,14 @@ jobs: env: NPM_TOKEN: ${{ env.NPM_TOKEN }} - - name: Run semantic-release + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + env: + NPM_TOKEN: ${{ env.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Run Release env: NPM_TOKEN: ${{ env.NPM_TOKEN }} GH_TOKEN: ${{ secrets.GH_SECRET }} From e9f68183038757945cc39b7ab882b5e7979ad817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 14:47:48 +0100 Subject: [PATCH 11/35] fix: rollback to semantic-release --- .changeset/README.md | 8 - .changeset/config.json | 11 - .github/workflows/release.yml | 12 +- package-lock.json | 784 ---------------------------------- package.json | 1 - 5 files changed, 3 insertions(+), 813 deletions(-) delete mode 100644 .changeset/README.md delete mode 100644 .changeset/config.json diff --git a/.changeset/README.md b/.changeset/README.md deleted file mode 100644 index e5b6d8d..0000000 --- a/.changeset/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Changesets - -Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works -with multi-package repos, or single-package repos to help you version and publish your code. You can -find the full documentation for it [in our repository](https://github.com/changesets/changesets) - -We have a quick list of common questions to get you started engaging with this project in -[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index 6b37255..0000000 --- a/.changeset/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@3.0.5/schema.json", - "changelog": "@changesets/cli/changelog", - "commit": false, - "fixed": [], - "linked": [], - "access": "restricted", - "baseBranch": "main", - "updateInternalDependencies": "patch", - "ignore": [] -} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 568a91c..e617dd7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -52,17 +52,11 @@ jobs: env: NPM_TOKEN: ${{ env.NPM_TOKEN }} - - name: Create Release Pull Request or Publish to npm - id: changesets - uses: changesets/action@v1 - env: - NPM_TOKEN: ${{ env.NPM_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Run Release + - name: Run semantic-release env: NPM_TOKEN: ${{ env.NPM_TOKEN }} GH_TOKEN: ${{ secrets.GH_SECRET }} run: | npm ci - npm run release + npm run build + cd packages/ridb && npx semantic-release diff --git a/package-lock.json b/package-lock.json index 429cfc9..fca2900 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "packages/*" ], "devDependencies": { - "@changesets/cli": "^2.27.11", "@esbuild-plugins/node-resolve": "^0.2.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.0", @@ -266,19 +265,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", @@ -327,249 +313,6 @@ "node": ">=6.9.0" } }, - "node_modules/@changesets/apply-release-plan": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.7.tgz", - "integrity": "sha512-qnPOcmmmnD0MfMg9DjU1/onORFyRpDXkMMl2IJg9mECY6RnxL3wN0TCCc92b2sXt1jt8DgjAUUsZYGUGTdYIXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/config": "^3.0.5", - "@changesets/get-version-range-type": "^0.4.0", - "@changesets/git": "^3.0.2", - "@changesets/should-skip-package": "^0.1.1", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "detect-indent": "^6.0.0", - "fs-extra": "^7.0.1", - "lodash.startcase": "^4.4.0", - "outdent": "^0.5.0", - "prettier": "^2.7.1", - "resolve-from": "^5.0.0", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/assemble-release-plan": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.5.tgz", - "integrity": "sha512-IgvBWLNKZd6k4t72MBTBK3nkygi0j3t3zdC1zrfusYo0KpdsvnDjrMM9vPnTCLCMlfNs55jRL4gIMybxa64FCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.2", - "@changesets/should-skip-package": "^0.1.1", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/changelog-git": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.0.tgz", - "integrity": "sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0" - } - }, - "node_modules/@changesets/cli": { - "version": "2.27.11", - "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.11.tgz", - "integrity": "sha512-1QislpE+nvJgSZZo9+Lj3Lno5pKBgN46dAV8IVxKJy9wX8AOrs9nn5pYVZuDpoxWJJCALmbfOsHkyxujgetQSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/apply-release-plan": "^7.0.7", - "@changesets/assemble-release-plan": "^6.0.5", - "@changesets/changelog-git": "^0.2.0", - "@changesets/config": "^3.0.5", - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.2", - "@changesets/get-release-plan": "^4.0.6", - "@changesets/git": "^3.0.2", - "@changesets/logger": "^0.1.1", - "@changesets/pre": "^2.0.1", - "@changesets/read": "^0.6.2", - "@changesets/should-skip-package": "^0.1.1", - "@changesets/types": "^6.0.0", - "@changesets/write": "^0.3.2", - "@manypkg/get-packages": "^1.1.3", - "ansi-colors": "^4.1.3", - "ci-info": "^3.7.0", - "enquirer": "^2.4.1", - "external-editor": "^3.1.0", - "fs-extra": "^7.0.1", - "mri": "^1.2.0", - "p-limit": "^2.2.0", - "package-manager-detector": "^0.2.0", - "picocolors": "^1.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "spawndamnit": "^3.0.1", - "term-size": "^2.1.0" - }, - "bin": { - "changeset": "bin.js" - } - }, - "node_modules/@changesets/config": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.5.tgz", - "integrity": "sha512-QyXLSSd10GquX7hY0Mt4yQFMEeqnO5z/XLpbIr4PAkNNoQNKwDyiSrx4yd749WddusH1v3OSiA0NRAYmH/APpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.2", - "@changesets/logger": "^0.1.1", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1", - "micromatch": "^4.0.8" - } - }, - "node_modules/@changesets/errors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", - "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", - "dev": true, - "license": "MIT", - "dependencies": { - "extendable-error": "^0.1.5" - } - }, - "node_modules/@changesets/get-dependents-graph": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.2.tgz", - "integrity": "sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "picocolors": "^1.1.0", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/get-release-plan": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.6.tgz", - "integrity": "sha512-FHRwBkY7Eili04Y5YMOZb0ezQzKikTka4wL753vfUA5COSebt7KThqiuCN9BewE4/qFGgF/5t3AuzXx1/UAY4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/assemble-release-plan": "^6.0.5", - "@changesets/config": "^3.0.5", - "@changesets/pre": "^2.0.1", - "@changesets/read": "^0.6.2", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3" - } - }, - "node_modules/@changesets/get-version-range-type": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", - "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@changesets/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.2.tgz", - "integrity": "sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@manypkg/get-packages": "^1.1.3", - "is-subdir": "^1.1.1", - "micromatch": "^4.0.8", - "spawndamnit": "^3.0.1" - } - }, - "node_modules/@changesets/logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz", - "integrity": "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^1.1.0" - } - }, - "node_modules/@changesets/parse": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.0.tgz", - "integrity": "sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0", - "js-yaml": "^3.13.1" - } - }, - "node_modules/@changesets/pre": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.1.tgz", - "integrity": "sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1" - } - }, - "node_modules/@changesets/read": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.2.tgz", - "integrity": "sha512-wjfQpJvryY3zD61p8jR87mJdyx2FIhEcdXhKUqkja87toMrP/3jtg/Yg29upN+N4Ckf525/uvV7a4tzBlpk6gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/git": "^3.0.2", - "@changesets/logger": "^0.1.1", - "@changesets/parse": "^0.4.0", - "@changesets/types": "^6.0.0", - "fs-extra": "^7.0.1", - "p-filter": "^2.1.0", - "picocolors": "^1.1.0" - } - }, - "node_modules/@changesets/should-skip-package": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.1.tgz", - "integrity": "sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3" - } - }, - "node_modules/@changesets/types": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.0.0.tgz", - "integrity": "sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@changesets/write": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.2.tgz", - "integrity": "sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0", - "fs-extra": "^7.0.1", - "human-id": "^1.0.2", - "prettier": "^2.7.1" - } - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -1226,78 +969,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@manypkg/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@types/node": "^12.7.1", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" - } - }, - "node_modules/@manypkg/find-root/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@manypkg/find-root/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@manypkg/get-packages": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", - "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@changesets/types": "^4.0.1", - "@manypkg/find-root": "^1.1.0", - "fs-extra": "^8.1.0", - "globby": "^11.0.0", - "read-yaml-file": "^1.1.0" - } - }, - "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", - "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@manypkg/get-packages/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3355,16 +3026,6 @@ "node": ">=8" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", @@ -3602,16 +3263,6 @@ "dev": true, "license": "MIT" }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/argv-formatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", @@ -3636,16 +3287,6 @@ "dev": true, "license": "MIT" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -3785,19 +3426,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/better-path-resolve": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", - "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-windows": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -3999,13 +3627,6 @@ "node": ">=10" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "license": "MIT" - }, "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", @@ -4833,16 +4454,6 @@ "node": ">=0.4.0" } }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -5091,20 +4702,6 @@ "once": "^1.4.0" } }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -5522,28 +5119,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extendable-error": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", - "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -5715,20 +5290,6 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-up-simple": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", @@ -5835,21 +5396,6 @@ "readable-stream": "^2.0.0" } }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6086,27 +5632,6 @@ "node": ">=4" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -6284,13 +5809,6 @@ "node": ">= 14" } }, - "node_modules/human-id": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz", - "integrity": "sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==", - "dev": true, - "license": "MIT" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -6301,19 +5819,6 @@ "node": ">=10.17.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -6623,19 +6128,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-subdir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", - "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "better-path-resolve": "1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/is-unicode-supported": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", @@ -6649,16 +6141,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6794,20 +6276,6 @@ "dev": true, "license": "MIT" }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", @@ -6896,16 +6364,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -7075,19 +6533,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -7137,13 +6582,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", @@ -7477,16 +6915,6 @@ "node": ">=10" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", @@ -7908,23 +7336,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/outdent": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", - "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==", - "dev": true, - "license": "MIT" - }, "node_modules/p-each-series": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", @@ -7938,19 +7349,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-is-promise": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", @@ -7961,35 +7359,6 @@ "node": ">=8" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", @@ -8010,16 +7379,6 @@ "node": ">=8" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/pac-proxy-agent": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", @@ -8061,13 +7420,6 @@ "dev": true, "license": "BlueOak-1.0.0" }, - "node_modules/package-manager-detector": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", - "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", - "dev": true, - "license": "MIT" - }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -8163,16 +7515,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -8278,16 +7620,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", @@ -8416,22 +7748,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -8699,22 +8015,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-yaml-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", - "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.6.1", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -8764,13 +8064,6 @@ "node": ">=10" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true, - "license": "MIT" - }, "node_modules/registry-auth-token": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.3.tgz", @@ -9631,16 +8924,6 @@ "node": ">=8" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -9726,30 +9009,6 @@ "dev": true, "license": "MIT" }, - "node_modules/spawndamnit": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz", - "integrity": "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==", - "dev": true, - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "cross-spawn": "^7.0.5", - "signal-exit": "^4.0.1" - } - }, - "node_modules/spawndamnit/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/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -9796,13 +9055,6 @@ "through2": "~2.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -10137,19 +9389,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -10259,19 +9498,6 @@ "node": ">=14.0.0" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -10803,16 +10029,6 @@ "dev": true, "license": "ISC" }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", diff --git a/package.json b/package.json index 570d3b1..d8a8787 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "release": "npm run build && npm run docs && changeset version && changeset publish" }, "devDependencies": { - "@changesets/cli": "^2.27.11", "@esbuild-plugins/node-resolve": "^0.2.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.0", From 5e99350898eda8968d8a6890d0cfafc1d35b8fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 14:56:40 +0100 Subject: [PATCH 12/35] fix: fix testing --- package-lock.json | 2978 ++++++++++++++++++++++++++++++++---- package.json | 35 - packages/ridb/package.json | 28 +- 3 files changed, 2739 insertions(+), 302 deletions(-) diff --git a/package-lock.json b/package-lock.json index fca2900..1356625 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,43 +10,8 @@ "workspaces": [ "packages/*" ], - "devDependencies": { - "@esbuild-plugins/node-resolve": "^0.2.2", - "@semantic-release/changelog": "^6.0.3", - "@semantic-release/commit-analyzer": "^13.0.0", - "@semantic-release/exec": "^6.0.3", - "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^10.3.5", - "@semantic-release/npm": "^12.0.1", - "@semantic-release/release-notes-generator": "^14.0.2", - "@types/node": "^20.14.2", - "@vitest/browser": "^1.6.0", - "@vitest/coverage-istanbul": "^1.6.0", - "@vitest/ui": "^1.6.0", - "esbuild": "0.21.5", - "esbuild-plugin-wasm": "^1.1.0", - "esbuild-plugin-wasm-pack": "^1.1.0", - "jsdom": "^24.1.3", - "semantic-release": "^24.2.0", - "ts-node": "^10.9.2", - "turbo": "^2.3.3", - "typedoc": "^0.27.5", - "typedoc-plugin-external-module-map": "^2.1.0", - "typedoc-plugin-markdown": "^4.3.3", - "typedoc-plugin-rename-defaults": "^0.7.2", - "typedoc-theme-hierarchy": "^5.0.4", - "typescript": "^5.4.5", - "uuid": "^11.0.3", - "vite-plugin-top-level-await": "^1.4.1", - "vite-plugin-wasm": "^3.3.0", - "vitest": "^1.6.0", - "webdriverio": "^9.0.9" - }, "engines": { "node": ">=20" - }, - "peerDependencies": { - "classic-level": "^2.0.0" } }, "node_modules/@ampproject/remapping": { @@ -2958,24 +2923,6 @@ "node": ">=6.5" } }, - "node_modules/abstract-level": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-2.0.2.tgz", - "integrity": "sha512-pPJixmXk/kTKLB2sSue7o4Uj6TlLD2XfaP2gWZomHVCC6cuUGX/VslQqKG1yZHfXwBb/3lS6oSTMPGzh1P1iig==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "is-buffer": "^2.0.5", - "level-supports": "^6.0.0", - "level-transcoder": "^1.0.1", - "maybe-combine-errors": "^1.0.0", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -3393,6 +3340,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -3501,6 +3449,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "funding": [ { "type": "github", @@ -3698,39 +3647,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/classic-level": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-2.0.0.tgz", - "integrity": "sha512-ftiMvKgCQK+OppXcvMieDoYlYLYWhScK6yZRFBrrlHQRbm4k6Gr+yDgu/wt3V0k1/jtNbuiXAsRmuAFcD0Tx5Q==", - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "abstract-level": "^2.0.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -5823,6 +5739,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -6002,30 +5919,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -6390,30 +6283,6 @@ "node": ">= 0.6.3" } }, - "node_modules/level-supports": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-6.1.1.tgz", - "integrity": "sha512-pqkPd9SFcxWDI11O4HSneobo4uXHQYN1DMqBGQXinFqm4jZr2cDBX72qM/SbKn/0RnOlQpxDoVSrpcDU8aJ7fQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -6749,16 +6618,6 @@ "marked": ">=1 <15" } }, - "node_modules/maybe-combine-errors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/maybe-combine-errors/-/maybe-combine-errors-1.0.0.tgz", - "integrity": "sha512-eefp6IduNPT6fVdwPp+1NgD0PML1NU5P6j1Mj5nz1nidX8/sWY7119WL8vTAHgqfsY74TzW0w1XPgdYEKkGZ5A==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", @@ -6905,16 +6764,6 @@ "ufo": "^1.5.4" } }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", @@ -6963,13 +6812,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "license": "MIT", - "peer": true - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -7049,18 +6891,6 @@ "url": "https://opencollective.com/node-fetch" } }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "license": "MIT", - "peer": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -7280,144 +7110,2734 @@ "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", "dev": true, - "license": "BSD-2-Clause", + "inBundle": true, + "license": "ISC", "dependencies": { - "boolbase": "^1.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">=12" } }, - "node_modules/nwsapi": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", - "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/onetime": { + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-each-series": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", - "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "node_modules/npm/node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, "engines": { - "node": ">=6" + "node": ">=18.0.0" } }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/pac-proxy-agent": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", - "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", + "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.6", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.5" + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": ">= 14" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "8.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/metavuln-calculator": "^8.0.0", + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.1", + "@npmcli/query": "^4.0.0", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^9.0.1", + "bin-links": "^5.0.0", + "cacache": "^19.0.1", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^8.0.0", + "npm-install-checks": "^7.1.0", + "npm-package-arg": "^12.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.1", + "pacote": "^19.0.0", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "proggy": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^4.0.0", + "semver": "^7.3.7", + "ssri": "^12.0.0", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/package-json": "^6.0.1", + "ci-info": "^4.0.0", + "ini": "^5.0.0", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "8.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^19.0.0", + "json-parse-even-better-errors": "^4.0.0", + "pacote": "^20.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { + "version": "20.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "6.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "normalize-package-data": "^7.0.0", + "proc-log": "^5.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "9.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^7.0.0", + "npm-normalize-package-bin": "^4.0.0", + "proc-log": "^5.0.0", + "read-cmd-shim": "^5.0.0", + "write-file-atomic": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "19.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^4.0.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/chownr": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/minizlib": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/p-map": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/tar": { + "version": "7.4.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.4.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/package-json": "^6.0.0", + "npm-package-arg": "^12.0.0", + "promzard": "^2.0.0", + "read": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^4.1.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "3.4.3", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", + "tar": "^6.2.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0", + "@npmcli/run-script": "^9.0.1", + "ci-info": "^4.0.0", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", + "proc-log": "^5.0.0", + "read": "^4.0.0", + "read-package-json-fast": "^4.0.0", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "11.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0", + "@npmcli/run-script": "^9.0.1", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "10.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^7.0.0", + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1", + "proc-log": "^5.0.0", + "semver": "^7.3.7", + "sigstore": "^3.0.0", + "ssri": "^12.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.1", + "@npmcli/run-script": "^9.0.1", + "json-parse-even-better-errors": "^4.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.4.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "14.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "ssri": "^12.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "11.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "tar": "^7.4.3", + "which": "^5.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/chownr": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minizlib": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/tar": { + "version": "7.4.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/nopt/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^8.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "7.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "12.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^7.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "10.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "11.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "18.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^3.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^14.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/npm/node_modules/pacote": { + "version": "19.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^4.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.11.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "^2.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "5.0.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^3.0.0", + "@sigstore/tuf": "^3.0.0", + "@sigstore/verify": "^2.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^14.0.1", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.20", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ssri": { + "version": "12.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "3.0.1", + "debug": "^4.3.6", + "make-fetch-happen": "^14.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/which": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", + "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/pako": { @@ -11637,10 +14057,36 @@ "license": "Apache-2.0", "devDependencies": { "@esbuild-plugins/node-resolve": "^0.2.2", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^10.3.5", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.2", "@trust0/ridb-wasm": "^1.0.11", + "@types/node": "^20.14.2", + "@vitest/browser": "^1.6.0", + "@vitest/coverage-istanbul": "^1.6.0", + "@vitest/ui": "^1.6.0", "esbuild": "0.21.5", "esbuild-plugin-wasm": "^1.1.0", - "esbuild-plugin-wasm-pack": "^1.1.0" + "esbuild-plugin-wasm-pack": "^1.1.0", + "jsdom": "^24.1.3", + "semantic-release": "^24.2.0", + "ts-node": "^10.9.2", + "turbo": "^2.3.3", + "typedoc": "^0.27.5", + "typedoc-plugin-external-module-map": "^2.1.0", + "typedoc-plugin-markdown": "^4.3.3", + "typedoc-plugin-rename-defaults": "^0.7.2", + "typedoc-theme-hierarchy": "^5.0.4", + "typescript": "^5.4.5", + "uuid": "^11.0.3", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0", + "vitest": "^1.6.0", + "webdriverio": "^9.0.9" }, "engines": { "node": ">=20" diff --git a/package.json b/package.json index d8a8787..f90cf57 100644 --- a/package.json +++ b/package.json @@ -13,40 +13,5 @@ "build": "npx turbo build", "test": "npx turbo test", "release": "npm run build && npm run docs && changeset version && changeset publish" - }, - "devDependencies": { - "@esbuild-plugins/node-resolve": "^0.2.2", - "@semantic-release/changelog": "^6.0.3", - "@semantic-release/commit-analyzer": "^13.0.0", - "@semantic-release/exec": "^6.0.3", - "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^10.3.5", - "@semantic-release/npm": "^12.0.1", - "@semantic-release/release-notes-generator": "^14.0.2", - "@types/node": "^20.14.2", - "@vitest/browser": "^1.6.0", - "@vitest/coverage-istanbul": "^1.6.0", - "@vitest/ui": "^1.6.0", - "esbuild": "0.21.5", - "esbuild-plugin-wasm": "^1.1.0", - "esbuild-plugin-wasm-pack": "^1.1.0", - "jsdom": "^24.1.3", - "semantic-release": "^24.2.0", - "ts-node": "^10.9.2", - "turbo": "^2.3.3", - "typedoc": "^0.27.5", - "typedoc-plugin-external-module-map": "^2.1.0", - "typedoc-plugin-markdown": "^4.3.3", - "typedoc-plugin-rename-defaults": "^0.7.2", - "typedoc-theme-hierarchy": "^5.0.4", - "typescript": "^5.4.5", - "uuid": "^11.0.3", - "vite-plugin-top-level-await": "^1.4.1", - "vite-plugin-wasm": "^3.3.0", - "vitest": "^1.6.0", - "webdriverio": "^9.0.9" - }, - "peerDependencies": { - "classic-level": "^2.0.0" } } diff --git a/packages/ridb/package.json b/packages/ridb/package.json index b49eeef..eb91416 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -47,7 +47,33 @@ "esbuild-plugin-wasm": "^1.1.0", "esbuild-plugin-wasm-pack": "^1.1.0", "@esbuild-plugins/node-resolve": "^0.2.2", - + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^10.3.5", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.2", + "@types/node": "^20.14.2", + "@vitest/browser": "^1.6.0", + "@vitest/coverage-istanbul": "^1.6.0", + "@vitest/ui": "^1.6.0", + "jsdom": "^24.1.3", + "semantic-release": "^24.2.0", + "ts-node": "^10.9.2", + "turbo": "^2.3.3", + "typedoc": "^0.27.5", + "typedoc-plugin-external-module-map": "^2.1.0", + "typedoc-plugin-markdown": "^4.3.3", + "typedoc-plugin-rename-defaults": "^0.7.2", + "typedoc-theme-hierarchy": "^5.0.4", + "typescript": "^5.4.5", + "uuid": "^11.0.3", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0", + "vitest": "^1.6.0", + "webdriverio": "^9.0.9", "@trust0/ridb-wasm": "^1.0.11" } } + From fcb986716a10289391419eeeaf9ea92da85ecc19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:21:43 +0100 Subject: [PATCH 13/35] fix: workspace testing fix --- packages/ridb/build/cjs/index.d.ts | 51 +++++------------------------- packages/ridb/build/esm/index.d.ts | 51 +++++------------------------- packages/ridb/build/index.d.ts | 51 +++++------------------------- packages/ridb/src/index.ts | 34 -------------------- packages/ridb/vitest.config.ts | 14 ++++---- 5 files changed, 30 insertions(+), 171 deletions(-) diff --git a/packages/ridb/build/cjs/index.d.ts b/packages/ridb/build/cjs/index.d.ts index 92f0507..699a0c7 100644 --- a/packages/ridb/build/cjs/index.d.ts +++ b/packages/ridb/build/cjs/index.d.ts @@ -1,6 +1,6 @@ // Generated by dts-bundle-generator v9.5.1 -import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Collection, CreateStorage, Database, Doc, EnumerateFrom1To, EnumerateUpTo, ExtractType, Hook, InOperator, InternalsRecord, IsVersionGreaterThan0, LogicalOperators, MigrationFunction, MigrationPathsForSchema, MigrationPathsForSchemas, MigrationsParameter, OpType, Operation, OperatorOrType, Operators, Property, Query, QueryType, RIDBModule, Schema, SchemaType, SchemaTypeRecord, StorageInternal } from '@trust0/ridb-wasm'; +import { BaseStorage } from '@trust0/ridb-wasm'; /** * Represents a RIDB (Rust IndexedDB) instance. @@ -83,19 +83,19 @@ import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Col * @class * @template T - The type of the schema record. */ -export type StorageClass = { +export type StorageClass = { create: (name: string, schemas: T, options: any) => Promise>; }; export declare enum StorageType { InMemory = "InMemory", IndexDB = "IndexDB" } -export type StartOptions = { +export type StartOptions = { storageType?: StorageClass | StorageType; password?: string; [name: string]: any; }; -export declare class RIDB { +export declare class RIDB { private schemas; private migrations; private plugins; @@ -108,8 +108,8 @@ export declare class RIDB { constructor(options: { dbName: string; schemas: T; - plugins?: Array; - } & MigrationsParameter); + plugins?: Array; + } & RIDBTypes.MigrationsParameter); private getStorageType; /** * Gets the database instance. Throws an error if the database has not been started. @@ -123,7 +123,7 @@ export declare class RIDB { * @returns The collections object. */ get collections(): { - [name in keyof T]: Collection>; + [name in keyof T]: RIDBTypes.Collection>; }; /** * Loads the RIDB Rust module. @@ -136,7 +136,7 @@ export declare class RIDB { * @returns {Promise>} A promise that resolves to the database instance. * @param options */ - start(options?: StartOptions): Promise>; + start(options?: StartOptions): Promise>; close(): Promise; } /** @@ -150,39 +150,4 @@ export declare const SchemaFieldType: { object: "object"; }; -export { - AnyVersionGreaterThan1, - BasePlugin, - BasePluginOptions, - BaseStorage, - Collection, - CreateStorage, - Database, - Doc, - EnumerateFrom1To, - EnumerateUpTo, - ExtractType, - Hook, - InOperator, - InternalsRecord, - IsVersionGreaterThan0, - LogicalOperators, - MigrationFunction, - MigrationPathsForSchema, - MigrationPathsForSchemas, - MigrationsParameter, - OpType, - Operation, - OperatorOrType, - Operators, - Property, - Query, - QueryType, - RIDBModule, - Schema, - SchemaType, - SchemaTypeRecord, - StorageInternal, -}; - export {}; diff --git a/packages/ridb/build/esm/index.d.ts b/packages/ridb/build/esm/index.d.ts index 92f0507..699a0c7 100644 --- a/packages/ridb/build/esm/index.d.ts +++ b/packages/ridb/build/esm/index.d.ts @@ -1,6 +1,6 @@ // Generated by dts-bundle-generator v9.5.1 -import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Collection, CreateStorage, Database, Doc, EnumerateFrom1To, EnumerateUpTo, ExtractType, Hook, InOperator, InternalsRecord, IsVersionGreaterThan0, LogicalOperators, MigrationFunction, MigrationPathsForSchema, MigrationPathsForSchemas, MigrationsParameter, OpType, Operation, OperatorOrType, Operators, Property, Query, QueryType, RIDBModule, Schema, SchemaType, SchemaTypeRecord, StorageInternal } from '@trust0/ridb-wasm'; +import { BaseStorage } from '@trust0/ridb-wasm'; /** * Represents a RIDB (Rust IndexedDB) instance. @@ -83,19 +83,19 @@ import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Col * @class * @template T - The type of the schema record. */ -export type StorageClass = { +export type StorageClass = { create: (name: string, schemas: T, options: any) => Promise>; }; export declare enum StorageType { InMemory = "InMemory", IndexDB = "IndexDB" } -export type StartOptions = { +export type StartOptions = { storageType?: StorageClass | StorageType; password?: string; [name: string]: any; }; -export declare class RIDB { +export declare class RIDB { private schemas; private migrations; private plugins; @@ -108,8 +108,8 @@ export declare class RIDB { constructor(options: { dbName: string; schemas: T; - plugins?: Array; - } & MigrationsParameter); + plugins?: Array; + } & RIDBTypes.MigrationsParameter); private getStorageType; /** * Gets the database instance. Throws an error if the database has not been started. @@ -123,7 +123,7 @@ export declare class RIDB { * @returns The collections object. */ get collections(): { - [name in keyof T]: Collection>; + [name in keyof T]: RIDBTypes.Collection>; }; /** * Loads the RIDB Rust module. @@ -136,7 +136,7 @@ export declare class RIDB { * @returns {Promise>} A promise that resolves to the database instance. * @param options */ - start(options?: StartOptions): Promise>; + start(options?: StartOptions): Promise>; close(): Promise; } /** @@ -150,39 +150,4 @@ export declare const SchemaFieldType: { object: "object"; }; -export { - AnyVersionGreaterThan1, - BasePlugin, - BasePluginOptions, - BaseStorage, - Collection, - CreateStorage, - Database, - Doc, - EnumerateFrom1To, - EnumerateUpTo, - ExtractType, - Hook, - InOperator, - InternalsRecord, - IsVersionGreaterThan0, - LogicalOperators, - MigrationFunction, - MigrationPathsForSchema, - MigrationPathsForSchemas, - MigrationsParameter, - OpType, - Operation, - OperatorOrType, - Operators, - Property, - Query, - QueryType, - RIDBModule, - Schema, - SchemaType, - SchemaTypeRecord, - StorageInternal, -}; - export {}; diff --git a/packages/ridb/build/index.d.ts b/packages/ridb/build/index.d.ts index 92f0507..699a0c7 100644 --- a/packages/ridb/build/index.d.ts +++ b/packages/ridb/build/index.d.ts @@ -1,6 +1,6 @@ // Generated by dts-bundle-generator v9.5.1 -import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Collection, CreateStorage, Database, Doc, EnumerateFrom1To, EnumerateUpTo, ExtractType, Hook, InOperator, InternalsRecord, IsVersionGreaterThan0, LogicalOperators, MigrationFunction, MigrationPathsForSchema, MigrationPathsForSchemas, MigrationsParameter, OpType, Operation, OperatorOrType, Operators, Property, Query, QueryType, RIDBModule, Schema, SchemaType, SchemaTypeRecord, StorageInternal } from '@trust0/ridb-wasm'; +import { BaseStorage } from '@trust0/ridb-wasm'; /** * Represents a RIDB (Rust IndexedDB) instance. @@ -83,19 +83,19 @@ import { AnyVersionGreaterThan1, BasePlugin, BasePluginOptions, BaseStorage, Col * @class * @template T - The type of the schema record. */ -export type StorageClass = { +export type StorageClass = { create: (name: string, schemas: T, options: any) => Promise>; }; export declare enum StorageType { InMemory = "InMemory", IndexDB = "IndexDB" } -export type StartOptions = { +export type StartOptions = { storageType?: StorageClass | StorageType; password?: string; [name: string]: any; }; -export declare class RIDB { +export declare class RIDB { private schemas; private migrations; private plugins; @@ -108,8 +108,8 @@ export declare class RIDB { constructor(options: { dbName: string; schemas: T; - plugins?: Array; - } & MigrationsParameter); + plugins?: Array; + } & RIDBTypes.MigrationsParameter); private getStorageType; /** * Gets the database instance. Throws an error if the database has not been started. @@ -123,7 +123,7 @@ export declare class RIDB { * @returns The collections object. */ get collections(): { - [name in keyof T]: Collection>; + [name in keyof T]: RIDBTypes.Collection>; }; /** * Loads the RIDB Rust module. @@ -136,7 +136,7 @@ export declare class RIDB { * @returns {Promise>} A promise that resolves to the database instance. * @param options */ - start(options?: StartOptions): Promise>; + start(options?: StartOptions): Promise>; close(): Promise; } /** @@ -150,39 +150,4 @@ export declare const SchemaFieldType: { object: "object"; }; -export { - AnyVersionGreaterThan1, - BasePlugin, - BasePluginOptions, - BaseStorage, - Collection, - CreateStorage, - Database, - Doc, - EnumerateFrom1To, - EnumerateUpTo, - ExtractType, - Hook, - InOperator, - InternalsRecord, - IsVersionGreaterThan0, - LogicalOperators, - MigrationFunction, - MigrationPathsForSchema, - MigrationPathsForSchemas, - MigrationsParameter, - OpType, - Operation, - OperatorOrType, - Operators, - Property, - Query, - QueryType, - RIDBModule, - Schema, - SchemaType, - SchemaTypeRecord, - StorageInternal, -}; - export {}; diff --git a/packages/ridb/src/index.ts b/packages/ridb/src/index.ts index b35776c..2d2eb8b 100644 --- a/packages/ridb/src/index.ts +++ b/packages/ridb/src/index.ts @@ -25,40 +25,6 @@ import wasmBuffer from "@trust0/ridb-wasm/ridb_wasm_bg.wasm"; import * as RIDBTypes from "@trust0/ridb-wasm"; import { BaseStorage } from "@trust0/ridb-wasm"; -export { - BaseStorage, - OpType, - Database, - Collection, - Schema, - Query, - Property, - BasePlugin, - StorageInternal, - CreateStorage, - RIDBModule, - InternalsRecord, - ExtractType, - Doc, - Operation, - Hook, - BasePluginOptions, - SchemaType, - EnumerateUpTo, - EnumerateFrom1To, - IsVersionGreaterThan0, - AnyVersionGreaterThan1, - MigrationFunction, - MigrationPathsForSchema, - MigrationPathsForSchemas, - MigrationsParameter, - Operators, - InOperator, - OperatorOrType, - LogicalOperators, - QueryType, - SchemaTypeRecord -} from "@trust0/ridb-wasm"; let internal: typeof import("@trust0/ridb-wasm") | undefined; diff --git a/packages/ridb/vitest.config.ts b/packages/ridb/vitest.config.ts index c4f292c..dcc91ff 100644 --- a/packages/ridb/vitest.config.ts +++ b/packages/ridb/vitest.config.ts @@ -1,25 +1,24 @@ /// import { defineConfig } from 'vite' -import wasm from "vite-plugin-wasm"; -import topLevelAwait from "vite-plugin-top-level-await"; +import { resolve } from 'path' +import wasm from "vite-plugin-wasm" +import topLevelAwait from "vite-plugin-top-level-await" const isCI = process.env.CI === "true"; export default defineConfig({ + root: resolve(__dirname, '../..'), build: { minify: 'terser', - terserOptions: { format: { comments: 'all', preserve_annotations: true, }, - - }, - + } }, test: { - setupFiles: ['./tests/setup.ts'], + setupFiles: ['./packages/ridb/tests/setup.ts'], reporters: ['verbose'], coverage: { provider: 'istanbul', @@ -34,6 +33,5 @@ export default defineConfig({ 'build/esm/**/*' ], }, - } }) From 6fb295ce5be0d4e45f9d8be5911eed4eb8af34e5 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:22:35 +0000 Subject: [PATCH 14/35] chore(release): 0.10.2-rc.1 [skip ci] ## [0.10.2-rc.1](https://github.com/trust0-project/RIDB/compare/v0.10.1...v0.10.2-rc.1) (2024-12-26) ### Bug Fixes * adding basic performance tests ([1a09c25](https://github.com/trust0-project/RIDB/commit/1a09c25c28547e2ef37b93a7257253e3dbce21b6)) * clean workspace and include latest wasm version ([e942a7d](https://github.com/trust0-project/RIDB/commit/e942a7da5b76924e993a53166cac6f7797160eb9)) * fetch wasm from workspace ([dc81bb2](https://github.com/trust0-project/RIDB/commit/dc81bb2115e59002c33a510f838f86d436397efe)) * fix testing ([5e99350](https://github.com/trust0-project/RIDB/commit/5e99350898eda8968d8a6890d0cfafc1d35b8fae)) * improve examples and minor fixes ([fe6c3a4](https://github.com/trust0-project/RIDB/commit/fe6c3a43423945f80294e1cb5d7589efcc9ca935)) * improving types and fixing the code to enable external storage implementation (level) ([d30da67](https://github.com/trust0-project/RIDB/commit/d30da67befe324ff45ec9d04da2d3b3b7b498e0e)) * monorepo ([2d769a0](https://github.com/trust0-project/RIDB/commit/2d769a01327f6a2fd65d4318c1d93ce5c3a0d1f0)) * move example folder ([bd181d7](https://github.com/trust0-project/RIDB/commit/bd181d7d67f584ca409074d9db7964ef9f0483fb)) * release ci pipeline ([5bf4592](https://github.com/trust0-project/RIDB/commit/5bf4592f58b678c64ea5f0fce27777b23dcf96d6)) * release process ([42e9ecb](https://github.com/trust0-project/RIDB/commit/42e9ecb20e6e036654a14880024ac0fb222d5798)) * remove local package ([72ce2b4](https://github.com/trust0-project/RIDB/commit/72ce2b462b4a149f1b3909f2e39988d1f816fbd6)) * rollback to semantic-release ([e9f6818](https://github.com/trust0-project/RIDB/commit/e9f68183038757945cc39b7ab882b5e7979ad817)) * workspace testing fix ([fcb9867](https://github.com/trust0-project/RIDB/commit/fcb986716a10289391419eeeaf9ea92da85ecc19)) --- packages/ridb/CHANGELOG.md | 18 +++++++++++ packages/ridb/package.json | 63 +++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 32 deletions(-) create mode 100644 packages/ridb/CHANGELOG.md diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md new file mode 100644 index 0000000..4698dc7 --- /dev/null +++ b/packages/ridb/CHANGELOG.md @@ -0,0 +1,18 @@ +## [0.10.2-rc.1](https://github.com/trust0-project/RIDB/compare/v0.10.1...v0.10.2-rc.1) (2024-12-26) + + +### Bug Fixes + +* adding basic performance tests ([1a09c25](https://github.com/trust0-project/RIDB/commit/1a09c25c28547e2ef37b93a7257253e3dbce21b6)) +* clean workspace and include latest wasm version ([e942a7d](https://github.com/trust0-project/RIDB/commit/e942a7da5b76924e993a53166cac6f7797160eb9)) +* fetch wasm from workspace ([dc81bb2](https://github.com/trust0-project/RIDB/commit/dc81bb2115e59002c33a510f838f86d436397efe)) +* fix testing ([5e99350](https://github.com/trust0-project/RIDB/commit/5e99350898eda8968d8a6890d0cfafc1d35b8fae)) +* improve examples and minor fixes ([fe6c3a4](https://github.com/trust0-project/RIDB/commit/fe6c3a43423945f80294e1cb5d7589efcc9ca935)) +* improving types and fixing the code to enable external storage implementation (level) ([d30da67](https://github.com/trust0-project/RIDB/commit/d30da67befe324ff45ec9d04da2d3b3b7b498e0e)) +* monorepo ([2d769a0](https://github.com/trust0-project/RIDB/commit/2d769a01327f6a2fd65d4318c1d93ce5c3a0d1f0)) +* move example folder ([bd181d7](https://github.com/trust0-project/RIDB/commit/bd181d7d67f584ca409074d9db7964ef9f0483fb)) +* release ci pipeline ([5bf4592](https://github.com/trust0-project/RIDB/commit/5bf4592f58b678c64ea5f0fce27777b23dcf96d6)) +* release process ([42e9ecb](https://github.com/trust0-project/RIDB/commit/42e9ecb20e6e036654a14880024ac0fb222d5798)) +* remove local package ([72ce2b4](https://github.com/trust0-project/RIDB/commit/72ce2b462b4a149f1b3909f2e39988d1f816fbd6)) +* rollback to semantic-release ([e9f6818](https://github.com/trust0-project/RIDB/commit/e9f68183038757945cc39b7ab882b5e7979ad817)) +* workspace testing fix ([fcb9867](https://github.com/trust0-project/RIDB/commit/fcb986716a10289391419eeeaf9ea92da85ecc19)) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index eb91416..15621bf 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.1", + "version": "0.10.2-rc.1", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { @@ -43,37 +43,36 @@ "prepublishOnly": "npm run build" }, "devDependencies": { - "esbuild": "0.21.5", - "esbuild-plugin-wasm": "^1.1.0", - "esbuild-plugin-wasm-pack": "^1.1.0", - "@esbuild-plugins/node-resolve": "^0.2.2", - "@semantic-release/changelog": "^6.0.3", - "@semantic-release/commit-analyzer": "^13.0.0", - "@semantic-release/exec": "^6.0.3", - "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^10.3.5", - "@semantic-release/npm": "^12.0.1", - "@semantic-release/release-notes-generator": "^14.0.2", - "@types/node": "^20.14.2", - "@vitest/browser": "^1.6.0", - "@vitest/coverage-istanbul": "^1.6.0", - "@vitest/ui": "^1.6.0", - "jsdom": "^24.1.3", - "semantic-release": "^24.2.0", - "ts-node": "^10.9.2", - "turbo": "^2.3.3", - "typedoc": "^0.27.5", - "typedoc-plugin-external-module-map": "^2.1.0", - "typedoc-plugin-markdown": "^4.3.3", - "typedoc-plugin-rename-defaults": "^0.7.2", - "typedoc-theme-hierarchy": "^5.0.4", - "typescript": "^5.4.5", - "uuid": "^11.0.3", - "vite-plugin-top-level-await": "^1.4.1", - "vite-plugin-wasm": "^3.3.0", - "vitest": "^1.6.0", - "webdriverio": "^9.0.9", + "esbuild": "0.21.5", + "esbuild-plugin-wasm": "^1.1.0", + "esbuild-plugin-wasm-pack": "^1.1.0", + "@esbuild-plugins/node-resolve": "^0.2.2", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^10.3.5", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.2", + "@types/node": "^20.14.2", + "@vitest/browser": "^1.6.0", + "@vitest/coverage-istanbul": "^1.6.0", + "@vitest/ui": "^1.6.0", + "jsdom": "^24.1.3", + "semantic-release": "^24.2.0", + "ts-node": "^10.9.2", + "turbo": "^2.3.3", + "typedoc": "^0.27.5", + "typedoc-plugin-external-module-map": "^2.1.0", + "typedoc-plugin-markdown": "^4.3.3", + "typedoc-plugin-rename-defaults": "^0.7.2", + "typedoc-theme-hierarchy": "^5.0.4", + "typescript": "^5.4.5", + "uuid": "^11.0.3", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0", + "vitest": "^1.6.0", + "webdriverio": "^9.0.9", "@trust0/ridb-wasm": "^1.0.11" } } - From 0eefd5bdbdba8a63460d194dba5ee03667aa9c51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:24:01 +0100 Subject: [PATCH 15/35] fix: testing ci --- .github/workflows/pr.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index a685d8d..af153cf 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -21,7 +21,9 @@ jobs: registry-url: 'https://registry.npmjs.org/' cache: 'npm' cache-dependency-path: ./package-lock.json + - name: Install WASM - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - - run: npm install && npm test \ No newline at end of file + run: | + curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + npm ci + npm test From fc031d93e0facbb7308b90cd203499f18083b378 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:24:53 +0000 Subject: [PATCH 16/35] chore(release): 0.10.2-rc.2 [skip ci] ## [0.10.2-rc.2](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.1...v0.10.2-rc.2) (2024-12-26) ### Bug Fixes * testing ci ([0eefd5b](https://github.com/trust0-project/RIDB/commit/0eefd5bdbdba8a63460d194dba5ee03667aa9c51)) --- packages/ridb/CHANGELOG.md | 7 +++++++ packages/ridb/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index 4698dc7..85985d6 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.10.2-rc.2](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.1...v0.10.2-rc.2) (2024-12-26) + + +### Bug Fixes + +* testing ci ([0eefd5b](https://github.com/trust0-project/RIDB/commit/0eefd5bdbdba8a63460d194dba5ee03667aa9c51)) + ## [0.10.2-rc.1](https://github.com/trust0-project/RIDB/compare/v0.10.1...v0.10.2-rc.1) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 15621bf..2bd78d2 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.1", + "version": "0.10.2-rc.2", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From 9ecc6df4a7163aaead43f79a6e36147930941d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:25:50 +0100 Subject: [PATCH 17/35] fix: pr pipeline --- .github/workflows/pr.yml | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index af153cf..322a6fc 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -12,17 +12,35 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' registry-url: 'https://registry.npmjs.org/' + scope: '@trust0' # Replace with your organization scope cache: 'npm' cache-dependency-path: ./package-lock.json - + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + + - name: Install wasm-pack + run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + + - name: Configure npm authentication + run: | + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ./.npmrc + echo "@trust0:registry=https://registry.npmjs.org/" >> ./.npmrc + env: + NPM_TOKEN: ${{ env.NPM_TOKEN }} + - name: Install WASM + env: + NPM_TOKEN: ${{ env.NPM_TOKEN }} + GH_TOKEN: ${{ secrets.GH_SECRET }} run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh npm ci From 2d59f478d288bd780fdac2a6e49be2c73998f2d5 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:26:56 +0000 Subject: [PATCH 18/35] chore(release): 0.10.2-rc.3 [skip ci] ## [0.10.2-rc.3](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.2...v0.10.2-rc.3) (2024-12-26) ### Bug Fixes * pr pipeline ([9ecc6df](https://github.com/trust0-project/RIDB/commit/9ecc6df4a7163aaead43f79a6e36147930941d12)) --- packages/ridb/CHANGELOG.md | 7 +++++++ packages/ridb/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index 85985d6..2406278 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.10.2-rc.3](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.2...v0.10.2-rc.3) (2024-12-26) + + +### Bug Fixes + +* pr pipeline ([9ecc6df](https://github.com/trust0-project/RIDB/commit/9ecc6df4a7163aaead43f79a6e36147930941d12)) + ## [0.10.2-rc.2](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.1...v0.10.2-rc.2) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 2bd78d2..0be1105 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.2", + "version": "0.10.2-rc.3", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From 820b6ce38bce1a76ed0064735e63b8ce060a040c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:27:43 +0100 Subject: [PATCH 19/35] fix: pipeline --- .github/workflows/pr.yml | 4 ++-- .github/workflows/release.yml | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 322a6fc..0d8eec2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -11,6 +11,8 @@ on: jobs: test: runs-on: ubuntu-latest + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} steps: - name: Setup Node.js uses: actions/setup-node@v4 @@ -18,8 +20,6 @@ jobs: node-version: '20' registry-url: 'https://registry.npmjs.org/' scope: '@trust0' # Replace with your organization scope - cache: 'npm' - cache-dependency-path: ./package-lock.json - name: Install Rust toolchain uses: actions-rs/toolchain@v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e617dd7..3b734ae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,9 +32,7 @@ jobs: with: node-version: '20' registry-url: 'https://registry.npmjs.org/' - scope: '@trust0' # Replace with your organization scope - cache: 'npm' - cache-dependency-path: ./package-lock.json + scope: '@trust0' - name: Install Rust toolchain uses: actions-rs/toolchain@v1 From 628e4ddac696a7359e9c435a29a20dc03c7091da Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:28:38 +0000 Subject: [PATCH 20/35] chore(release): 0.10.2-rc.4 [skip ci] ## [0.10.2-rc.4](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.3...v0.10.2-rc.4) (2024-12-26) ### Bug Fixes * pipeline ([820b6ce](https://github.com/trust0-project/RIDB/commit/820b6ce38bce1a76ed0064735e63b8ce060a040c)) --- packages/ridb/CHANGELOG.md | 7 +++++++ packages/ridb/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index 2406278..73bbb7a 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.10.2-rc.4](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.3...v0.10.2-rc.4) (2024-12-26) + + +### Bug Fixes + +* pipeline ([820b6ce](https://github.com/trust0-project/RIDB/commit/820b6ce38bce1a76ed0064735e63b8ce060a040c)) + ## [0.10.2-rc.3](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.2...v0.10.2-rc.3) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 0be1105..c255b93 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.3", + "version": "0.10.2-rc.4", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From cf56fe3b29e748b7b8974097893f73a2baba9cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:28:44 +0100 Subject: [PATCH 21/35] fix: ci --- .github/workflows/pr.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0d8eec2..b632231 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -43,5 +43,5 @@ jobs: GH_TOKEN: ${{ secrets.GH_SECRET }} run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - npm ci + npm install npm test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b734ae..b29fbac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,6 +55,6 @@ jobs: NPM_TOKEN: ${{ env.NPM_TOKEN }} GH_TOKEN: ${{ secrets.GH_SECRET }} run: | - npm ci + npm install npm run build cd packages/ridb && npx semantic-release From 87a322caa96eca2efb11b86c6865bc4d662f7bb7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:29:44 +0000 Subject: [PATCH 22/35] chore(release): 0.10.2-rc.5 [skip ci] ## [0.10.2-rc.5](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.4...v0.10.2-rc.5) (2024-12-26) ### Bug Fixes * ci ([cf56fe3](https://github.com/trust0-project/RIDB/commit/cf56fe3b29e748b7b8974097893f73a2baba9cb0)) --- packages/ridb/CHANGELOG.md | 7 +++++++ packages/ridb/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index 73bbb7a..991e5cf 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.10.2-rc.5](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.4...v0.10.2-rc.5) (2024-12-26) + + +### Bug Fixes + +* ci ([cf56fe3](https://github.com/trust0-project/RIDB/commit/cf56fe3b29e748b7b8974097893f73a2baba9cb0)) + ## [0.10.2-rc.4](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.3...v0.10.2-rc.4) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index c255b93..7d5ba50 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.4", + "version": "0.10.2-rc.5", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From 3ac2202b2050584873de79eeba8fc06df9d0a008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:32:41 +0100 Subject: [PATCH 23/35] fix: paths --- .github/workflows/pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index b632231..83c8aef 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -43,5 +43,6 @@ jobs: GH_TOKEN: ${{ secrets.GH_SECRET }} run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + cd packages/ridb npm install npm test From a2cdf9d860792f299980d3d74cdb8e81de741d8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:33:30 +0100 Subject: [PATCH 24/35] fix: ci pipeline fix wasm-pack --- .github/workflows/pr.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 83c8aef..358f6d0 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -27,9 +27,6 @@ jobs: toolchain: stable override: true - - name: Install wasm-pack - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - name: Configure npm authentication run: | echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ./.npmrc From 5c0493c292cb39107935bd2f4b74fef8b75b43c7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:34:21 +0000 Subject: [PATCH 25/35] chore(release): 0.10.2-rc.6 [skip ci] ## [0.10.2-rc.6](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.5...v0.10.2-rc.6) (2024-12-26) ### Bug Fixes * ci pipeline fix wasm-pack ([a2cdf9d](https://github.com/trust0-project/RIDB/commit/a2cdf9d860792f299980d3d74cdb8e81de741d8a)) * paths ([3ac2202](https://github.com/trust0-project/RIDB/commit/3ac2202b2050584873de79eeba8fc06df9d0a008)) --- packages/ridb/CHANGELOG.md | 8 ++++++++ packages/ridb/package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index 991e5cf..301ce12 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,11 @@ +## [0.10.2-rc.6](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.5...v0.10.2-rc.6) (2024-12-26) + + +### Bug Fixes + +* ci pipeline fix wasm-pack ([a2cdf9d](https://github.com/trust0-project/RIDB/commit/a2cdf9d860792f299980d3d74cdb8e81de741d8a)) +* paths ([3ac2202](https://github.com/trust0-project/RIDB/commit/3ac2202b2050584873de79eeba8fc06df9d0a008)) + ## [0.10.2-rc.5](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.4...v0.10.2-rc.5) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 7d5ba50..52db964 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.5", + "version": "0.10.2-rc.6", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From e041f50695f098fbc0f9ce5ad8ca9f5bfa1a81e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:38:12 +0100 Subject: [PATCH 26/35] fix: test --- .github/workflows/pr.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 358f6d0..9bf3d33 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -40,6 +40,8 @@ jobs: GH_TOKEN: ${{ secrets.GH_SECRET }} run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - cd packages/ridb + ls + pwd + echo "npm install" npm install npm test From 7f3e4366dc3314c31038deecefecb71cb1e88de7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:39:25 +0000 Subject: [PATCH 27/35] chore(release): 0.10.2-rc.7 [skip ci] ## [0.10.2-rc.7](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.6...v0.10.2-rc.7) (2024-12-26) ### Bug Fixes * test ([e041f50](https://github.com/trust0-project/RIDB/commit/e041f50695f098fbc0f9ce5ad8ca9f5bfa1a81e5)) --- packages/ridb/CHANGELOG.md | 7 +++++++ packages/ridb/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index 301ce12..a8c8003 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.10.2-rc.7](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.6...v0.10.2-rc.7) (2024-12-26) + + +### Bug Fixes + +* test ([e041f50](https://github.com/trust0-project/RIDB/commit/e041f50695f098fbc0f9ce5ad8ca9f5bfa1a81e5)) + ## [0.10.2-rc.6](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.5...v0.10.2-rc.6) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 52db964..82fcbe5 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.6", + "version": "0.10.2-rc.7", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From d7eb487e481b989a6295b9caa3ca560ab67839ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:40:15 +0100 Subject: [PATCH 28/35] fix: release pipeline --- .github/workflows/pr.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 9bf3d33..2d57364 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -40,8 +40,8 @@ jobs: GH_TOKEN: ${{ secrets.GH_SECRET }} run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - ls - pwd - echo "npm install" + + echo "list $(ls)" + echo "path $(pwd)" npm install npm test From 9e7f9a8568f228ba580fc33999f0dcc38630a566 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:41:11 +0000 Subject: [PATCH 29/35] chore(release): 0.10.2-rc.8 [skip ci] ## [0.10.2-rc.8](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.7...v0.10.2-rc.8) (2024-12-26) ### Bug Fixes * release pipeline ([d7eb487](https://github.com/trust0-project/RIDB/commit/d7eb487e481b989a6295b9caa3ca560ab67839ad)) --- packages/ridb/CHANGELOG.md | 7 +++++++ packages/ridb/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index a8c8003..b50ff6e 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.10.2-rc.8](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.7...v0.10.2-rc.8) (2024-12-26) + + +### Bug Fixes + +* release pipeline ([d7eb487](https://github.com/trust0-project/RIDB/commit/d7eb487e481b989a6295b9caa3ca560ab67839ad)) + ## [0.10.2-rc.7](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.6...v0.10.2-rc.7) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 82fcbe5..577d905 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.7", + "version": "0.10.2-rc.8", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From 9cf327bec1e7e8dd16dc456d2f15c7612b50ea99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:46:17 +0100 Subject: [PATCH 30/35] fix: pipeline improvement, missing checkout step --- .github/workflows/pr.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2d57364..999e336 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -13,7 +13,15 @@ jobs: runs-on: ubuntu-latest env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + token: ${{ secrets.GH_SECRET }} + fetch-depth: 0 + - name: Setup Node.js uses: actions/setup-node@v4 with: @@ -40,8 +48,5 @@ jobs: GH_TOKEN: ${{ secrets.GH_SECRET }} run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - echo "list $(ls)" - echo "path $(pwd)" npm install npm test From 7993a09dea3b9cc815d70e0c00c55fc744829801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:47:37 +0100 Subject: [PATCH 31/35] fix: testing --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 999e336..67b3c24 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -49,4 +49,4 @@ jobs: run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh npm install - npm test + cd packages/ridb && npm test From 311a6ebf3ad9f8556df3332bf96bbeebe4988a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 15:51:06 +0100 Subject: [PATCH 32/35] fix: ci --- packages/ridb/vitest.config.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/ridb/vitest.config.ts b/packages/ridb/vitest.config.ts index dcc91ff..f5c4d32 100644 --- a/packages/ridb/vitest.config.ts +++ b/packages/ridb/vitest.config.ts @@ -1,13 +1,8 @@ /// import { defineConfig } from 'vite' -import { resolve } from 'path' -import wasm from "vite-plugin-wasm" -import topLevelAwait from "vite-plugin-top-level-await" - const isCI = process.env.CI === "true"; export default defineConfig({ - root: resolve(__dirname, '../..'), build: { minify: 'terser', terserOptions: { @@ -18,7 +13,7 @@ export default defineConfig({ } }, test: { - setupFiles: ['./packages/ridb/tests/setup.ts'], + setupFiles: ['./tests/setup.ts'], reporters: ['verbose'], coverage: { provider: 'istanbul', From 15d9b787c7e7d9f192826828b4e035961533ce4e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 14:51:58 +0000 Subject: [PATCH 33/35] chore(release): 0.10.2-rc.9 [skip ci] ## [0.10.2-rc.9](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.8...v0.10.2-rc.9) (2024-12-26) ### Bug Fixes * ci ([311a6eb](https://github.com/trust0-project/RIDB/commit/311a6ebf3ad9f8556df3332bf96bbeebe4988a2d)) * pipeline improvement, missing checkout step ([9cf327b](https://github.com/trust0-project/RIDB/commit/9cf327bec1e7e8dd16dc456d2f15c7612b50ea99)) * testing ([7993a09](https://github.com/trust0-project/RIDB/commit/7993a09dea3b9cc815d70e0c00c55fc744829801)) --- packages/ridb/CHANGELOG.md | 9 +++++++++ packages/ridb/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index b50ff6e..8e81f7e 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,12 @@ +## [0.10.2-rc.9](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.8...v0.10.2-rc.9) (2024-12-26) + + +### Bug Fixes + +* ci ([311a6eb](https://github.com/trust0-project/RIDB/commit/311a6ebf3ad9f8556df3332bf96bbeebe4988a2d)) +* pipeline improvement, missing checkout step ([9cf327b](https://github.com/trust0-project/RIDB/commit/9cf327bec1e7e8dd16dc456d2f15c7612b50ea99)) +* testing ([7993a09](https://github.com/trust0-project/RIDB/commit/7993a09dea3b9cc815d70e0c00c55fc744829801)) + ## [0.10.2-rc.8](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.7...v0.10.2-rc.8) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 577d905..0fbac77 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.8", + "version": "0.10.2-rc.9", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": { From 499137134ab1947f854a1feb6601f7bbdf82be09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Ribo=CC=81?= Date: Thu, 26 Dec 2024 16:00:57 +0100 Subject: [PATCH 34/35] fix: ci --- .github/workflows/pr.yml | 3 ++- package-lock.json | 2 +- turbo.json | 10 ++-------- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 67b3c24..a48017a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -49,4 +49,5 @@ jobs: run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh npm install - cd packages/ridb && npm test + npm run build + npm test diff --git a/package-lock.json b/package-lock.json index 1356625..ab60ba2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14053,7 +14053,7 @@ }, "packages/ridb": { "name": "@trust0/ridb", - "version": "0.10.1", + "version": "0.10.2-rc.8", "license": "Apache-2.0", "devDependencies": { "@esbuild-plugins/node-resolve": "^0.2.2", diff --git a/turbo.json b/turbo.json index f6c32dd..a567506 100644 --- a/turbo.json +++ b/turbo.json @@ -6,16 +6,10 @@ "outputs": ["build/**"] }, "test": { - "persistent": true, - "cache": false + "dependsOn": ["^test"] }, "docs": { - "persistent": true, - "cache": false - }, - "dev": { - "persistent": true, - "cache": false + "dependsOn": ["^docs"] } } } \ No newline at end of file From 2d5240276939be276cdd92b351191b5aba9718f1 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Dec 2024 15:02:02 +0000 Subject: [PATCH 35/35] chore(release): 0.10.2-rc.10 [skip ci] ## [0.10.2-rc.10](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.9...v0.10.2-rc.10) (2024-12-26) ### Bug Fixes * ci ([4991371](https://github.com/trust0-project/RIDB/commit/499137134ab1947f854a1feb6601f7bbdf82be09)) --- packages/ridb/CHANGELOG.md | 7 +++++++ packages/ridb/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ridb/CHANGELOG.md b/packages/ridb/CHANGELOG.md index 8e81f7e..2f2988e 100644 --- a/packages/ridb/CHANGELOG.md +++ b/packages/ridb/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.10.2-rc.10](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.9...v0.10.2-rc.10) (2024-12-26) + + +### Bug Fixes + +* ci ([4991371](https://github.com/trust0-project/RIDB/commit/499137134ab1947f854a1feb6601f7bbdf82be09)) + ## [0.10.2-rc.9](https://github.com/trust0-project/RIDB/compare/v0.10.2-rc.8...v0.10.2-rc.9) (2024-12-26) diff --git a/packages/ridb/package.json b/packages/ridb/package.json index 0fbac77..c153368 100644 --- a/packages/ridb/package.json +++ b/packages/ridb/package.json @@ -1,6 +1,6 @@ { "name": "@trust0/ridb", - "version": "0.10.2-rc.9", + "version": "0.10.2-rc.10", "description": "Dependency free wasm db encrypted and secure database wrapper for web and node.", "main": "./build/cjs/index.js", "publishConfig": {