From da89697a2a37ddad02c4ddbd6c2d0db8fcb416cb Mon Sep 17 00:00:00 2001 From: Jordan Schultz Date: Fri, 14 Jun 2024 14:49:48 -0700 Subject: [PATCH 1/3] added vite config for compiling/bundling --- mica-chatbot/.eslintrc.cjs | 21 + mica-chatbot/.gitignore | 24 + mica-chatbot/README.md | 8 + mica-chatbot/index.html | 13 + mica-chatbot/package-lock.json | 5725 +++++++++++++++++ mica-chatbot/package.json | 33 + mica-chatbot/public/vite.svg | 1 + mica-chatbot/src/App.css | 49 + mica-chatbot/src/App.jsx | 47 + mica-chatbot/src/assets/images/cappy.png | Bin 0 -> 185091 bytes .../src/assets/images/chatGPT_logo.png | Bin 0 -> 71197 bytes mica-chatbot/src/assets/images/mica_logo.png | Bin 0 -> 3735 bytes .../src/assets/images/redcap_logo.png | Bin 0 -> 5771 bytes .../src/assets/images/stanford_home.webp | Bin 0 -> 20362 bytes .../assets/images/top_level_drill_down.webp | Bin 0 -> 9530 bytes mica-chatbot/src/assets/react.svg | 1 + mica-chatbot/src/assets/styles/global.css | 34 + .../src/components/ResizableContainer.jsx | 23 + mica-chatbot/src/components/database/dexie.js | 71 + mica-chatbot/src/components/footer/footer.css | 58 + mica-chatbot/src/components/footer/footer.jsx | 44 + mica-chatbot/src/components/header/header.css | 44 + mica-chatbot/src/components/header/header.jsx | 24 + .../src/components/messages/messages.css | 108 + .../src/components/messages/messages.jsx | 87 + mica-chatbot/src/components/utils/utils.js | 19 + mica-chatbot/src/contexts/Chat.jsx | 168 + mica-chatbot/src/index.css | 13 + mica-chatbot/src/main.jsx | 15 + mica-chatbot/src/views/History/history.jsx | 81 + mica-chatbot/src/views/History/index.js | 3 + mica-chatbot/src/views/Home/home.jsx | 11 + mica-chatbot/src/views/Home/index.js | 3 + mica-chatbot/src/views/Splash/index.js | 3 + mica-chatbot/src/views/Splash/splash.css | 8 + mica-chatbot/src/views/Splash/splash.jsx | 11 + mica-chatbot/vite.config.js | 7 + 37 files changed, 6757 insertions(+) create mode 100644 mica-chatbot/.eslintrc.cjs create mode 100644 mica-chatbot/.gitignore create mode 100644 mica-chatbot/README.md create mode 100644 mica-chatbot/index.html create mode 100644 mica-chatbot/package-lock.json create mode 100644 mica-chatbot/package.json create mode 100644 mica-chatbot/public/vite.svg create mode 100644 mica-chatbot/src/App.css create mode 100644 mica-chatbot/src/App.jsx create mode 100644 mica-chatbot/src/assets/images/cappy.png create mode 100644 mica-chatbot/src/assets/images/chatGPT_logo.png create mode 100644 mica-chatbot/src/assets/images/mica_logo.png create mode 100644 mica-chatbot/src/assets/images/redcap_logo.png create mode 100644 mica-chatbot/src/assets/images/stanford_home.webp create mode 100644 mica-chatbot/src/assets/images/top_level_drill_down.webp create mode 100644 mica-chatbot/src/assets/react.svg create mode 100644 mica-chatbot/src/assets/styles/global.css create mode 100644 mica-chatbot/src/components/ResizableContainer.jsx create mode 100644 mica-chatbot/src/components/database/dexie.js create mode 100644 mica-chatbot/src/components/footer/footer.css create mode 100644 mica-chatbot/src/components/footer/footer.jsx create mode 100644 mica-chatbot/src/components/header/header.css create mode 100644 mica-chatbot/src/components/header/header.jsx create mode 100644 mica-chatbot/src/components/messages/messages.css create mode 100644 mica-chatbot/src/components/messages/messages.jsx create mode 100644 mica-chatbot/src/components/utils/utils.js create mode 100644 mica-chatbot/src/contexts/Chat.jsx create mode 100644 mica-chatbot/src/index.css create mode 100644 mica-chatbot/src/main.jsx create mode 100644 mica-chatbot/src/views/History/history.jsx create mode 100644 mica-chatbot/src/views/History/index.js create mode 100644 mica-chatbot/src/views/Home/home.jsx create mode 100644 mica-chatbot/src/views/Home/index.js create mode 100644 mica-chatbot/src/views/Splash/index.js create mode 100644 mica-chatbot/src/views/Splash/splash.css create mode 100644 mica-chatbot/src/views/Splash/splash.jsx create mode 100644 mica-chatbot/vite.config.js diff --git a/mica-chatbot/.eslintrc.cjs b/mica-chatbot/.eslintrc.cjs new file mode 100644 index 0000000..3e212e1 --- /dev/null +++ b/mica-chatbot/.eslintrc.cjs @@ -0,0 +1,21 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + settings: { react: { version: '18.2' } }, + plugins: ['react-refresh'], + rules: { + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/mica-chatbot/.gitignore b/mica-chatbot/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/mica-chatbot/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/mica-chatbot/README.md b/mica-chatbot/README.md new file mode 100644 index 0000000..f768e33 --- /dev/null +++ b/mica-chatbot/README.md @@ -0,0 +1,8 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/mica-chatbot/index.html b/mica-chatbot/index.html new file mode 100644 index 0000000..0c589ec --- /dev/null +++ b/mica-chatbot/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/mica-chatbot/package-lock.json b/mica-chatbot/package-lock.json new file mode 100644 index 0000000..ee85da5 --- /dev/null +++ b/mica-chatbot/package-lock.json @@ -0,0 +1,5725 @@ +{ + "name": "mica-chatbot", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "mica-chatbot", + "version": "0.0.0", + "dependencies": { + "axios": "^1.7.2", + "dexie": "^4.0.7", + "react": "^18.2.0", + "react-bootstrap": "^2.10.2", + "react-bootstrap-icons": "^1.11.4", + "react-confirm-alert": "^3.0.6", + "react-detect-offline": "^2.4.5", + "react-dom": "^18.2.0", + "react-markdown": "^9.0.1" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react": "^7.34.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "vite": "^5.2.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "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, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "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, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "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, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", + "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.9.tgz", + "integrity": "sha512-mUbygUsJcRurjZCt1f77gg4DpheD1D+Sc7J3JjAkysUj7t8m4EBJVOqWC9788Qtbc69cJ+HlJc6jBguKwS8Mcw==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "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 + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001634", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", + "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dexie": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-4.0.7.tgz", + "integrity": "sha512-M+Lo6rk4pekIfrc2T0o2tvVJwL6EAAM/B78DNfb8aaxFVoI1f8/rz5KTxuAnApkwqTSuxx7T5t0RKH7qprapGg==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.802", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.802.tgz", + "integrity": "sha512-TnTMUATbgNdPXVSHsxvNVSG0uEd6cSZsANjm8c9HbvflZVVn1yTRcmVXYT1Ma95/ssB/Dcd30AHweH2TE+dNpA==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", + "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz", + "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-url-attributes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz", + "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inline-style-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "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==" + }, + "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, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "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, + "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", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.2.tgz", + "integrity": "sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.8", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-bootstrap-icons": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/react-bootstrap-icons/-/react-bootstrap-icons-1.11.4.tgz", + "integrity": "sha512-lnkOpNEZ/Zr7mNxvjA9efuarCPSgtOuGA55XiRj7ASJnBjb1wEAdtJOd2Aiv9t07r7FLI1IgyZPg9P6jqWD/IA==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=16.8.6" + } + }, + "node_modules/react-confirm-alert": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/react-confirm-alert/-/react-confirm-alert-3.0.6.tgz", + "integrity": "sha512-rplP6Ed9ZSNd0KFV5BUzk4EPQ77BxsrayllBXGFuA8xPXc7sbBjgU5KUrNpl7aWFmP7mXRlVXfuy1IT5DbffYw==", + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=10.0.0" + } + }, + "node_modules/react-detect-offline": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/react-detect-offline/-/react-detect-offline-2.4.5.tgz", + "integrity": "sha512-sI13NPEKl3uQp95FT5CwrYzH3DnXCwNP6TnY6NRF5gFDM4NU9KDlbtA6HG2dwhDVS0RYQGXwZW/mHbdf8fCnaw==" + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-markdown": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", + "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "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, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "dependencies": { + "inline-style-parser": "0.2.3" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", + "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/mica-chatbot/package.json b/mica-chatbot/package.json new file mode 100644 index 0000000..6c88d8e --- /dev/null +++ b/mica-chatbot/package.json @@ -0,0 +1,33 @@ +{ + "name": "mica-chatbot", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.7.2", + "dexie": "^4.0.7", + "react": "^18.2.0", + "react-bootstrap": "^2.10.2", + "react-bootstrap-icons": "^1.11.4", + "react-confirm-alert": "^3.0.6", + "react-detect-offline": "^2.4.5", + "react-dom": "^18.2.0", + "react-markdown": "^9.0.1" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react": "^7.34.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "vite": "^5.2.0" + } +} diff --git a/mica-chatbot/public/vite.svg b/mica-chatbot/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/mica-chatbot/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mica-chatbot/src/App.css b/mica-chatbot/src/App.css new file mode 100644 index 0000000..1377dba --- /dev/null +++ b/mica-chatbot/src/App.css @@ -0,0 +1,49 @@ +.container { + max-width:initial; +} + +#chatbot_ui_container { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + z-index: 9999; + pointer-events: auto; /* Make the entire container interactive */ + display: flex; + flex-direction: column; + background-color:#E6E7ED; +} + +.full-screen-container { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + background: #2C2C2C; /* Assuming you want the same background */ +} + +.full-screen-container.splash { + background: none; + display: flex; + justify-content: center; + align-items: center; +} + +.content { + flex: 1; + overflow: hidden; + display: flex; + flex-direction: column; +} + +.body { + flex: 1; + overflow-y: auto; +} + +.messages { + height: 100%; + overflow-y: scroll; + padding-bottom: 50px; +} diff --git a/mica-chatbot/src/App.jsx b/mica-chatbot/src/App.jsx new file mode 100644 index 0000000..d91870d --- /dev/null +++ b/mica-chatbot/src/App.jsx @@ -0,0 +1,47 @@ +import React, { useState, useEffect } from 'react'; +import Header from './components/header/header.jsx'; +import {Footer} from './components/footer/footer.jsx'; +import {Splash} from './views/Splash/splash.jsx'; +import {Home} from './views/Home/home.jsx'; +import {History} from './views/History/history.jsx'; +import './App.css'; +import './assets/styles/global.css'; + +function App() { + const [currentView, setCurrentView] = useState('splash'); + + const changeView = (viewName) => { + setCurrentView(viewName); + }; + + let ViewComponent; + switch (currentView) { + case 'home': + ViewComponent = ; + break; + case 'history': + ViewComponent = ; + break; + case 'splash': + default: + ViewComponent = ; + break; + } + + return ( +
+ {currentView !== 'splash' && ( + <> +
+
+ {ViewComponent} +
+
+ + )} + {currentView === 'splash' && ViewComponent} +
+ ); +} + +export default App; diff --git a/mica-chatbot/src/assets/images/cappy.png b/mica-chatbot/src/assets/images/cappy.png new file mode 100644 index 0000000000000000000000000000000000000000..b66eff3b3a6b7a9cb4fec2184d1dcb30f78c38f7 GIT binary patch literal 185091 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

euuGeG8%kl5p~VH0>c zgmhUMa?y3?w%CaF2zR!lXZjfhC?wXAxqSooUi()_mrlb!Y&gOM{!7>N1V~y_nvQYz z4pK)CB5`0htlOV*+S*5s7z?u7FeD9T`5=U=Rv@%;Ba|@{;V_ev=uM&qY29l?^vC}S z`_vIgCFRgoY;@VcMLYub>P>JMNXJb(gOgF0ucu zi)a*?()FauY$oND9K9nug7le>deN58w>Y}~h1|sTs2fh0Rp%7*~_86Yr zya|IV%Q@BRWs?M^yE5$LT)3?9Xmii=0;G06)9A5oOlB1vuBXl{sEj*$54=r z!be)B1e~9-%}R&|h;*0fDCizA5QV?_ZTJ^10ZK(*AB%p|M2kc>%nPT`{@?!u;SNf# zax$>*edaE$NVDbG8e+NKnkIjesQMafuWC=cfY9crAr%!0VB`CuI;0J!r48xhhmkn+ z5v&_mpeACRUQLq}TX`i5s7DqoL6F8`(RFj}F|T)xPDQ`p*oeBfe}c|iH&H%s5k_u! z0&-z-uKUF0Y|zvWBAYO8(XIb79C2Tz`xncyiF*)WPX$90R%Zv22ezZ@-5)|~Z-Fvl zD#9C|N5K*TNOzit3&bqauBTz&YeM?`86=J$WRU`e#(z;%Pj#@ON`x0yBeHxQvstwK_h%Zos(tDWb3b3vliP;158VQ-#7!&qA8;sC&&qUe4-{qV2#QbnV;;HL0^k zY{|w=a7t(m^7c3_9jVCNx{mbDtw`8L-%(DPV^>N2RI+aFOS10#L@_=PG zBilRO?*XI$NewAIfNn#BPNfgmx8z9HWzBjHt*$ueP-sM!54%(g4S^ui3Y8=JPP66% zBrTaDD?*BH-W)u>c@x3`KM&N-F;WEwC%3<49@TaIb}im``z>6)b{z>KFx`K?96*YF zLaYY6v@p~)d-5Yk-~Q1*{FSPzNBh&PpC3H+1LS8|ONt&}{?2zEy;Ee!tpb#k^n~nNg*ArptEuaioW$9;GegMTLnZTKSdKZY?^9u_Bh)9;*SyT>U1Z9 zJm9o_0;Jbe(-RM3$ZOGidhV-qgJXwSK($tc2 zghq^lHew8v%0ZALg^;r{b7JyJ_8?~I-3HXZ^AmL5xPh{{i!g!!l53D+3-DAA4kAf* zjR-)wsU#w@5K&Kljmjfv5OdWgk%4n3(e>sJ;lKHbAR0}WhS0|65m~yrM+C`*ufAaSwupPZXkC11{y!w4YMX0D2Z?~`h~tu06$ z+>6w^KZd`d7CwW7;oW}W-jChOB)AA@GOM*4-O&V0kI-{}Wx<_@A;wj~(V&}tbm#Ttr?JE|WCWEsbTGMfDgbRy5?C2+mV>;><<(s!$L~{&A!Xs) zYZlG?m;e3O|NS2Ur20YfGnlMCKGF}6Kj%79&*S^=zdz{sr`K0Db;MrMZEcnXHRKV^ zaz3UT&UoK10b##}c{68W{i>B1HEcNiRKv;6M$EkoEPdt>lhQ_Q!yW8Ba2WdzA3-cb zUM2lrUTQV_-gu8vyrA?lhJyiAEuM>SyznFz&z_3na41(v@i0}-z^JW3blX;#hxZ}a z+=u|pa&+lCqIunGt9Zy_<-PpgZ!t@d?GUvu$mkd}3?<+BefVe3hZHGrEv5iS8vA6P zJBhYG|4)cSJGmCvcZSuyPd5q_#?9p;a*C2C__;=p)=@?(QUWYnjo_2dz&CC@*UmV4 zcGu2}&YWZdCbb=;;tXO+C zEXJ@6PYRNbn@M0|3O!rWwB;!(HVY8SP{&aHVw}_wFTv6r9z0qgIK2E=H4sXw}$2LfaUEwcjMIA3+Rj{ z#6D$5Qp_Ty>+-}TIc-b(U6SmgpxXK9BSZGT^^bq^7v;Ks1tUjh`a$yNH17QX`HL^u zu3fvrfB4z2y90sx8U#$;ZQ&4WB@B}Qp@$x9jrtZaDh;;TR3ik2<%5DBedZugqE%mWhRC+z&<_P#%Y z{5jT;YLDOe)_)lO(ZORcv~v2s~8 zN=r((9+?Flmo$(SIChBsZQ|OkTI|?!0H;1ahm=7*kDeHL@5h#l9?1}Bnh%xbWqA4d zC-B@8D=~V=0Pc6peu|6^Pv(dscJwgf@4kTmwR2=rP}p0~eLtJ(JejTsE>|A_DGY%i zoEWkI$l`DR$6f&G0&pe`tM(SU{?}i@f8_$SbWAXN?>l;`q6qOH8I~4+O~ZwaG<+5j z`g64I+-W8dImkhB0t5nR$W zbr?-`Xx{oJx@&HuaNZIO-taUOX3geq!ivSvb@CXD+S~940|*QpEack?3s@pWOwzDn z$KpKo!)U69dFxX+pI(A}w;myyRAN$_gN=+o0BaHf6?%$D~0-#Cy>t3 zqF|RY6nKE|wRN01j>P+~180sQWEgH+2Zb8os;YTdv2hq>C&B&(6zUN0gcQ2#LX!7}SNK}yTA3{rVkx@wqnwxM1K_da~SwOezhMUe~$Ir zzJ0s@KmOOhTG-GM{dzKEuCW0TicqCIYhc+Lx&Y~b3X`O&F=5OYy!7m|7(R3ed_K{C z$S-?dlYUlZ!?Mxd6~lqUCvfn{3Dh?=fkn?eqC>A~9a&-!nHO0`aU_C8^XB09|F4(v z=-3em2eh1;3zrl{JuCC+6?DA*BdDL8Mkw9|jdbkX*Eb8+pA$fmqD}YU;fVa!@4`1{ zzB`>FM@WHTz-nzl^tD$Y?fC%y&SoZ(JP07k_|ux3iUNz2a)yiq%FAK4wLq({fj=38 zY*HPS(ozyjo*5%XL0z%}ktM4k4;cx`QTT>a>t!>cn*28GI1DS-qbsY+gt>PihBBiVoKu(;700CsR8$r4dXb}mA zhFW)ZL6c-?1%;48A-BdTwrG}F={X5r{eX&LIBA58Gq!uks`A5z{ z%aKn-dcd|NWKud}-IQugQX9Sd!8{4T9^d8awK^KQ(i&2R28&)_I)5L@3eHT(5>l!U zpZHW9@X5H~Q_!W7=zz#li0H9zfTYyBs;DT6M6iC%S}a+#2&JVt<}Z6gE5?KZaU*o#Y-uX6NALx!_8i!4BLAz{E87d zVBCnI_}$vYPcv+&2`97)m|lmAT(@y75`2rXF+-<*ZeMvMZ&A)cfm zQjNLVB}dq_?o_jDs731J5oFFBgWb{se|ZH0BS*rr4VWYppHA_bO7S@C?k;4?%HdzL z8D$%vfl^qOx9J?%(N5?)w?f~w6{x?>Q5Pw;SR~l4I8ZDHvSmZDEYa%X=p3aAJ4$s= z(Kf>=Kz{%xr&wQb0Wvo***0}#ni|l4`Xu~`6pDtAhBj(6P+SCw>Wwt6%T;V*w}@(@ z1oWu{td?e&pMHYO?hhedJ;(Z}VtiP3xD;%~$L%4YTI7pggYdjiU-}q+Gb4r>Ge8RUD9>TZE*fVv#2(KAr0AOGb5XAVJ-!}YYpS>m_J*er zUcZ^aiGj&YH}U9OvJ9=Q=-%-G(!00uBoARk-PE!xSwMv0R44*_*eLkt&PRB`BKSv- zWfmtzXvuS@(DlZT5W0CCzD$DWYKmSxhna|}vVri;nv3wlDi|R@!~g&w07*naRH&oI zKrShT4R z1$Dy~lx=zjNLpr{DJM<+vhWGtj1!=MzGLDG1Zh)C4wN!VQ- zFzV}(`Q!qO3#XypzK)P&a6QqRugMMbEcvIv41^FHJPH;6{yXqZeoQzU9)Zjq0xrB8 zqJ?H))LlpH$3KL0a zx0HlWq=Sg-K3F!bLC<$dIEv)f38yhFOStXRaLgy;ga)+ueY}_G4*EKTTPU>fsBBSO zP>5A4R$$5E#TYoCoPWj)b~h{JsqHWsM)x$+ERCedp!Q zWa?Q5(j-VA=Bk&U^Lh-jp01eGp<&d>5!kqD6&B5!!zv+muj$2{B5~g_N{{NMi5qoy z@Y+w_#HUxUv8dOdDoen8P zYBZwe#bgJ1#dQ-_(>=rv?neB`UO1%5no4nmW07=NFbJo#9Dym1p7iUw;kZy6Xs;6p31V|I`#t`lE?}4~ap;5Slavfnmc1Sw{A;)SeZO zBGYmQ`mGy~>gwQ6#CR|?&n{y{On34ECEBQU!%flAb0mT8_^^>s*Y^dGHf-wO+r1UW z?)Rb8+<T99jz6GtV34u&EkDtob#a&%g?{Xv= zwx+=<9RO>|aujZP5%R#nJw||K6@*Ayue}B713RI=`zCxfHP9>~=JZv)>zQKBMtu)} zA$BB4r#O*BM@J_s>^%6OZ|iHx%5!{EoO0j0x%cMXIQEUP4UUZsSjJSzLLekSAc_!0fCTEjoZfa@^?hT^ zIoDo$pM50Z#Cf@JHs3+gKD(?n*IeTt21Ul-Hdf$~7&Rf0k{5jvf_uhNAXqrYT zfWgOaumXb-35}zw?zjYd3EBdRNw2>;uhIUMON!jDjkCQByO}RNsIF^UuMp zH{5_U&CsJ8t_(Zk07-xE?ag52)2p!Q&CPtnQxw5(lJZnc9^k7+{ay0oGz|&M!kCf6 zarI>v;TvDQ3r#gu%vu!@nrQeBb2$_!B3kt{+~-%JKHJMFpop~@t7uf3V|SvZIvGIH zdmY0>=g4uWyXkIJExHu?kY-675mb3TH>$x=TSIpTyaRg??B0!lWZ0+`pt=Uy$T2V` zOoB0D1W;ECJ(+?YpQ^!8vIoDT1BET`pz!!3(06Wy?c^AMRGi=w$Wik*r77ijBQe2( z90?z~=W^Pa90*Q5#_CLhz#&rOd?jK4=^6%lM~{bb`L$@e<|Y{Rvdw|a8gw@tej$9aXYFnxvI1e((~XP*n_U8 z9)tDDI;7i=BBXvr-Q=k%Bz~^z2`0v<-b4}!rwjxA2=NNx0Pr57RC(NKB4E;W42~+_tdU*0J6Qu_v8E zfdtL_l^{iBFb%2EEBP7!3%Nl@G-1^c_W@( zwT7=1WiNycQD-P8e+bzC&On&D?@bv!e8;WVUir`8{K`GgBAq@uNY*(8Lto(~g8+F7 z>$ZFM?z)A`Zo96dFMqES;EVvoT#YehglbO7TBhv;W=)-rt1es0DOQdSDj0+~K$3b3 z^+7%OuRp`iJ^PSX(WAJ7qPt!(W<><4v2sUaeH|8@cNV_<#appp?ldH%l@N+30(3~c zI{Wf^WS@K-)ikKqCnKdArRhtGCI3$ikY$l^rDY`&My|F2xNr$lSFV6PV>T4RH=a0oVlw$T>)_xC1qdua-(W zVjEJgrE_Q>x}RAIgN4`+6}v5k&K##h6~Tl5jLPT21t_)rrJfyuDzSrewe@i3UxbDm z?}R;OJak*A#zdI`rvU%RLG(Pa62S{=km#TuSIQL>>u;rd<)^C6Os4k@qYF1CrmwN6_mthK^mfftQmyHd#8l6KR=dE#Cfd5de8L z`27h($D|44aqaSDIBVWq5k)HP*vJu)pierv)E=D8W9vuT@$*Ml;^5Jvlm`(_mh3dE zaVEujB!gt=hjmqnt_#kX`s+&-%L7dxNu3)dZ;G_Q#O5Zz8aAXE7hP}xivrZ8B~gY+4&_mTNU;)azb})) z^Xp#3nipR}TW2@PV9Fbz7%9>-3Lu5pl#Wy)iCHtI;->4az%475Vnkg^5*nz*LZ;<< zdXV4zCbG}`3i>;5qAE|#+5H)V$|(Le0FsW~wQc0aO@+PWYNQq|fkCqcb(-^71ZckR zrLj`P5PE@H4pFC51|oJPxP8S((Ax#~!}pL~w-(yFTVQs!Ko z$V!d^C86{q+W6yFt?1N9@1OhPga!2t3q8Zf086hy<8`+{Z)%PrFYei7fLsmtxhJ9T z*?|O0&Ji3{7Gn_odjg`V=1J*L{*xj|Tat8E+>Y8ym&piH0i@3@BHgPWhrVGAQb!L$ z4@93Ow>C&JjdF=ZbSTGZ$sWIQfD}nUVVud?p$N8j^f*-Aat~_Gxe!KOJx6E4){ARF z=UdqPI=UbFA*v7UhvhgjP9uOEn5C?)>WNdV^8Vm83YnzS-QCNrAL>Z^-`rHGQ~Qk$ z(L&ZuawJJ3v5HY7-KnMb2R-9y8rm!qTazZ%+rY=kG#rhhQMDJuy~;KD*hB53A$9c} zMP7W-LUwA&0TThC`mQ3-vcu&CIMULJbuVqiQ_rjlea+yCdIZ_x&GO5{HKgd=GD3IC z=%Kq-EWPOAZ~f`lewj!l_6$ampC0T6Bghl1Sr~@;OE0}t`-QK5M=n!0X>4muS=H-|-a{|&_EEB_zxms1o!QJ@@vTIkv zTmL-Lt;AX-U$p%47jNq5cQN29o^zQ{ciftluVnbXG4QJ?@G8qFdb%TRSCI^*>Wy3#!<0Pf>_jO@RWW2dsuThs zRfz;npFInglWmwii(6*|qqY3IR zU7~D6&{&i1TR3m}x@#_3@X($2+_^#1G#X4Z`1lknaI&5EDL(46^-|h)|NNcr*n9Wx zo&2MfYws^WU+n7Es8G|2-Po~PNlZf)lRgfA{4 zgs$EUUf;Y0KYip;^yRWLrKeO?N+Zaq1_=XIb`odJnT6YLyb8;fEJRanipf9=iPMLDV8$~i@M<-c-WQvFuFCtBiQ>xTn;q2dw{QGai-MkUzjt`K?=3tT-xyndM zzd<TsvDF^ZO%pO(yMk@RSqGiH^568CPPnnL?vKvve_$p|L zG{BO;ltOjk9zTMfwW}B)6NmQlOixM&M@|K$v1L|6ov|W|l@szHkhJlft>cqa z0$B<8EX~NNYZZ+a-%e4ar2)g6n|RdS(#4mcDn&iY{VFsiM@@D4*3ND`yLLmkcHPS? zWKLbcO6pE>6l4f1HaY!2VQAj8QB6A+oO#+$|K=~h`AB19WV{98oA-_5vdH!sGDH4~qDWqOL6Zup%+=)}6&zz00DlJA^ zQ7<78jkPGVn3cJ(_3%A4D?pO$+|$aj+L&jMTXc zq1DtQq;?g)FoS@-ryK5v?;`uuFQC2l5>lQ>tri`T3U|@J2_S`I6VUw5 zT%K!@BxGLtPkaCm)H_r>SUefIDE{P%w_cI>3hnx;9Q2?PBfbP|IA zIlw}{{r20|4}S8CvA=wJ)t56tYK0GdWT0uukaK_i0g@sb8dfy4u?bgSaTykze=h24 zss%wNW_j5B##WtdU?!WxdmnDY0}uWfJ=rWrl>I7FF@O}K^)w{y1m>PL17Eo9S}a?- z5RJ7|>l7(DqI?h&(?5Iw*(ZJh@5QySj~#|h8k_ufp`vtW!E#)>c0wh{8A*&;bf8FbAn0J&cH9qsV;?}PjPyZjRz+Q$>=6CRN? z2tee_%Sd94oCnF;9q`QKQx@XrDWXkv{WvWu0Y>yJ(l2Rhz0jS_8V0hu0hgGuTrL&F z6zYj1#UiR&2_+Q~u<|5}2tC9xDw#sM7Ia;e$<;KUhUM~md{P4%HH!N=(bx>oL=HPG zoS43Dd%8G+6ew8yF3~Vjx}OEBIle&TX^_A>c$Q+mstWGR(^0+r7NpO= zi2H9zbUktcX?n>1J;<+L1Lv8?QQLN;IF(F(Yy~%@;uSgd2vXH6bhvJS_VzX&i$!Ty zap9yB(k~+-RD7rxGUpOVT5$X%NA&S^k(y5uI7Jjqgq;sl39L4Ook<&gh9GmX&M#~I zmfc?xBuVyh{FqTZRC(zoi&#jWdZ3w2Tq5*XToT%Az1dv2@`-2h%BHu`+1;y=lO$am z<=vEAHQKQa)m4QBXP@@Yy*FR^(`8p){)DD!t^YyT@|pOWL4X|KGCuIY1L@bcY@4@o z&HBG^Lu)QHqb|@wQ|RfJKXi@cva0L^W=@@i70a%`tQpf}@m(0@$o7>1r0e@Qbo4mZ zt$!KMt$PtJrLfrAmOV-UQbZd=8tZZU4a;%cb(dqtlrcz{;`u0g?CnAB)t8Wa{1I3m zZ$*-Tg)%b|bShUp#P|MI08$GOPz1@TJ^?;7uhF$qC{#B>8$TZDd1t|xI0gFf;n1tA zS@%?k7D%-nsx!77gTHqtavyF*e%B{3+K#i1tjW@H5^yvh?82iG=2w{5SVYAnVoK)9vWN=QSJJVV2s9lzL+9F7 zNJe)^GmM&A=vGljmUK@&67lY6f!^H(yRR3Po9E%mVts{S;+7Gr?MWL&Y*kK>QF@XM zm>A8(z@*cAgkCF+zz$nv4QM5K`J!N5-U9+zS+s)Yvd)-187r>1oJV3A1dyDfE!7q(H&5+d z-FWzsmEo56x1qZ?3y&SISo%RJgNQR`=X^+Q+F5Ys^tb=#U;p9v#*d#uQ6!B&8GM|= z3Jd~dg+-#)jz9kPKTiH+-~Qjt`Q}Xk8lh<>4Hs10F|qx`kR2n?U|Ke&PML(;ZoUcA zCQXE?LK$fc#gO7sznKOQw087h;~Sgt*yAhV(8Tzd0Dw9)))HkSPv1u+Py-FsDcp43 zRk-~|sy$9XIvPq#7L74!K`EjO1RDY@_6#I%*U;$)=+$*(H63}16k+mbxCDR^ zfkvD>t%yjZ7F`cftF3gKor)7rBHG1>LPdb|=_HqJ={_v@44%mlNQMDOJg!;?8sMWr z2kJ~6b*6!O+eBl+Mq|Q4y``a67vM?LK@v0^ng?VHad#%g(1Z)QcSX)5Kwz41Moj>y zW_;Pz&_;}aX4ud*7TXiG$MzO@udIW=`d2V^ZHM6&5XALaPp~t@-7(O5#Q?1$K*m3q zqR0^4U0p0>u4<9uQdA({$gd0o9gb_T{9G;|g`x7E%;I%a5x;NfIAGg&o+Rj!7LJ=b zJoU1umM+ppB9kFilMD?bhBRUE1sCwVNLo7qkTG1XuvP`f!R9URhEK14o)xzon*7oq zAmvRe0J1t^2eYS)*?rfwmpt;N`|kT5fcC*C@)Xcb(=yZLga zp%N8m#-LnNDWt97n<7;LD_65n&`jiDqBqph6=-PlLmbLDIGXctoFYU&L>Dylh6cZm zz>{2TM+-R$baj!G6M>KzQcJ`dp5(yJdwfTfgP~GEieJ%zTM#PWR>e&x`YkEtOBa;R zkemcc+X>1QwGvQFXLIBkf`%*6Pl5(^Q&g$>sMkCUH3N)D8W?HY7;0IlGc;7|0jdaK z!w{(;098~Cj=sb>1~fLTsTtnPGhm!C55cezJgvk^SMy{Po}99OC%hMb4QwuXR=PWlSB{_ zqqP(i%M+l~7ujW5csF6=xuk|2wuXYtQt$}4ZsE?$g*_`!_ZuI!|fB^-?3-e(XRZhA&k?2;+-M^lGly?M^bH;X<_2n zvAF$~n=ob4L?jZHU|E)Zc3feDb~34Ckfhu%pI(KdEyqRrPopGg>1APuUL;I7m77l5 zSaiYJ_`~152WQQmiYlAvK@u8#mqn-Z8`q=jCl4Tf^dOQR$EBs+3yeHv9`b(>K&rK? z6tPC60|n)(ZWa^#;lt#JO}2GQ)-Kh5h#*4@!-5WELJh}q9u8zY>@S2k>;Y{s(4krA zazpe5266<3VF-s>1SoptdYYVJ$c{-o5v?2?5pr;()h`h2e@peNT9;)KPVH6|wvWD( zQ^g#V(7;|HVjv8+u#Q5QUeQW~Ul# zVy|ssbt1%;gn@3uWD-vtAerM^vR6VRYy%U=jlp%xmgAhcb4egp_UelFR=z)gzDy45 zUV1HD_tI;uyydaLx%|RXfD}m;XsAmka;Hxov;AB5-~I5C%PxBuK<8i-dGb4N5FpFe z=zHJ$UiFVxu0C(){=@h7dfEk{W(mDwfsX+iqQ#$6Kbrx>B@dh+C)JM(i<+oE2 zAVq7(@zyr1+wcmWdF};HuX;Siz5+l>!iWG!9YgAC@Rcv!iJO*Pit!_wVUv0Z2ai6& zdCggsW{p?J#{ z9UzuDlyn^WJ5L{>R4r+Dh5_u*Lka{P2;+B*iIJ7Y#(foMs=yx=`Tvo$6TH%`FD*VsnXyh)0<(9);uZr5L8rX zQHld39h2u7=q=djbE?%$jv~XfEM3fLb;IOwSQ`?+s|gbad8qQq0g~#DO-&8B@Z588 z$4xhZ*vV=~sa;hLlJtE<*7#q%t24H?>a zG)}6yp$;pqz6uM^KOa?9si;A@QUobYKeG7(KKN)mo?Ev8Ti*W=nqk5tVeAS_LlvkH zK&CAl(-~QzvVg4D@$uks9^JM;r)z;C1>|3v*?fc(DQ)>$nE=jD3+Dpmf-w2TX zn!G8C>$Z`#Qo2?=mr$m zru?~+r&z^Fl6<3+cX$+5CPQgfsaR8XeRu`cGBQ({$T~K<^9gt%^+ifScO_0yW>rE% zM~`V>t7T%HZD4D{L{^TOQ})77W z6F&dqD_H-^t2o-)#sk}VohW@!TvslE)2Y!|=;qo~cHz9KTOa$$5C00lt3<{gj3Q4A z5rYwADM0F%-EiB~?Yj=%e!R2q9v^zMAL>+yh#s;6CF>bF(g_<=Cyc{Ax8H`5BS*ld z!M7?0SbihQjY}r1v!@U1U)qSZ>o%aJt&;&#v0meK&bXQ2=&`y6S1wtEKmPg`F=6yj z79|&~P@2|}fwOxDx}W|fywy*l)-7;!P$@MeQ0O;Hu_}=H0L4H$zf|5w*^5g(WI;v| z=|U0Ni0>e-hyXWAon`_9oxXvVK*wQU$G*IW-8mn79Un*h03DJ<gX`lQh?oZ zs;5+$IHw_>cks@8TSMY6Y~B6|Tsif$j0hOU#%YDMsf0Us`q=%CJ@7yOap=$yzW~sq z(bVR_$ABv^2#~R*p`pk(+;jiAM?1Ri%XnDshgx-@P$c4E2%aQ2Tj&NF>T7Y~x$|+; zbt{mtiP0w;@GI1r)Zka5{vU5`$EsCpIK`SLL{uacInJuT=?GwHI>rqhif?@VOIUuz zLJX;|f~ir@n;1jxcebJL%}r=~@cU>yu#;Jh!eCaQ%KxVVNELKR2{Izs=sKrOGrEaR z7-;cBt|RWuY4|wrV|U(1YY;N2#??$twTilrSWBL4b$drcJ{C`iH;5 zvg`0oM~osfXh zM2}|TNT_3n7h-GH!S>!f_UAS9YANJ24Fw})l^Wu27E^c1Ac;P--z3rbTe;K!PX@@S zmse=ZhiZHDZb#S=8Nle-V_jZajpzORXjgRH` zso+vY|Li*T8%K5Wt3^>NMOzd>Qks>E5wZScu?rPjTKZSS4Gwf3fz_Q&!U<@WYyU`= z-b=fWnp{XUpxZL>j-}y6+rS5j1gj~X2q4+b)^uvaz^rML@ue@^j^?I%7%^ZSsP&4@ ztGBl=e09@XSpC9!>^pKyBL;lgLoT1#fW$$oOBvY<=T3X?zy0lB{MTudCcQd12J6Io zXb>Rf`cUuVx4!-D(>^)Udvi}NxX#z~@x)(X^q{~Wd^WJO$Z@&E=URbvtpU^}#Ge~#pq*LjQ*iI$V3+kZrg_0t2S+r(=colbmCE3@L45C^f|I{0?F1%)@D(%P4tfbTS1aYSVB_n-|+a) z3Xm+;dx9vME-KZ<8AU`}iFnYSvY-yspGV|1kS9} zFvA8$h8`;cG0BHMl1W9yhXSw4I^!pA0qKVjB-Y@0=Z zk@svV|JYAjg8`Bp2O4IaGc@eAEWDUB@rrGtn;5@QCW(0D@${+4L($n2$!>IW1HS(I zU&8pYqhQfg6!{pqH<`wJx%gz)9;|tBefY}jn>Cj+Q87^F!z~t9DfN}KE%%IxqmKOR zKmYwdj2bcGSJlfGh%J@^`-eCs!ZucJI#m#<`)U)d$R8jh0CMMcmM~ zW?*PjBNm=_4z63V9La>uJ$WZ;wx`>h`j}eUy0L1_^VqoQ4Yc?4^w-BMX)O>(kTz}1 z7(WhQ``tTn{j!UZBGw@Ng6?-x%{jaey)Udn@5)Ee)ZWHMi|%R$$4brWHsgPCvKFW+sL)PyoY9#Emokcq11yF=m{j|VfI+cw)e%&(R1vrjWX8nvz8|2kFUzwcU8jFW zv3~@~8w_5MKu?bJS*a&djI)kItNK8P&kM2t&`~`8sP{&pNddUH^F%bquv`q*Qp|2?F=L+*DE(od22r0JcFk%xo zC^M#XOj#CC87BHW0i=}vqFfiRjraG1dVnn-27^1tk7jM1u9-dhBTzKHfagC)ai;oi1LZ4^q zT3BC|%q=;0)}~vpzwUoreZ`VDG)?On#K+1jFbI$UR<2xWtbJ+igjKJ+|Ao$8_Xa;O z#)i=BfE~POkMUZOxg=k(HdTdrr_I9cw_K0mBZe{q^<)64`2kNF*uHZ&9)I##yuWQb zr)EwBknCYXLsM-nmR@iU{^4)`6wOW5Vk!mQIKB(NQzlhwEkE3em$4HTpjpe8! zu6KM7lmX<)j-Ah4amG~?69@6K{lx}f7o1cw4#X^N(=_b$ft>~5<9vV}g%JB$$wos4 z7V;XUPX%0vl~#X`tx!2Y4v-=&0)>JBk2gG{3{ppfvl1WcN^Ky_x) z(M%<5By0<|X~DK_{;_NemSw@TEF=;Mq>>3{HQT1aN=KGq!ZHk)mca#~cy!B*OCnl% zK3w19NT=X_Z5Wpd!K~O)*KrL0#x#I6{mwfvHA_ zX=wxFZ5^Ww1C69R%ajxGLrhq{6JtY0iVn)D0i^4C%x3NG?Cy6al>m|*rqD#ev(c4J z!1YBPvj3yFE`-(8-m%THus&(w?S#SYAHr=A8IaP4SX)wWOLZ1>U>04$idyQ4ZW+MhWq?;sPAlNTK@kp0I4Ppaf=1uP`{#Xpfl8Q#0B2Z6tLCR zvCGqO#M96bihf3qwLIn7mUzH1fRrK%{ZgC1DL~5Tn))C)^=arJfpF?;wQUoLgpFh> ziQ4LF)Yev^vA!M+4RxritK}isHB~82tDB|?+qRIfY?zkG|29kmmSr+nTJ(1z_r)w^ z7EV|DN{j~)KNNwH+KcZqNK)O*a~z&VL14*01cU^LBqiuLDC7$$WV8H}&*jjY&7!-v z2i<)cbY}AC&J@s{%_Hl&$oruXRS(Ho5mP6WZfsPiitK+eiC!*y*zYDP0Z1ABRl3vY z6uEB9$w-(|1GYL0&=|THZHJg_1ej^+n31+HDxsrZ3sFVNKP36i-e552Q4C=QL|aM<)Wm6gLJ0NZOl$#Q>T260&!;{N&=!o7nRQO_K!!)+KbbCrKt=)EX-T zB&l(QuyhS0hc)Bw+it;W)2FgpmhfSvBizpcm05^@MtgPPwKunfKU?`LWF41d)f17_ zOdY|r(ak-7`G>#r;GzZR|76&(VLJxrL=FPvfB^aS+i$0@yZd*pZ0`&1c0&DpKh$Y3 zvMgtnMv%1CQ&s{qCr`x{OD+x1I`eeUlp%GGo)92Ipt~o7buYbwbuYh)gGY}EPGH&n zt>n!_N)D(>CUEu{Gx61XZ^u=aTmT9{7`lT1L0=DYZ@h-=(~m=c`%Tn11raI92vTIj z%0};~?~|;zQ;8lU@R!D2CLZOQ7P*Gx^Ha}aAJN_e4LkDzJ}h|H;nLrI91cu$=_ae$ zaED!_TPf#3^dFa^3RE$wVeC>40FdRiIBr#tr9-yqq*+QMqpGVgq_GLZh7HB=VMAE- zp|&cCbUKZysx)c{46DqdyD$JPH|-ae?Lr2x-`_TL3(VK{NDxR)zs7)c78!Sp(05 z@3`;?Fbf6bT?c*H40FuB_6dmEtV&1tiLGtzPy=68FcXi6fei2H(LLgqV^xFxdvC zSsJD!bPO{|h~0-pYp80I(M_Ww+!KH#Ic!0IY$k_}&Mvrx(m~1t0VI*W~e!)wtz`>oEV!x%_u= z6@+S1xeuU({Aqt>GkLuC;m6@mA6ud2p* zXPu4fuUQ@r8`?+`Z!wIC177LPLpqPgj<@59XIA5lE$^VCr$_V>4m|Oq~$a; zR41`y!P)rcH@=GL6UT8B!T?EzvgJ5>*RFxH>Io$G?LvYKzhWLn1c$i(Pw~>K@2v=s z6?TTQNrJJeCS$6mev*Bo=@==w6 zHxA>*j=}KeM%1Ki*4H)2^C3kPdA{rvkYVSqSJ9u(X>O2|S-}DFIRv>Zf;{~Y=+Tb@ z&CSzfY-sr`!dxE$5}D5C;bn6Oa|J*?A9@6gK7Sr)ey8uU;J1h{#RL;!Ze^6m1R{}8 zD@Ge)pf9z}&^5_~I=V@IFX!S|#$nmL)_|n=0+!>WsU;-jo*^Auo>U^Hl~DShqD(f^ zWsXQRbwch{k&=`?OoeQ$Qj8V0Uc^)CW$e6AI^Gi?SPc)&VSxd1PTI!Il#X$FfKjG~ zG%;lZO4W)UU*4wNTv@uui-}(09FkZ$MciH8eaQ4?rH5Jcxy0v0rB(iPB8G)NiI*qQ z>)0$F5TC9ReMsD2BMo3($A=7%CO%40yN506&HdIz9HnsHs1BLLRhKWt;tLmI1hL}f zwdJ?*UM@Pi!Xk-n=oCEcJ#Z*|cFkIB*z{&J!cFG1N_(wjxu7ax_;V+Y*mlpY*ZuGd zcir(cfJ1|9*8Z^fxd%w=7 zy68eIzxqm8Hc{P`(Tt~9Wll)0IsMD^0_@v=1dptI0v~+*F>(||h!8}Ag!q$ge!*}v z*s~l~UxnpM7vL}d?CWT3Xb_Ur^frnfcJDyn6OY4xaSf`v+htRCnK1MKS9w5yESddS zdL9gpvd%=U7Mx1ebo6Kjj=|vc>E<2>n|nR%2u!roKx8>1FVY5O0*mzgmEjeX&5949 zAu1TT;+m8W_>J6aYDgzz6OdP~qq?dZRp~UUt5OVxqel+K^y!l^eflI!oH!06hc=msDcj-tSv1iRiIgfzLLy9ZupC!Ef9c%2>ad%6*3 zdVp*e8byft9CY7>PNThB_k)`BaMn>H>OiUg(4wqeWF)mzq0ZfvHlFUYd zscJ)(0t*?cg5%?(?K|<bebot%$zj?r_Y{=8B-=;+{j_5ud8Mtq7TnbmrY!Dp%oeiE>I}25CbUM z>*|8vdK}L2BXEu!f_LmNyyHiq^>o6>WT6)d(0vaiG{&tq6d93tgiel>Ks(|3$gxeb zX`WSj7sk-mJ zo332F{PIOVn03Z{Vzbh$@4-iG1x|LYKl6*VckkZhqN}c7e!S1W!|`!mD25}8b&&u` z(TK!92JNHr>(zMNma!q@3vf zQOF5=;S&O+FshDWq18y>-JFIs-8sD8m&38pLRL$_C1oILM-Y~&bPvVn}5%Fb*?MpNWO@=i%JhvoL1VFlLq#crqx(M`uM5 ztGv{lt`aRAJiIn=p%?N9+dJSK*pK|49q@MVf_LyB{I*sg(*rwjVCo@DuW?O{!B0uE z3G>RSI@$NBhc*v}(K&Pxzb}paOFCA zB#qrikhVe~=2}vlM?ZJ_HwH+_ z_VhglFcOI$K4KV7J8cTiIdcx?%$|j@V@9B+D$S&(v`y_6LW)n+YU1q&!srN06erGL zLFv=JKKL!i;O^atVA}`C?b(U2qZN8S2g~urj6-@|Nbx@%i@2f0sftKcxDb+cN$Vg1 zP1k6qf{cS@l*ObN`C=YbCGD7aPPT%`AiM-{Vrk%VKZDb9@;ilgfvi``sU@m5C1)f> z5uY&F8e=yDyHBIUXn3@SJ{LIJUBJO!7Y7Q|uA^ah2pmdK3eiHJX~Uz+1QAlAa+@+Q zae!2YI%cp-0KXVX%Ya*4!$7PX^|TX9yE+Il6fUM(KIT{JSXgUers*RQcub07r?pHR zoC4H*uE4BMYLB5*{D~e4KwWYc+$1uE1Y9EOoB&#RCutgbO#|C(15aAOw(1mTQ!34& zRM8`C9CF}@$$G=`WjJTf8K|vFof<$=f3@$UwX*{oUV9x+JpOE$_o%Z*0;F`tqI0G1 z3K1qOGdN??sGXNxblwAh_042jsKWpNAOJ~3K~z6_9Keymc8@`Tj8=f^j}Jch;MlKy z`=9+97EKm$R}rzkWor0leE9TUhbWVlrNEVZIt5qBJ{UVc3WfSa8lf%s=yV zOc*x`&CLyHtgl0DO*N9q1V{o<7Bt|HI5EzV&SxE9Tpq#MOwq1bYXQj0Ns!U0dJjwZ2{INB z683zEr}MGI1uVMr0HleP4rk6@+M7Gk#)dGI9^4G>dLF;MwRQ7 zCn*6|Qjdxhae3CtAt3>Rn$W`tc$jYaI4iB={JIoo7y(jYUeqTQlZDpR54oSTv!e%@ z3~_i>c|jbHEd3U5f8qMT4K?IE8(GIj!81w}f24a9yR}3Y2uyg6!%B^ zG=o%mq8#2U2CfjMAZf^^x>_u|dcl>Yy{=LXlGU0*Y9Y&WkM%!&_kpmh zub@%QSX4IR(YZKOP18dw)WS)_nvUPFY{|oa^A~^cGXNhCikA-pWV8aLzxwXG@6Pz^ z@BZvhdkg;J5L$DI+=UQUjb5KJP0XA;DO`T}WjN=odCXqrWM~XTBhNkdJ_V2jia&q! zmw5Z#57Cp!vf)tx$wob@#fbD6wGoUTIUKj&xD3Dh#al6?HZ3>11}&R~^VVzVee_{i zTi->MM-o~^M&pTnV|A01LzE==v$iIA!WQznjf0_q_p$|S$p&~oA7Zzwp#ugSU5u3? z`8Z{;{Of7nZQD+GSi?4x(egQj>N3#lQC_|B#ap|3X{i=!KmTQ z94%7MBF)uPQ&d#sRxE?bnjMYOq94j`dLBZW4|wb-+&w$s9NdHO=pkrFjslcE&1Ru{ zB4x)->T$hL*+D~*KY=926GBlUVwUn+@DpkUBv_YJ*di}Xl_rJZV$hQ94AJ(BM_Vf4 zAON=L*oe>L=hQJv=8D*p;z!gkO1XC`bd}&sX=eFZBES=&E;)KcHp>#>r4XQ} zprbVt;HU>2(+nK9EF9Hz9EOG#-9)z~Q?aB&%zl9Yg`#YOxYot=g*cC*NiWUJ#P_vu zgany~#%zt!1DtLJI4cq2%-RIT7y)V^>cKpAiv$!L54~Nz=5@p)+3`Ac-~%!`H)+)#=`A zm&||R?pv??>AZ6nygaC?GYF8vkc6SOYu7IO{y+TV#T!4||NB`lm>)u`kBNxMe3>-) zVTkHv0_UH3W_ZP=mtg9o37oFy#^(qiOI2|cSde!|8m!0LI`HG4Jc5rt-i=J27_5Sw zsbW+GkSxi`f&@CIO&EiFZe4-cRQq&CuT=bM@8Hv~{g&@U{4tXR~Kx7PRU*H-t)ivolOPU4u4T|Ve1jC})p5+bY zqVhWO@rtUa;>w7@&;p>v@M-z`h$K|156b7qPJsA~h{YQ#A#hX~kn&GRGQh~>0(9pC z(Qg@OXeD6?7&xR`IAoY;F?6&;L$_(dVMeng_^=vOg*8^IE&|&~MK=m|OLn$c19E1l zSF$1WFcvQ6r7fJ1)-fZcVXPUTj%4mhqR;V>?d?NHd#7A40g&Zc-Z%h~zG>dKka0-3 z{8Ru^)FF?U7G6vzu))^QmPoKTL-BjmO;FssR8k?yxrOJRjjJxbgzJ$$wQ`Zbgu2cH z0i@J7DD@f=U5PA;(j`N!ii3qs-oDdKoApsH& zAhJ@xJ(D_-i$c;g740rj_BCn+Az+osOJ1YW0)b%e%HGzfepw`;33yfvU+(@V9Rs*d zfNai1CLf^33DM;fD4IA19Y-|-M|2AZ4HL&mi&xW-(~T%KUrb1s1!nxuqSkJ?d|;{T zC7cM8WZOIsO$aeD5#scehIvU1GZH#R=mDxd4?$la+KwNWi$mZjS>Y8Bn64R>4hnt( zeU62^YjT}G4xp8?BXq1SmW9_+DXg_Z97!bPc(w@j#ks{YO$3lM((ar&r(?yHOEG=& zL)kC#6|$oLPYFBsW5x)x*8j4r zNfFfVM*VL(_6IuNb9B6w@$i0c9*3xJPA9Q1lLZZ^9w~wtxkdv5WHGjhzE_Ut66;CA z$p)%YNepiuf@zb+aT;~@Y11%c+GOrgtWGDRnj%l^U|T7Sb(D>cYH{LQIO-#?Bg2x- z!9RWs4lz)7Zil~n7sA7bVE1&va&uDoMzAl*=6N(Zglr`Pn}I+l-P9zIOd&|6;is$M zR#zjesfAus3nN_vGhGEOQ4PJS8hUj#v}6LXOoYU4rm;m5ASn$jLozms0@x)fhoVO& zAGy#-B!E)Po&%qLTnB!EqF?$E?Ir=SYaJm*5au$R5=LJi!oFS>As{gVt5ASJqV=vX z0F*Ke0i_ygT(@5oU5~fl$d;3c)T3HmBmqe+dhz#?%_Fy$?*(w35c!;sOx|Z=Pmc%m zkX)OVz!A;BUPHqHL&sr?Dh(ob89Z2+g$c@tZi-x`m|lX=CLZOxnN~9*LrF!WWawfT zJWR7S%t;wIgMiWq(B$OMd*rZK3w8p8@V9t~ens_F{J9Z8+Q_+;BFNG>gW_TW$PUZK zJLwdjF+%K1+HhD>G5+WekfifFXXbR=u>4BQo-u_b2Tv6sMJt&be!O!p9(d?s96Hv@ zWdLGIlx0F9fHXA(6NWctuU@=h)&Kar|MEQmq^ffg`qJkIGCsEvB-J1H?maU0{y+cA z|0k~}7Y3Ty6e@y_u)b`C)l>%3*qktS3~sz;8O}aqHZ#tIxJCa6GQNGd{ul(v7aY8| zbsK*E%U|Kh@m9F(rOSuxgN#zFGO1LbPU6yq=i2`r!je=5n0E6xc+L4H+l{zGlKRO?U|lVLC|% zhoGhwVY(WL+D2FnLtr)zfnMK;u(1)StA|!q11*u{$dDpLBBZb}in=yMO_@dIx%W`@ z5wj?R-BqW@$wxm5EZ@FbuUk)^|GJrp5Rf2P;j4yU^lZg)38!UcVO z)YriMvXnxmA1&Jlt&oRKnw^x+C3lAaR7to=(eYy0QXE&j%Bm8%{5*lViYPfPE4&QH z4Us9h=*zk&`}|=3%h@EjbOUG$9z+afT~>iYp_? ztYh)$tAQROXCi9&RCoL+ox~G*fRB?&mRCF(KqgEBv!+bM%`28+?(CUxeOCaaeB(eh zNaZ$=D&diqR($9CKg6!R2iOr;dP9+O5zPUh{TYO#nj4%IOBOxbUhE@LljK$q`EStzLTP-RCGV8OMveZ0DXZANlDRDFmJ~3M zSV54_!6%iUj&_8{kHI@~5QQTL;I_0N=~9e zTF6i(nUj3CNS=)v^`&kA9@pgoxm z?ynRnZPG%GG)HA^m6dxW0L9&lQot%D&Cn&Fdy4LpW-o`?eh!PPEldlt7~yc@@kwlcQ&gFv2!Yo$-n?9=+D%^(b?UHAOHMOyz~B6boFI&FM>Ai(g( zI(Nm=3t#>FZ+zwZjm^!gHBFORd;|IcpPOHNZUOR3U;0uymvb(9eEnO0>p-6xgnBBZ z9HPKRY1zdFrkkreU4@G;T!_mSFT~hU!$lfTK4cJCvT0O=#^xmm(9@g2`j=kA>KE3b zy{DUNl7jM0-%)x)D}Wr)T#s8;T!}B><1#Aid?63)8i3iS*nSc zxb&mxJk4TAQw^3bz7SVkb_wR5J_F574X~xq0yX}#T~^CF06_9OQaFjHzGZ59JFzhppPC4bL4OsO-<0M2@Gv+ zzY(COvm-%=#OFa`*+glKrf_hx2N1eI;Bh3zx~u%-A#^+h4y8&xc$6CDR3|w`)JG`= zvzeAp=|*a-BPqlbx$K9JSY<9;Tkwaod&D*2=EkODr(un z+hW5^AmHYqkpfeDH=Lu#;O*Om!p`j|?Ar~rx4A8`nvOQ9O@v|*jaH56Mcq-W2S+RObZ|A1`cQjIxQUq zouYC<>LKG#MF|$-<^kC!GF|=e00rcv0h9_nH2W^*p@2oEhZ%kjjb4^BG0b*lrY*(R zzHpg;6M%%6WV0)2;0fEnmQ)hCQvgUBjW%)A2wcDXN}PMv94Zw`fRw6N1J)n~K#~Yp zZ{7)i{roySzhMK89&eLeYt<0U&at>UGK*1V>HeGvBR;yW~{ zeQp8r#;<&(I(M}Fx)-*5{3ni&i6M|IQYuwGOaf$}qp7Y2E0!R+$JiyL1oLU(cuMuB0&PgMcU!=O)`3Ul&wB*%<_ z)!YoNt`4DNB+?849H|jeFQH+;H+6)j!BMP{ zNCC+t^i&nJWD;RjHMH6WSoK4YXlO*DrU7%AjQQM4JNh^REHkM1qGaA+CiPuy1$pMn2^-Kd}hY!W|%dWtA=gbAk&r$ulIDWgr?Wk^036NRG4c~hA zeLV5hGuXZVAZUm(Uv;@YlI#>+#Dt**Gei>;+df zbhRG+%CW3}pBHE&Lxh%e7ett)vJ$!uE6_2lu>p79dMoD5nT2GMMi|E^_9p>Innl;u z)r}{gT7wO*zkwc__7IuJSe->0E^dk^*{QLk@H=RnOkkBq4L z;0gd4he>Wcm#-m#by5H#(hb!X7tB8s6UK~0Q$sBhNgKM*e2X5Ux>;oEm4xCY|BzB* zUWlNh4TbGnk$dMYxI4D9F{g1-fng!2t%ddfvG*SEmYrp}__NwBr}r|w_mX5LnM@{a z(kX!`g5dRk1-VjGu6h-e>s68azX~EMiXwspq^O`s4G`q?NRk zu-{TGhKi_kdQ~SXMPE}_ETc6OBdEhM0vJIu8g$G$w~URH6t4->R%62W84+mUdzk{Z zQ!t$xn28#MwY4xB8elXv!)j@T+13HOr2~nUR@jYAKz%*nFj^)UE6rJwe}a4-el`b8 zPQV{LkNl|9<86cMnkj?oh zy1t4C$q)`K6k%f0WiuBCbOb3%w$eyr0pO6sG1wm12zmGI|_T!^-R*^~_l~m$dP( zDH~6v6C$>8$rLL!QY{PfJKFG5ue=vKwq1u5=Rz_wFyor0A4jjav;$cv`vFdzIU9cJ zGoQtgW2YFc3v|u^$S7-$go$uPSM$hyH(mG54}Rc}{}#Y=SL={3VSr?d$I9z&Z5tRK z{$F_``LjV_akh+BlaAa_#lqpHO2ERB1>Jb#e|bIDtywAT)%Zg(_XASRLJ}ay#wPIj zfB7=Lzx#P)3I&~^E4q_coYJg`PfArhKe|nwQQU<9PG;Z_})Yb2V4Wafr-3f!ISix^3EeYQ=- zYT`jRev6|Wgh*Hx+M1h$TyV?wt+;0MS}a*KAKe{o(#9ck0B2C!r^DoQLlf1!#2F!g zc_jo>Qz)M}iQMj8D4#rnU}Qkn#cXbcJ#P`5g^S^IFM!$J4y&mdc73BTOGAPIMY{Q3 zw%8O32(lRjBclk%Mi7h*!yg+#I6jJSY8+l}3Px@cPN@KcJ*#AqvbBP#QQe3yP4;B= z3P3<2a9948#H$dTO3b?f4oq&{D>Aptj{u}K- z-%bD|c*mqilH?lxi6|>nzTrCC0(`vYfI``+6au!Pr0am1dVuxTmKLO2+F^CH1MRIa zn_FPkHNZ^ODB$F|mGW>W$Ka2RA{gjLx#tw}$B&|XrU%aGFp|Y0Y}PHs-_dne5g1TX z1On*Hl!!<=9TC-U$TETN8q|PCp%|c$cTwh$=+Fk^)W9}THYp5BWghlYCWX**%r?-U za8MvAN|<9xvskIBD)|A`t`vJfXE}BXOw^O7*3qHRKv>42po9%Z5!V?m)`c!wOGPAD z&*eSkIIt1{G6_!)+v1VpkXN+>%6%q4UPvVH#k7s@r)*4F%Atwx`Dtw)1W41AQCF{i z*_DL1qfY?|%=ukN-8&L+2zNG#wzL2SE{1Mhz2t$|1g=^YC2G z$B7a!VQ?ZtG^|+iPWrkdNQ%EQGo4!HGs=g2l{)NbZNipoH)7j$o3Ul{I_YKXXm61e zk(OUoOFHwK=kUIxm*i|{Q5mUa#^Lq$AiHlb3MWpYIM@%koSCKOJ$TeZ!oY>5`a{HNOW=uj<8T7K*Cq`Pyq>@ zgQ)N{6sad+Sg?goZ74uAIe8%fWz`ZUkPLw|9VjD2+BQ(j=_QVV2HQj}_bN=(kW?0W zu=U=k-c?4W4tysGBb|m*TL&~YAZ%aK;6NQejEO-`cN z-;eTnst%n;c=j|3r;Y{3r9Ss%}i*boQ$jG8_?M5ai!+-jhFW~9jdoYnHB4CI< z4V1e3U-M#(VXa4Sk|NHL}b#-4g45N67NAo4~tCw62lF{Qs4?UE4@Ux#^ z_2qBx`afmcxebBA@!gt-FH2HU(P5pesip=yZ@Lk$yl*GEI@>GhvrFxg*#J3#&wTC+ zc=o_S za;}F=*%e?U7}BUKO{Ohf=#vAWY)tbCc`BVDacc-6gk;`SZe zL}OS1q%N9VAwW*%^WirieFTp^@f7+7MtRP21Ed-+fVR4H>9(!w_rK?Vy!lgWH*NWx zVHguH85F$4g}x*K@(=&;4;#Px zlHt7C09CJ`8f#Qvs{&-yx{$JMS(Bv;7UJ5?>u}c{H)H*}6=-j1L@MP}j;)R{qgU}V zyfCTRkvx*kqdYu>TyHP(J*QC|ydcM|>6(Z7B}?JVUjVbI5n%e17gQ_&nGAx-N%$i} z2nYKS4h*QjIgKMb0ke>YSysw4Ug)9BUQb4WK9J=QVHgGwM6JE_DqpF}_+_JerNc44hbkbci;x;Uqu$9Vbtuz5 z#Nz9bT9P8$Hg^!gLJ`3Lr2A+tCTLa~_P&`4VNCG~Nynty6>QrWu`Fav6GfANY6|OE2d-BHkWuud)|zV=qRDfyEO4>a@UhVg&{+(S zDu%H9*wmFu^NWh^LS&@kbZ3q8WpTM_m17lM6j#$h38)rmy5kTI5&mGvgV;h=i zZ^X-d5ddib`BEu-_W9@Wjc+}MqbJU?y(StpGt*#+mQnz>KuEtsGT~jnW?|1S{`Ag& zef=-|(nk!#ICm8wUxF-FD(JlKb+79_e4_V(V?%|vd#1Szp_!~OST%7&7d1eD>}qKV zf8hS52sV^c1km~wG0w2>$Cj|w<)ZJJD@hZawl z%$N?4Q8HE4cbMuk&`?{0#q+yy{pJn0eaCieyM8me+M8j=BE~r2R(FRhiUrBU_k+DDaJ6H!9dXGDN~+Hs@9%^-$oR;M}xMs9S2 zSX&Fl&{NEt&GL*cn+>4VHqntZ(P9Gac7QG$Xg5N%f}-C6QUnMCNN6WYAcNB=5=mhN zhmFm!+B=Zw>V~m!z5u6D-=x|hCMQrldlsdWClH=H3uAN;Rw0X^Kw=Z?$eu8arJk-U zff|zpJUy8h5+GahkoPFS&9p4*svM)HdoC@Y#2TfYzy&jbGi;|Y9rRcUjMxS;>~)QL zRz>eP`q3a$`R{lHseTtS;uRqo6INiL#`mzmD`P_#V3QkQSt&rX8zANT;>cFXcB-95 zZX+l0P}p4qi6EJwkqYk>0%Ww^O1>K& zKY0pY{MtA1{Jz6*>1k9uJ>u9W09ore!G^_cL$BVs>EYl0-S_^PVHgLl0^~~*Agz1u zzkk{BCJ4+b{kCRy0d-AP-1T1GjQ@#5(CmJ z%}~b6xA1g6z}JVfI2<|{GZWHFrusCMR9lSiI>-L6(qbZBsd9KNN%?lQw_x*zwYdBC zTX6f$H(=rX4k6}2)UHF+S3K#m3J==q+-d>rg-nd{s z>Ns7!qf6x5{6ZF(m_#r*gy2FSO1(XB&-cO{9)gpdgym5!r;IT0#XuE83mMO7@J@e5Ul+OGuGw<+-z>s2k`b0R_3g3i&JoWTfXw zYcHd$qJB-?#4jKlIRmlH5p9xa{bHWg#kjo$>?)Be*6*m#sY)EtN(>Ni8$*T$BgSBYW~F3TJy@obQJq?BaTeLL!rnL zv?DF1;)F0Q%Q>oAzJL*B#&&SdOyG!-#0kU1nS_Ngn;8=&h@sxAp6#m35pxEkhgAYK ze!m(wXX$&&zR+gR!z$0mrT|#&`IujJ(cpRll2w9`y01}Fh5)4H;7fH59!;1Sv6(Et zG(d7(TW4z{UU@eG@;IhV`VAO#@V>l_4O-}wvp!k4~=r*`c@(Pa^MI(t0Y zjXd9!WrWMSnAJ_#epAoM$YdSdQ z8F+ZSfG-YZa5~i_6FDjd`9%<8BGWCza#J<<*Cvx#xnv<;`@sFU=gwQOWN|lANi{Yz znr^QqiRe$qHEA!B#8(8)5Fv?2`2xyA!23Mg=Mh|n&JJ=H6L10Qf5e7#`RAt8!6Ubb0wSWGVhU8>7{<; znpDKfIw$XDk`rqJ4^2T43(XSN)g`c|CWXbdNpw0PnnM?LUI|H2+=+?dnQWU$!B3{) zQI2ok0yry{Be8rb%(hkpWe?>;M=-Q|H~ii+uqQ@fGu^F4;$=#S246*nRS^?gTS_GZ zg`9z6IY2qEU^z*YfbD80wAN7)S=;F{PVwl1>bvm7Yb~rspjnC zSuiqYMH0eHs`BiVlriOF#pU~ExZ zjx{O@UX#&i7#J-FIF-%gP_~Q{1ye{#LohLg5Nw7aX@Z8bO8yA-J+Fd=@+I`eNdy_? zNA=%vgZ5(#kbb2G8bwyRuBq#rT>rEI)C3-y{Sua1E;iTN*j%5+vV@H`{tm9R8BwCn z@Y!eQAara5NfTbmf!ELgud^Fiyc~_I*CDKFKzVosxjnm)-@h0B;2@HvG90%Ai<+a- zAX6P;Om!Xv7ChIKky^Qufqa>iQ(I;qs#&Z$N1*+)i2TWUJ?D}oiC)w}I z7&rn*^<*#_j`V$JKGJc3lo&iwO3F$|34~Mw1F8quxj%=~$Kk z`wuF{y@>JUGKuIGlI|(XIi3(7(kK~l5lYC+STEkfBxst z(%K|qF_%+)i5|2|0c4cUoyM@65kX$Nc9o=9AGrT+)T9zXxgg`3CjR{WaC^_9zv$xe zu{<7~DC0oc#3)l!R-`Byb$eYVlBie()u+Zt!m$jrG}K}Hw(Ibk`|ripYuBTTy^Ki` zaH?uM{AjhZSWVAXWa#E{A}HSOy2uZYV65ki0Azh#9nxJLsI6}hC!pMW7KLMn;r5;Y zhR?&89EF|BAi)V0fh&WW3x+2nKB@8t9jHCk5fEAr$rj%_{1mOL;dZ4KtVcR^QbDpqb86KAU z2T(kA6ou0#VCE)~@Lf21x#>WuC{9sRORNhQfowiNiM7rOlQcFLlr=%$M==aBX&IQb zk~r(6alkTh!~h0O6L~h3GGSDSBd0xq({}94Vu9KNY$~B#osU*G!0NJz>saJdN5Fwoh;6e}ah8)ej+3YDkV@Go}O@kv}$nQZtk z|MoR}`-!J8#R1_A2_q91I{@#zWdvxiOP059T6yrnzx?CBXlU)`Y)HBzFX^8vwVppQ zi*)GFp~Nq}krANnAU96651`X}*J*2gK| zz!aPQMc6tXvR&DEMxU?)ptZgpo7SzuowwbDTX$TKRm&Hnp{_=BLZb|$f>l6lE`gbmF=b1TfICIpSm@N4R2oL8>5 z2i~zmFh&O9c)GU79#&!Qs$p&(dl5NCOCm`b+NB0oi`T0C7wNC$kl{c%QI>;2JApG+ z0!K^}M@?YdPNGD@Ospz!b+4e5uzVuiS!O`40L|{mv67P9)#-j(2X~yZ`8i3ubDm4>QH;wW`xc5TO3a zRAO^|4PJi7?cpo#z5}&&X+x1qrpuy5HU5iTc$8v&@E`sOdk!8#u3W5;W-A_@HqVif zCO~dju>@~>Kds@il?1kouAckA}+v0?pc%2q3H3nkwm`0zg_Vh7|v> z=%O$@fc*HFXq8gU#?DW{8XG_`&(f>P8JNDE(Yi+ z`#9rqh_i_-NXAgCMMZq7jw&EPRx+d&l+zYMZlgM9NwY;6)XI|S)LkWljDciSJ+7o; zBXF&*w-|1{IB_23r5}!%)w+0KGe_PhT6;y_QCoR7Yq)xcV&@qFr1TC}XEO5RRf+r9 z>sqmfvU;rjGLmYsLM*fcEOiX5Oqy7ecCb8QqRaG9=QHXr%RQG$r$zDgB#=%cXljJl z)`_sG6+t2eKc7RnuNPkL8DMl6M!BfSJ37jhwj|#W;!ZXnqUf2@d&&tRGAER(d4U=( zz@^WHzM3^@S(q|xoHuNouq_<6ES#`Z?VdWXbSh^uwpEKr{3cY_SdA}HOjWKo*Pz=A zvB?W?y%%7eAD~TIK|&0gHojP6;UPywkm@6pLd(*W{U0rEdJ zoc-`m?(xSTPyPP;|9Z!sgU3Ex2+gIwVL9abRRV}8Rxp$$hyiEjMk!wk?~m zY{>$oQc2ZjP$9lu`~ub4D+8kAMfHU=GG!0$WCn%dVSr-aqa$!KlQ73e5cHo#c;O6; z(IJ?*9Bgsv1Gomnpj{~YIGJ;Cq8Q?&YvF9kL_f!IA(ZwD>dPt->)B#^(>ldx-J1Bd za6*a_*{<5H%lnOTm!_p>r*DEw1LUR9FLoLgD>(fEX6`lZ8t9ph(R*VWzxpLv-C38W z=b1`$9m@>NcwePCUKo|?#N-<|^@HNyp^s$Xqr(PPByFrpm{{qASeY`g*a^_;m5~al zSX0eZ2NvM6b)>!tX2*PhKuNj2$w{~)LnsgSBN!irMU@^y5wQ#=I9(HkJclwHD7efT zD7Gqpn39cLI#&e8mGeW#sbpBfBt2={*kc$XHo*F1oHLG>js>bN*I#o}m z>_Qz0L^`O`_tBLCBK21ZpDu(mdVO=%M=%`%oH z9CR2y>QF{9RB1@o{nf;hq)Z>N+vXu`Zj;xFnMo7}2N6*CVQLJPTNWq43LPa;R|=6U zhA6l|Sp*x%yf#F~mQI6|FZmrZvP;c3Ez$dMWrqQpJRd9k5LS7KQJSJl=vrRsu*3_SlHbb zzWKlYoPdX8TZWnyH+|VI7eUhaj*gDwlb`uKUO0FVc{aFL`Vwa*zUVDlqQ$wmyA!Yf z=~rOuwHxr{)6e1`|Me>vn3xh{9?31wUcI>hLwyI$28{;^Kl3}=aowhMcU4;(C+cy2V0)2@M$&_;&M`ntYaF~l;yi}kapcKGiDNFG;>PErsQ zr77c%{addVD45>T4s>+EOC&`sqQG9)$q9I46G*aM zgHfX&ir9Is7$EOb5s7O{89vs_xo!bWPC21d#dXx8@PL@WbE6zJtf$`Z5tlkFS{-K`MaUzH#-* zzkKg+d}8U!b)N(opr-n*pAD>KRPr z+=}s(y4f5?c2;j?DUeuiG(N#rISe{_}`9=WFjHI<9icM0=8wtaco$YRrw=hzqB@~AA~5E%kW$m6u0LD zn6l@hNMcs0jB=?2&-YMr^}i`Q=&OD}g0TFXtuuPm7VExj<%kA`=-~FsdFwOQR5dWn z@e_-NS(6h&jqWQ{aA~N%UXZ*}zyj09sx;e064;!wu*~q#0v9RxGF3zR6ipMJoq(6B zML>zWwl<)y4u!EXWR4t#GnIu?rhvEyuj~s*=8HhlvlP3PQ7OM!59>CiMjfKWi6K7w zC;59HWgo~{4$iSAX#mFz1E*~pqsg=Yr6}r5V=-&coVF4wQs;GwLnBgiiqYE^1X$#o z@X~3VbX{aDwi?Cb{JHxes}bbC4&rM>N& zR-O9L@BiB0FJH6aDnQPioBDr_VL#Fn`07`8*L>ike|G!seTV)w@1q+g&7PjUSN zK%^Z9OBZy9@A#!RV!?tgMhm)ZKRbfF)JfC$j*d;>lhk6}w_gBK3{K@RGfj^vhQhXO zI5u@EJ(OJzakYeiKx6993UlITpkYlZW{KEAUBbcgMGJA~tvBOUFTV%t*D#%$&~?Tr zjTeFS^z>Z(YOC2qrOhIr+mR$r*QGPJo>8rpm>re~6jm z@wHGmK`@z4qqZg`ttf4+&1i0FLR~{W>g(%JS5t%fhDJ0t)+6CKs7<9cFj^8>DloJK z@RAgp*T)x`yucHEQm!E1#~P^PIB+>RLdHaeD7hs8IsOzmA`KyOg#wDj0`j>$CMPG6 z&E=5EW<-c$Vsa8wQyFBYGRWolzM=pv_X|^NJQ7oo;>$4Fk7Wy#v!(!mSrSv^^Qu1t zm`jxr_)Z0o%3qNj2cv4$7p3x?@L`7@(!P&Q!^bMez~&(C^GeHMq+Z6R7thvCl(1-%QQ-!L#13pBqXb1 z2~lWzdR6VXxr71)An)FZomA3kYOKuujNcDEDte9xQd8>K;^etFd8!8wee+Q~{p<_G zG{J}f03ZNKL_t(2N(9NTb1-wW<`$vjh z{~-q_K>pcBKXm(Z`w#wY&I`LKxhR`uT7QztfDs^9ESMMm+FO1R-Q69qm|@jZ1}@om zKjTVhjK;<%@X6180lW6@N4A)+Qqv=+bk^1DI8`i8d>+Q-mZ_TN67Ssz(cV;#8@Fu2 zt6zQ(Zr^bOI$9eg%8AMg)wF8d2t?mAJBF+pQrbNqp-a8C33#VYptx^0N{9EtxNsJU z!W2x(zA=?5&HPE6D;d~7RmO9iOIZf`kit|*7Oo;%L}#FMNY#H!n}m4sbHuaJYjcJ- zv9+4H(*stU)Hg6Xv@8cTsT3OOYSGftgs$#x%%3+O?QLynYiSV>Y^<*rprgaWYf7b3 z@HsfyRE%eWr0aT>v?|kFOso2VhjQ7K_Y<@Pge_YQ{N;Ht8g*=xN+kivG#Q?3aiC-v z(}A9gB!$CeD=5~nM7$haEXN5@mdG=})YK$cdm0%T!N}++hK7bPJTi*0@o`LMvI4OA zLS7cu6l$tGbX;g`C&Qh;}xS?&1J>zi6@EsI*v_uGhVr(c;S9nae9=np*#qJr6y-z4+!g zAI0~cd=4d#by))e^V2iD9X@)^bv6FB4QtPQ@OOXtAJ%T%_;CP(R{`>J_Vy?2_q%uR zuKAt!{>9E`_8$CbHb9qhrJ@{vCA%t&xwMnOs)h6M>u>vSVMk|+!KgshqUO{zyy!~N z5D_3h^|{aExhn?9A7tUxLrWGPY4`*|4lKU^zT0unoi}6c%4KM-ual^>3O|<@b!GfkHNhK)<_L^cu5h+NnLDLC_u47xKvg$n`v51VG`6&0@uJ08v1}O@En0~7 zwpP^CCWWAtN~8psxB`ss9NSi89__FY>}qS$@TlygQ>O$-zDL-gZ=tDaQfG2kT= zD5q**QGkF`K!%27B$`!rWx|#h7&553z@f~ZDXk$SNXr~fsSB%UnD@Kxb}S?{q&vB>^|^!g}`XnR#&sSsyQb{FjUc5vv?7Hty9KI>AED3N9JO&P$zd#)Pq5Bq=j2DL!Cer4!(~ zl!Y5=(^%=)Xz&V18caX?DuqkHNTj8wQua={1b=K2?%1SE;UJ^6$jKn30C`500+MvZ zEVzLZN0-)~&_J2jDAJOOSOwEUff99wi6fSUJtlC{GB9dW)=;UgR#KEzpE_2tioh{) zU!rGdrqP%qf@B|LTO;njm*cLsqp3au$ZBL5?ValLQe`xUF?K4m4}JXuc<7-=@Yr{s zq+t2Q0n$L&R9h2lTete```-Pw&u+fPR+C5wK>pURyd`XDZIs??6+zN-zj9O~Ku%0$qz3s+1dv(<Xn2}MA zy&5hlQEwuFCEcC4@2=Z%_s$*IxNa3%o9f}%)znb+F}>1j(2{E;;pDP#`}$BiauEKJ zy)aH5hB?#^i}fzTku|-izPwD8gR=A*hKDxR((b3V0w$>K3wzi_Hqf_SW)us|iJ0#CIl{OC= zN-{|aFsxBA{V9Fn@m|TOwMM_r_Yf$VCRNd)svk?V$>Ryo`EsmKYH_MQC+%%C%8Ufr zzCaM>=lQ<~AVq~o4NsPIsE#11m8wWN$`~_^$nz$U@plAFiF6}GtJEMZ0d`5xnwHeI zi{&!1`8*~vQ<9eL9~i(u|FA@w7cTT;cyv^VLQzYRjQxsizrL5%=w9tbfsk3?8P^8p z##O+fgod~W6cvagy&FOg3n^!pv~W$z#?~~jDh)IQWh6pZG9>(=D1YEM;6NVMBEv!n zD3st9OOkHoM377|K*1wuTEb=}hzKi~X=4u9*0OUv8;bLb4lvWQmV;5#M2}_R0PB+` z&}W&*@jhwZf}BJ&rfeGiMId>xl&rq~8EeEf>uPJl{r7QT@{IzJYM)#VAk~*o1IWNf z|G*%=@y$o^=wsizbOdQ2Y)q$v>({UBegE&g^|RM*xt;)d;VMA>KoK>R+=tiIs-R z8B9k-bq|YqcmsWKj~{`1@Bo72M`8A#MIxV-W0fs3Qh}4@5QmBe4rF{B%DXt{8^{=r zOoS&;D1I)lLyb*R(FWIaMvX?SW-M~lR}j@pqex2DMAxcP$&@IMbab|1@xp~@>uATk zu5Prpv`AgCp`lKqJ=O~)y5dYf!Bqul1SJAplp>V~FPfW4ar7wS)#s(aiP2THZx z&j=W*>r|rg>b-(-cSzS=6*w!v;jz^336@m=q`_x9h+K=s z0mBL)!J?A54DsjfgMov|Gozn_)duwI%fQBGns(SY?)4`1Z$Hl<8lpEhw#3Rvp+XbQ_n z1fIN40k;F#B%PTEIQ1r9f}8h{%X`QcedNp3bG1>HwFp5zxJv7*=^MJht07xMH|x7F zkhg5~S_Tf8CJs_yz%((!NK}_x0%0R-!3Avxl#Qr(5&G4+BFO1v8QvQK$S8trsFzJM zQyEE~9R0|~TeBkD#4q#$U$OxTAfG^?m7kAC~D|G0JQ4Sx&Z z{8fPb@x{6y=*$HmKm4h?p5Al#<3$)Pl}=zabT$T%D#f~X$zr_g9dAQZOQV{M&W)*! z&!tXadTI?ApPa&{7(u?UN4)i@q&9b5ZT6AXNFee6BhOUNoeP25R1%Bkb>oIDoA9zb zci`3?ThY`&&odIxnhn6SD=2Y*REAg5VO|Nr_!!*NCs0240^EapV4UlPlg+^jJgMJs zD&=VxIFJvpJ0IXcK18o;AVd935l@fzaaF50V)!*&SEarp3lo{_7=UPYtGEedeOeaM z=@c3p8qnI-imuL1ELyMt^B2s+isj3MX)38wJ!?>in=Ar3PLsTnW;LRQY7f| z+z6=E)(HYowHJ{}j_?Wn{f2pJfxqSpu<)p4po ztc+RJK~qE@6-`NM+jU_(k*K^{OG&{J#AP-qfh~k(+tNBxeJ^F)0=XX6O(QpodbDK9 z4v&nW_uM(0?LCLS3;h@v9F%A?o6W)%bruD1(&wq!tSW-!>_`oa(Keik8`0U%k_b{7 zN$jbt3w$gw0&J^g+BL++M1X~+j|NcSJW$#TA_kzXy%)eM1}GImmLvT)L{unz`~nihsQi_$WLovK*7+VK?4(`esb zDoZn4AtwUJSKW69Zog?enl1{Ek)+~uTM=KvI6!{;u_ur#D;=GS2?Y=!x2#)n?tSli z+vm34a1|h#UjYR*Ab+OujT~E1lBHDgx~(}Zwnin8>I_RjDQBnOKtrK z#v%hXF-3s<0-kw(4>I}OivviVvYHma(8D$@v@|qe{mSLIEM2-3 z%a$+0;zbJuEM@2}S)eqoG;)j%h5RDpY6YBxR71B}z(o)3r9;68ge*tbm8h$(who@> zR%(3`5ouzLhy-Xxsj|!JI1xy4DQ(s%gR(?>1k@;6<9>^K{$iJf+*6GlW$(n=F(fUk z*}c)eirB0wovZ4ZDm|;~rX&bSM5|t_0IH-C)kriRlRcZfb^;_BpDIntW7(C|D&I@_ zGO9YA?&-ma6DM%C@0<|OCNdcm3PpInigtydqwjeHkQGsyiyDtPdRpbi5p+W&d>;*g zi*xE8`7y@>-y!r?|UZ! z^2U!`twGL6rv12r-itZ!ukPMm^ZxgI@XpVb|aI^YJk)*H7C)bT3d{cFX=Iz1WFjd zytWqXxZyfH@XC8})3$5T(%1ltwMJnsR+2}Rm@|H!a{;7al1F}g0m0}H+*2n|e)=&K z5AH_IR0atheH086LxF_@#Sq^fFX742ECvk+Su26E>8O;D{#I3Qj6d1aW!B~f$oLcq zWoV-|ipIJ+w05*(+t#gEziu5CFJ6pfGAV{V$tch=;d`k9YlA0>x3FHZ)zxg~*{>kO<8i_(}+Ml2n; zXs(m2wQoo?S;&-;&AG^wLjg%Yv;`nZ+TnHE`nhIgS!Vi{^=CZ^M*bGfSGIi^7_ux$ zweAT#9C0kA!o&M3P8I<&nmrj^W!xe}uU#4-cM>4k=Amn)(;lOXa2RF-d-%Xl%#Fr|`Kid=cM&jsSV72vYOewNa@^ zq3D_pg#s8ku2{SfZ+PJ4c*VW9Va1Y#VxWZ`sZcal{ZO)WGkdUR0VL~Lu8(kP0>SCy zC_einvb&x}a%u>vasgK0i%Q9anZV%^@Yrw`PmJbq#z-S$C80QvTtfS}9|Oe)r>iW(GcpCapQ ztDxa8l!{0s97VR_@N0*4P}L7dFkth2O}a*dTuJ%#QlHc*T&7MLO=-}Ow5#qzRKY=5 z>09J?Fltw4PmEJNrwOZoiJ(9tA@7MIL|v>_=SE=Hge-y| z->=_TNy*Yth_{?X&H>-c$dG`_Yot>U)gsB@joM8V>sJG<)MQo53eQM=pE@@>1#&)Y zy)X>qa(RqSPU6tvV|f1gy#kg@&GIu*bj!|>IRP>rTF#+HAp1nGH`A@4)EtF8;G*3u zV{J0TZA~fMQRiTZn?+q%f-Oz8Y9ET8ZD2|ZNU0cLGUFqYbx|staP^2U(fHLee!MPz zgJ)6fT)R7xc2&_iUm>4)(gx0&l&UkZHw1cZO9(sxNn4D(qfMPFA)}mZSl;VrfCdM4BlrMGDw?r_O(obbN^?V;n`*x$e>q%H=PQuPk z3H_cclr=0FO8ouN0-hQ#;%M2xkdZ*aBTBfj}p|;-})Xf z01hdpZlSrk2`g8v#OBQ#v1a8ebai$}gE>`g%H^U&do*TZxOF;{kxsfcEx^SiOYb2i z-h|bu$T*^B>Uq-F$n+`yCJIQ3lj$}gu>|s7zK<;(1Zs(_2$*aM(BB(Hqx>?~I~55h zx__FXD>Xnxs;Q<>6@xYU@5p5kRU(~cRrSki4N*n4it$>lJy!3x5P2k8R<+S6!za<7 z{#_K2CY^+=kz(ssL6s4<=ew0-@b~;)GGF-JDw<80X=WBc5>b2xtD zIQHz@hcjo+p;RWgYJmgUBPxnk?wiuFRn%DZJVnYrDpjjAccoWR?<%qLA}#Kt20rE+ z9yTXJ+}x1Ft<5&(l}o5`ORxj!vaLLv0aa~W6ZxEviHR}_r4VJ^0zz3s3L0>|2$2TY zhP;D_zDoy4hDfWlZ(x}+b8^TraoRSqFAQ)bghZDvogq`z*rT?PX?niO<(ZX@a!jC8 zQml93j$3X*V`HP%306**(z2@-9;!a2dTn|H8DL$b&kmq{v5n*y_SW(r{9)RmDGf$W?kc zVzEX99c>_WZy+N;GEi5qT7|W1*I?12MQCnpL^_#}2#_f@8hJ^D#t15^{-&ZV*HZb*)O+Jhm<6e5IYFR2D#w2tHAYS47n* z@kX^E4OmR&^7nM~B+{(3yeNY$0L-Y%w&eRH5(`L-$qS3JxA!~_9ylVhXCtFyq9-f0 z{5aDy?h(!bkbLx52b}i!>CbRaBoUx746xAhah)CDriK)*OB%Ht(b4GJ+(4vvwZpb`S#wQ|jUjDb}^DHE%3ymts0Nc8#+o4fG{!9D;%U zp@%befDGq95@dz6L&s)jX=W~f3G7MFN+_GWCx%a>8?Vr^Ec~wd0C4h<3F0l%b2OlgNHUTo` zddWZK|7dJ$5>B{&*<$==1t1NLJ@KeVM{Rl>kQfpXj@HJ+SG0K&8NT%Ohp}t#-f$|P zW0_=j1Q}6VbxwMOg85jxW(_uO+<+#MaGIJ>TT@d3K9X!0 z$+2dZPAZwVsDDuEV+2l{P4Xn4_^RJeQm?8vkw6&%g486XUZ*3pD78qi6O|ejF^NIc zQDM~JA6+*itH=pb*Qb7?fJ)VYRZu_EFvcV5xt_oo`)k@;Vi9HxJXN5s7`bsFf+z}& zoCDQXqNjya46i2tC~ro{OuT4Dl5{K_C!s_GsOu_iFiIj%fv-w~D>*b35%YDbxJbkl z0{KD-0|Ubt92~;ILx*wv_z7tl$(M=}os#e+r=&ZKxq#IOvf57>&3v4(9CFSw-!z2O zAe(#-%j^I<>P&2}x3N0mqYWk0pe!O9N@v!9=Y}X2Tx6zvWU~~DX9?a!IWXYy93<($ z@oH=hi3nJFPsshHqLG#iFhbF89ky*8HGw^bhofeQ5ywHn=9sn_r3Sf(*#OB7p0=iX z+(dyV@gc-LuE1<3=9n7{Dlh`8X87sYDyGVNLa`fi|9Q+ zfT8hm6v+^c0tKCJsVk2Tl|MnYvM6 z&zvRz&Du88*H4Es(U(?4K?e4Od+jYxg1-!Zb3(TyC~g|iOLipA97{TmC=@T zAXB4`qnhqDIVFN68ffVOl;(WD8vThuSJ4AOQsbCPjq8SX#md(VQhjrxNIV{qN8Wst z9*jWrqK}aT>@(92mj}o=8}^DGQMF7JP@nmkN-Ky4(yI7@>LV33AE~`6$u%y4AGk1W z)?rnBHF7XqkL@l>EQ7yes+O%Tm2`8&UKNHc>!u1QGubT0$0sq+KZw&kr*Zh$QJg&8 zgIu8~b!$d$Dt#GElBz~Vyq-A$GIGzPT|=*R7@{V0vA_zjAz@%kO@J-+A=ab~G`lWR zBIY1z0}(HG^CpV95IGsb9HQuwxWhrrtU*FrnIbU&_54@0o0a*XAUTB~40s}ZZsN3K zVV?=?4}o)3;ISP&Z!&&o=BPo6*oTdUogG-Tpc^eMEh32D(bkI2j&`)QwV|fAR>>u5 z*0MY!aX(+zt4ZGK>%V}nKlH6ovskYPAph*$zxLTp*IaWIAg8k@uIMrRv44}WSby(> zcRsuCz$XGL+3e2&kP)Y~HerWrH9$&=RjZRksi8ulfd2jg^j_%4`1rUnGB%E(kzouE zk6?U)Y`#2v&z0IrG~Ac<2&RfyQ&D)VH@7BV@D(RC&`?u@)hia`mK(R?j@x$Ny3Om+ zRG(HU%UHjaN>J+K%)FsuFbR&njG_v&1^5H~C>=iv@5ll8M-IqHD$2w8oU&os==DPE z&AZr@^YQ#t85anQ;CwvA&{Gzy@>g{~TofP`d_`wSr4kZnIy*YBZ0S<0Sg``jmoLS# zC5us$POG|~uu4^pj;v7)kzy2BQ>>|}QIV2Pb4tBUE78zc5FF{0I0?#OSEDfnxQt*K zJ*wzOrGX=K(J^2YS@{oIClC3rlzt&q>)Eq4niwamFg$Dr`78h{+ToY03ZNKL_t*J znaY40wsr`J1u{vaG4Qd-_OY=R*j8s^OCrQF+eeM>!sZ^}KJ!cjC7@Ugkj(|sGnp%e zCVJwjh;GR-_A~ealFLJ&h&6%g271% zN(i}vV#;7B>riDUR$>?RdX?D`3fr=~r5Rf{t;b!r--KIlx*p4xERY(UOhsqOKhm_+ zBca5+Ppe7jMgpeXNMNC$_|O2no*sBd4vP{_*n0|zVpfO`1YhaYfe#Ooi-Wmi(95z|r#HM*V_Mex$ASE*$wEWIt%##DUyInNolf-)EGTAO(UO$&%woKPQg90 zAMTNZFnZ6y%4A`1jFP3i+7p3+-8m0WW|U0aurxlaNK42O)7D0j;M5$6xK*EHZy2g? zjs1xn8MS!PBCKD(9ve1n5DB;xS)ba#a?&RCCX0ow29PU zgpEm(j^|bsbfUI}xpuDVNxb+^9H{1c*UV_`V(*Wfi6}Ds;XXyx{d4)_RwLJoMViqL zjqg-dS64E2YCCK2)3SV#C;>rN1&g|uGWHqj#IiLcVgsvGWmVLG;_1hZpTaZGJ&&U& zPheW!5sK|58W#8Y5-5&l+QwrN^O{}y6 zbOdG8c+_`g%GiWg2Flq0#asZHKxV&ysZxNPYakz}mJpRiV2r8=bWv2T*-_dVQa!Nj zt7OKcXqz}=n0Uc5v5V29V_|}=HqrAt*P|n=I7g%$c|gnxk!fw3B4*Lu)rA$ymSW@D zHJCrI3k^+8NTt)bFvw{hkA&a--qT8IPHxUzZ60CRRGSEHT)(2{!~gr;pIEkP4YgRu zjc6v`(XFGo5&Ho=> zeedm9Fs~DiQxz$envWcU(7}{aOh=OHASA7nDb_rNaCk`OGnNkS6>u~MF2F7pVaxDb zAY)PUs{revRkXj;80n0SWgdg(LbR|G}d4P;gY9_5HV$ntb8CT_z z$Wqt6I9F3@ky=b45-}h^M(?AqBlk?}$x17UqsAiZd59V)<5IS8X9q;G^Diaczx-yPH$kR%2kP<)bO^M6Jhg0~lo>CWDGNADvKfhB zvq}?}-WJR-sh{}0RL%n_X$i~3lEsU0-E~{Ae8n;pOGP~S)YEuo*B+D@L5gi+qIKFG zmfTcxUBchKVP((X{L#Dre$leke+OXVDnR~_AJhNrha*7#<{$p~ZO`pJ`1eTFb@(CU zKNX$DNILTH@)r(k8IC2?bWbSYalbACg?N!kZ{RpER;sD%Yb`>(2MVTz z5yQrTz{WSn%h;9mah@t5?48p?UHK3xue-V~)rs@^;nbA-C^`~@$$FlSJ5$L7=684D zhOJw0@7;HyqqSAMT}F2X6e`CP2c<6>a*qkTp$1(ZKHKwj*eBi1&- zp8!ag#C8%ol4sONfdq;*P@qBepGLj95vj^$I$Z=BsP^N4gMM>`5)K?bjK`jM0tb#9 zLMERFdoH7iFG9%qcPu0Y2RO{T6CQ4COyRD^w1}ZEL>Xx}51Vz>qKmL(p_mUbK3T#< z-jhMh?2@Dy03A(_A`}AlinYwMl96*Tk$?@0d)5NZCmlS65Kkry98WNUbl@BIocrZc zmsJ7Ch|M(Z&D@|=crrmj5sq$aXsk!E>|%U81M2E3pLZHS>X<)7Q;p-_xMAg~kAC1i zA6vM1DFHHj6(Ii|o9xH&qmMt{llq-Me%CE~_8<9}@1*AWMxbbob9r)7>r=2H=^7#F zXwOSc(U1g$f=6w9qUiAl07yyMgg|35i8V_X;oduL!F_k$hP7*!%Mf4jR7+(T1|)X{P@Q|_}-6n zEnNH{fWlRPy!@{EiF(K5k3XLJz4!gq&Aay>{bMTzwbFSJG*x;To4PG^>^i#+1Z&h=bYy)&-=WvG&Mr; zwZOuXaMVwbEP3(@ZD_DsP!hFbYfA)Q`J>nwv*19~f?Caru$03hc3{d}oXq#6`XjSH zr9z378Kf4L#Tq_zD25Fgik>}tAU8J)PKS-9@oZApQs_#G{F7c!$01abL1R&IDRm|T z*JgktNi;JMwl@c8m@g^3yOiFdB-OdsOMgFv&Qx*7*6%kln-71*|OH|PH2q%Cu}uzh|dd02W>gz}S4O+$vFp~#}4msQ08 zn}$(2Y3OMO@*_cbB4H@O7(zY`Eq(&Y2wFl>gft;5M-dSg$tQ!)YJ=BiM}u5k+q)o-ljD{xTjspy{>R2_D&GD;L(JJ5ip4>G zjF?-=Fd;;<;{r}8XYMx}85ycG10=KLpon%(P6u)`GtezN6TLIi(9Nl!DC|XtkQX_T z5Yk94jPfRAovSf~G|{o3F$z>gG?YbR*cVl>Kcb*Arl1iv1YzN_4x!PLiZq{eODWJ( z&qERs!Q*sdK)-$%GWaC)@7ouJg@qh4wb>Qe9YV^^L7_8h#Y8|!Q0V{w87$ zw~n$?X@(ea?ld8#-}F%G!3H}O*qQ4Vli!;s@zMv?wECwR7^^D5*?AoJr&vX(JKIcYwNgWLOns+BD=@G~{V9`LQl91%-Z zGKLe*mnuro20$ixsk)NQH<%%9zBMHi)mYJ@PO(=FqUL_jij9l@RzYdDds>R5DbOU(%ixV1Dm#N#g=W`P+C!mK!`e)BncuP;h^gt zr3*2nk!NX%A={!N8w%1nw@779f&dnb0?kptAB!QVkjuq!Ndy!d{1ycP60|3FuUQ7p zxVN?dGKDdg1du%YOswLR5ul_Xd%`g$fTVNTEvnWf*Atj}a{rAF|Kq`Xtyb$BilRt0 z{39I5P#W>NcQQ5T%wo6avz_ zN67B(QUI;}Pg1Tdx)w^gIPG@i<>YWJKqF*A$LaZ2}ttj%xanDfy9f!_YF-dB@>NT1&bSZ94 z5u)?duQ3=xX=N3*?c9k?Uu{A0jvc6PY80)w^o5q>R2|M{r^i+}-$_OLY79>54apo; zkzSxFNDKv1+6l{M>STN}Yk}9C$iY%Bog1C&Q{yNAqGuu@nZUifBRPh+_`tEoJ^Pxxq3+*g?RlZDy+JhNVZF z8X(1SiRVdtZd8=sMmG1mT_rr-+77=810%VR<0xIC?m;G_rYSr})^FO3;vGA&Yu9cBNoQC#_0}&(cwBK! zgyg$5gG~IXQch9KKPssr9amlSK}4L0RV&^}Qsx{s<{#x5gq|O>c8vlby&H#4qDsy| zGCN#1$mDrs{_rS0A#s`n4^l&h+ZG)+&om0{8*+_>2b zpzldS%j5B|tQCogj~q4({rdDqnvt#!O1YnTos<99?E!ie+cid#A`9iO);@Y~sI-hack) z&+I~)^sM>XwX$NORfYb~%vdc9V{xMgUV*QG;FkO5qKKh3XEUMK)nhU|Y2A z9M}5dgol{;N@WL&B`se12B+Va4zO{rR`)%1uaWMDyvE*rdSlG!(HJ;j0Joo_^~>x< z60RnRE!jz3&!6(oLSs*K3Y6?c-8&PtjMP*lf?z0wa45{*lc05NT`dc}`+a`?n`m$4 zU7Y$uij;L$Ypl z8^yRMy^E;q*U9&*ckhrnGm$r?bgKLeRwoiU)p!V04>!su#JsSWsijn+*UG}*(nDm= zid%lsF_Qgj7*nRXV2p(h%yA>a^d|w`Z31Q7tD#XNZ;#qpQD+r;ZhpTHO-;>cZf;@0 z2T{&pfy3@#JyCjYvWLLokfsHqf2 zC;=`RUgV-hA~BY!TeWr#K3elB%E~Lz(&FRa6FG+UkZIm>H;?#BG_q>F1BjZ#Gutk6h?R|Eu z4NjW{Zl?p?it;hAUvCT@G64Ph^+u;o9l2#qC=}A3diFIeUh)bmYU>qZ<#B(yqY9AU zY|OaRhE#r`dPYy08{NBi#e@kHFk<*HWM^k_aX)QJeD_lOl$#RE=EB^kk-*-@-`-Z}2N&;*gxD%&8&s16HPc^HR zm6iDFt1Z}4ycH!S`?=4fKj7zU)4_`{jJm(jd?5qJ<4)sl6kR%ZLEjTj#Grot(W6^8 zq^EmWZH6vLcWm??oE$3U2tmAOCj+7k(~5hfkc=>j=t!%}i31ho`0(S8@%d+KQCeAv zU?j@=t_d$$)2sut@iz%Nan+g>#??W=@eu2YvgFhVMo!w4BZ&XgLqut~A0eE`YvGaJ-McAAYqa{b-6{B}uU zr%oRh6&2P0m_hPK0g%L8z4g{Rdc5-f$J6$fR-YMBm0^H2hn0L4zU>0(_QF$LNAOTdooU)I0pUu^gwooM{LwqD~Fe8!>Fro(jI^2RV-TaD#~jc zBtVKDA1wcrWYeaI_ol$_qmxI{nWYM`O(|Szv!Y|iLN4~7IB^2<^YWycj|is{$%evR zqAbJ4;V&UlE#SpyFl@E3XUCyrF7Ou(h^wlr@x{hXShHpgwtf9I8k)U`k~}lDSkiNl zZ4se(kBc*D?G_v7Mzb?BI3Ie-=+PKCd^qwubl~w~l8}k*rw^ju!Ge_@^v{&X()nBt z8+$lTyA@6+eQz_KDFG!jj3rsf&`{CyN;=3IQG2m5AJjQ(V^1|lD)d7{9$WVuWvPtx zBq`rZ9uw)Fl0prCMWYDO?+8d$$qr`Y#=?jcXN;OlTjUihqAZ6(-<4HW*tBUgRgdsx)WAx}zIPt{ZaJ!`- zhN+_og>Usb*-$7bTb79suP%8Sa%2^@d=(_i*mv3~Q+1NF_bLNN>ilq_f#DnL-U z)4VCxV4BA9u`%U@DAY@YvV#J7H7&B%xx^(Kq&xSp-ss_h5WJ+u^{zO0ksH7lSfroSC7?e)?(F~&#}Mc09snS z>@5-~MiV6bOgnAzzQUIrPr`7XOL~khhaDN|=_u%sgHc0=Vf^^<=-jyz=SOwWmJvJQ z^;tEDR-K;`lJcFE%RoKse~h1;rCtFdqFy!Ut8ln&) z9Ix^m z^57imS)2ZDo~tR})*2w476rq4cfqd~UVz!BPlGEXlNE3TACG!ws?6Z^di|(xY{Jex zCHQ#tI;>c^2D?hi;A3Nz6?4RBOM*}v!Cv`mQI{&@`(m0+(PHT?d&|iFJ+@wd?UheV z7(4dgZnwMg$C#5m)YCrniv0l}p=p}+l7-jwU%6r1={3#1(*n`xAQhGzMN@2w><^_! zC3GuTw|9jZEQZG-LZLzkxKn{LY1|lX(uC3I)2kadHObvIF2Jb2ER213+px# zbzVVH$07_HJOqOW4no(iU67xj$G{Sel1`@BbZ8?HASs#^Gs93N6&&id0Er7Lh+ZOF~eM%PZA zF!-c_7(HqPPUzJgndu&Q($bKYW`~_afAmF$w`jCXh5-F8KB{uSOxJd>@`-j`zdT64 z+rwResYWT)Ig)i@<^IZHTJoT%S0K$x3On*wlo}rkc|hD!001BWNkl~SgcoBEZfHcDFmRos^}EZAd~X%snL(rT9f z$dzcymD6vW0J!uxjqIO7g_(lxu@##h9p7r9~xo50! zxm;yGHc#?!*XQBv0pI(v>({T(yYQ#~by0b}cTO;>4pgD!Xi&)J)qOnU8k4+8F)mE+ zRy3PcL0)z`#+^J26UPi!P98p(H{5hjnrM=0NJqun7mI9J3|cILSSW;=>KZ)u!kbw1 z(%Y!4Z|1OxV0@+kHUdbg=g8kOR@0_L^Ej!=Dg%aG+`5Hsq~1+SK;DqPE^Jo7?Xsh5 zmoDhjrw>l()eF6P^gv-=KAcVmEH?6<^tv@648SdqxVr|GX2>Dp&k}Te5l)s{Aa&yi zhfr2pflt?bhA%d4#`ax15C~K5%tVQhmM)J)EAVU26iW901;CO1E9C?W^YSogKtG&1 ziF#|EjP6}JF@cK12Xgl7B@yf$w&x>{fnyF{@{&l~5{yui9VKrviYA{AJNK92?d9)b z)y+X;ddmd01U=fDBAYvXX76bY&jqDan3~;uw*`q-!DXlNhc$_w2_0vNG)0y&L=Y zm7=N1i&#uUObQ#Me8dvajlbzuhY4!*L@L|g1lF8`7oTsC>e{S>)Znye7}~Q4*Ihmj zbIzCwPZr4&5JTL?Zx`tp9bAQ1sWLl0h>EHjtlPW|>%Q26k3U_H{bkkgg+hoji(Qod z2&Oi;X?xP{AXctn4JcG^t>&iN>qZah_r?S#xh6~G?qtABx17n^jYWWH2wF4(+#aA*LPw-?#_!6NtC2Iy4rU1D5e~P(Fu7hX_05ISw7z7c-|$#MDV+apDO* z;If&*P%@Wz=+8Q~jyM=dCf5;fWM?@xKgtqtt*t35>_UU06u%(1YK~~da^Lmr?R%eIPqGCw*JpAI~IhZqJJUkicP-xq-Isv-_ zip>dd6LZl)L^tWUQ%a1y{s{J$mgD1wAKCC%k9dKQWkk(C$))CkmA zgaHv@KNR{m5`-2dMrIIoOnWFCQCWT84jtWv61%5X|5>Q`QKc zwlTP=4IAByu~J(z2qtxpZrw3%>=;a#Fb*9%7Qklbrf4G9DZyJ0Ida{lg$QIqbU+u! zr&Z0ME_;QBBT-mvcKG}O_*#5CXG<$8*sCn9C`WBg4Vt_y2nR*3mcU16)ap$II4vVf zO<3&0BJ%D;Or!D@x^}DGj{OHp(c<^XjybyHrh{XA{?T{LV(r!ezqsHu%$_n59=Bc8 zGF$D?Y%VB{bXXi7D0UZMrJR4<&=UqXg`#7qt!>1{&Ba*$(Wm%i?MCb^tq^j2GS{CJ zV%49KSZ=zQ3D;@IG>_dD9oVbO-f3e;y!n%}XTCIG$dJuH7M<4P3Lps_pM3I3=cns7 z_gwb=>T9a~;h9k=T`07#`zuCRAw{yC27|mIx6_WUMFki?dIZj%H5Fq-FH-V1P z=bq2UW@{8m*bgn-3@zk?MlEt8AtJy=LKc{0Lu? zOhd{uWtBBpxq2;LeRDZJ`D{JBp@@8DI{Q`t8WGUQ`}R<6quaw}F3|{yI|LbQ{Lu&^ z($EpRt^Tl*N4RZ(A}5R)cN;1+7cu%^#t-6mNEBQ|zfmq<^WdZ5bs zT;XBHJ6^C@1sRnjBJT6^HPSpL0Q3a|sI99*Y3Tv}x4D^WJDWMgEas&EN|t|QAq47w zNx~I&p381`8ZtcT#7jVCMiv_$FTe37%Bg|5ELSo1paedF_$`ri7$E0Q#hl55k(ov! z1ww%h)aq`A<$dlyWfJQnlMoPmLTd%;R9 z7DLEFE^KO6Odev`2Lu|R`s;ykkcltGl#}5dS{T(W1dtmfK>8SXMA3KK0GZ`-V9JKlDrBpi-}#bS*_;q&^K1VdIXd3JOm`d>kRoW4uyXj6LQ`LC+Jt5A zyo1eOZ2?*7+?7FWB^-jK5H4*b`5m&+xv&5o3-Vdll?uq|eyXdhQBhTi0~OV%ZfJs^ z6nPBEmUv$kg9*|KAnES(%2u5vC_}oM3Wr5OVQvGgG^Ob zHTIPp!0rQOD66YSOE4@wCb3@h&N1<^Jvcz}-Yl7}wD`z7qtw7@(@(`|Q>UVH$3i&m z#O{>mp+~HORd@*e^d`-EJv`g0a{dYis|+hgNd{5m)L8+DJWQ*F>u_mZP`xRYvrvwY zJTO{+F$t2aAVuX=&QPKD{yT z%o(`g?3pOc&0tATBHIX$QRXq!2((}ew3ZrZ-a1&+5GUge9Zn;ePswpwcp9p85Ay9b z9AYK*9Ore6gni<+Odccwp*EnLX{iF7?=z4N9ZnU*BiMd2V0 zn>t+roTLXxc~1(JGT2$k)714(Wxi2b;X1vPX!YcU5;=zj#P#S9u~!*5DV!xl#RI_r z7mYvv(#!aA>sJU7V4HG{B=Jn2my_6kNZ5`KBrCFs+$ zJ6uFeI*v#>ZG(Iqn5bH(vZfZVFMkiuy!1LYZQX%zOtfSY;dRo8Qd#^UJ>0B#YuZ$F?o`Bibs`Li&gHr)ksz1F^?mi4QOR~?7IutPX(-ID zhf0Oqoe0g+zjQv9yo*H{a7hx86oiQBD_KCCVxY7G3tJd^Kw_>&!!eXs)!@N@F2aH8 zO5O(&UvYy||2=t-L%QbR7xM`qhal5Uxkg5J=^PrYJ*bKms>KOV*wvE*OL`7qbyGVW zaXJaewAa+tHQ@6NoA9p}UdM{Ho8S*o*$+JzLEbS`g!Q7{q${OWZUfZ9ob>vMCl6e8 z@0~aQGe1B714U6HhkAy`^52gefZV!utK*vA-_>{Pw!IhBdBf+yYUyc>MQxuxE)Sy_~3z9F#k-@}JDZDJPFaZCwjmd;w4oDY5_s zaY7iSIzZ~;;1mktV-!-fvGH|K*piNBVC2Gb(WF>_oKz~2w|QUJ6=|yvts3a zQSI8stvj&fmACNLyC0&qv5`Y}CKKE+c#{hY;?KZ%7zt~XK~e#VvNLhP+%s_5#q-gp zR}ayvl0o-aUebrUb^&};)zHw~f;X0bfXAPC4x6@YgP$eYxIYY^#Hy*>A2G+{!PJRk zasIh;FnZK5HZC}*BFD*KE(08D-Lh>bUR?SPUVh^pR5diSj%dsXmg|GtK7dRH6awo` zd3iYNjMFh?;sn+Q=Gu5k$PsHod%{zsW@}; zP!m9!)EFf2v8ltmmld!$p*hoG&FKUJD;FA zs46j4m*6vnS`%@ce-d;&4NjX9>rs$VIrr4z%kH@I?mGZb>BpfhokLB_AL!qYi>-ii zk9XgHf8O)2u9*7OjspudMHvoF&7@x66mm$(6qQjoS}AUa1EYqVgv&3Siy4zoL0(QK zfq_EuVnS)f3QdbZ^*2ImsRH~>P-06Us?i(Ysq`T=tW5Fn9J$^yt$0xCcnyR8>zje~)c1KlQ)^o{WrF0O}Ea*bnmu3W=?r&@pkH2ffJEt5>I8|GT?}7VoV%-yhb_ z22iLfDpg1*n!&;|?Zj*>iKeHNdmG%Z53auGJZC?C&%;V(k5>{sySN z8YsagC{YThh}@iLag;hhbct!oC zuE8l%8-h?nF=7HS0!2Ztk%SvbMHe-2qUfJ3McJH~YaWU4V;6LCVVIljDelUl!Rz&5 zqWX*VTWv&U)2h?Dx`nkz2G^eN+!m66^KwUlFX z&G05lVZ8JFw*CxA5%COW`LE%xnv__1q3Rv;rWhlquci!q7njarPN! zVD!l0!h_>EO{ohh7$8BCyg!|YL)WXT%yFj}5+I01g^0OqttBlqp8p(bRcH;x_+CXn zN?npqc$0>~DTNB?SQa0MYS>#+ihCb^1P98?MGi9ImCA!e8vv=ZUCr~~+&;l1P+)aH zaZ$*%0E#P%y-O~^Qlp3leDKyBz}_9(wWpV@!fPuxp{&lQkXny9v~If0WPpUjro=jC zyBp`vJmr(?e);o17ZnwKsVGYD*jyC{zv^S&gQVQ!+zT$~`T3UeIn@n;`KpRR(9|>* zpI|pC;THAf%$vT$YDKp$h4|^E7vQYv6Va_xAq!!%nI!B@AQC{VnSilTly9g6jxodd z)zv`Qi!>W``VX`rQHZrAfW^z!W6@!HkVMj1xL`h}O&Q0zkj54tDykX~i7BvfZ#)@Z zB@2;AHspPBk-sSHXJ)Gmq4L6|3JzAl5#B8ek4vvnIJ8puKyT74wK|2rpnK!OFrW}t z$$?TVe&R`PTI&l1SY?HPl>VcvWroXvK__;{AAWm1Mh+jsl5V2&h4`#QfYd{%!sMX8 z(LGexHsFJg*We%jd4hX5CPUNY0VqITRt9EF8HdY$avsKw9>L=C z$Lov2>^1dGcy0NIxcAXTD5S4sN^Y*O)qK9CCBBgp8ZX>F1$O zv4gO;5>ruI--y*~H{#xh7h~;LUn8um;P89e`P}ry$i|QWNSb?Oc;)AIz?2CSaQgJ= z=-It{LUS9v!k9iquuer;5_^RD+>w9NbNFl|aw=1_R};WW_A!NOh1?yjAvXMEYJv?) zoh8d&r2sI6BRm>*?cI-iA9@5O6=gCXYo1wVRV?v)QqmdHH5;jdYp&>R`Cc=Dm7bpRYLk!OsC5cAf;U%nR`ca&i9+bgvX*Y8ACW03hy z@!D+hY-MY(IE{k^GPg8xPZmqRt%0aHjqBq+gV$E_oF=fmMTy@EOOrJ7= zuguS#)NA1nl4a{)87jT>f^v$qfO#Y1MJp_1UfgUsi|!CYG+b;3qLxwQAoZeWqZ0;K zvgq=51X@z0fNoxmp`o!EYd&9xe?I;=*Nh1oyI8Drh|6L{*MdBpb@~+C{OfDDYl9x@ z(jQAAiC2;lOu;+4HzMwA+qnl%J@*!z`HbV9pdAWw-EN+HcieUpI+Nk( z5K1m$J3hoqmI4Js5$r!uj(@%U1|E8H3D?7N6ylI4F#9hiy;7>}mFtc3VRjo%=-wSO zr%uK6DO2F#@UK|koF36vzVw_qTA~|pvL~fjC(^iNFIuDx$ate1q|ISBNI4Ys5ZzKJ z1)?|mR#>8tS?OGIA_#9ZSQKI<3Apg70Up~Ec|lbshBf)C^9_M zhf)yY#NeATDA7XEQ%QnnLms6KnllrMCl87z2e79J-a@Dak?ImOHq>Cn7sYtu%}=$} zUmbuyO3Vixbfq~gJ~wX7@bIdzTQs#(mOJpX^G{zf`P9jO8Z~OvCPh)GX6Cqh9nMt! z!QD7{kGI@%OXsJTemu9L!GC^KvkcatqzQQmDxymE9z{rq68%}842&8!2sd4~5JLv` zK_+z((8EL;d5%87TMMnZhJjL)L5qba08%fOmh(pkNMWKTyy7ICBLhhCAWxe*ft_KZ zZP(N_u_qag*`R9FQc5a@NLekBe-S+x^&O2bi-`=hh{+y7KYH zMk72vyA+S!vu{71eCBz4vgUJyqdKi$|40RHn;k>?_QtP%b}8nbekxnt@tB;xA)ALP z4v^;Gk{4N7U57W{{RlVy;m`1sAz*lrhcPXa08)2kh;WkSc4GX=!*JP!=VI2hDO}QU zyuHX%JWx@ESC+kxJMMV^{zx>jdy4evT^0*^78c;zD=)^y^Ur1hc%j_XjuA0MQOJv| zZ)(N|tJmQ-x805E+B$Fsus!F|KT6Mu($7@a$iLU)87eZ|9*iD70_UDNhwEBJbb`Qv zbWqLnUxr0Z?Y=lAAr)qrY$lCIq3bHhIb>`yUqFwx5OBssLuVG_m*VxDrjVB=fXaek zAS?j#;YUy^0W#5VP6d#f@F35d%mA6`p?Xizbwn)CLpf~E)>a>|>zxw#d`n-_UFQ?(tdM*HEawYdJ~yHVX#FT~B;2=TQ!3r!a&wlHx5 zvXx1^yi0yI&YLqGKfm%4bnV>9AU_?`i^MQ)z~1AAueRadho8c~SFB=>Ur3Ib90W~+ z+h)Z{C-lTUcie)Jg9orSFNYu7GZ3aRCUT575X8E#w&9mI{V(?HFF}aZrVeMDNCHUl zRvA#F+Dw}bJvw#9tf{AB-Z^s_ASowN{2=PtuVN&66uat~M89;buf?_afX}jW4(Fz|+e<*Oq>|8+8F2mEGvyCwI)A6fu3Wh?=i;CK*OgVx zk#mEpwJ$VofK06gWU)9|oPu7ZZ-vxeCoeY(r;ZzqKiv3BbS>-vyOkD%V5Dk90rxdB zI9h_uvZ=99=GPK>%Rb&!)z9*(OP%*V`W6M2!+3=KzOsB36OLsJl; zsDMS$vrZ~}2pXTr;mI&7ZC0Z3tSFMUTJ5~)(FVcvcb4c9$~rpXM+Bvbz{91NNORhe z;da4gvtoZqDV}|4DgOEN^9U1FTxawOGncL2EVmoe#*W5c|MwG9`w-DRnW&c}SGi=dq!MjL-+Z9SHK3q2yc001BWNklFuvLL8JI!#&uzWeY1mnWX9uc{)*~sJEdp z1x+OjmMCP|9uLNk8ii{XUV(ywJg8w2VGxF`4yTC#sn5Z9XjBk;Xdcro2$s3d-WKId zoU+iJQUXgEQniwIZQwR}pEO=J36KZgU2^8B8>dg1{J^QFP9ib$y5ot_dQ7kTyYIfY*WVT`xv9Y)nH5uPd4T3H6t;Qu z71ktSg}%{cy3;Un$N>EO%8M}b)G_Q4QBqq`qOz2u8Cr8SdyrNNwMvtTGizMFAX#L| z0I4sX1cO|_a#Ry_kdM8y4vXJtM-GzpA`<~}#+%IzX=3 zum!*UpTAo;kQP&8GoN1QdFlMLbgxc@gV{I(;ytNI?zyJxMY$aMJpcWg~P3Di2{5Dz2*(A_3f+ zl#NV^$|xely0--PKJ+lksw*Twnn&!L0_35#Z($6J7tM1ARA&a1tOCwSszD#ZwR;e4 zI)KuOD(%$|w_x$IO*r7SNH0?F8Ed*`-hu?dgTU8rQDZ~9=QUn)#l=saJ9o~%JRZ+B zg*MaU?Zt#XCX^KMLBP9jm%|f|IT_m1qb0+VxQ$a4y znm!3P{rW28=cEfR4<8VN7H(myO7m93s*-FRSzo#Wh}1bW)jS%5qlfzvMoS_kDd|WS z>toB-Ve!&WQ7*fA$XHJ6vI428Dm=(x>_N_$Hc0}c2p*Hi=nq6tSLa2GHz2~S(kP&X zOwEgleJ4~uNS#XbW@J?ySeb!J@^jqlQD})7z$O&AG&meK<#OEVm@(lL{OwP-B0rD15+tjsv~POR2G!Wyf{#Dj zgd1+X8|77%qSi7sp0@9#iMYVmOn{l?cHz`hM&Y)bu1DWKy||cMm?g*Vi^h)xCRVQ9 zga;NshYvscguyYUGrUbk9ea>=yYL_%{xdptE`;4qGe+-C(f)Cu&m|9X^Y-1i;pV$h zynP3Jp`amZ(fUk+I*{-Z8*-Z;%48Xf1syUnF?IZC-1nDTSn#2`rU8DERO42XI%y@f zXoxQIEkrNqOMs@s=|q@RoY?3TX$va*psOK$STa7{Za3EuQ>lkg;UUE+JC}Kc{1jp> z;WCfI1IR2~OF76%L(#SenQB(DdVAtn8T?amJmn-+XBMov-I>G_t}8*TeiyuT2eh@t zC3yOyy?Ez~GI+TYHgyzA8hQgD_1|k+0Qx`$zn4sB=z^IOKAS%Ilt-t|n)SY-D0S_h zB|q#VkJ)vx8_8uGvJhG?`JixFBtlj&)ko>NrJ^p7 zg{VCaq^G;!a*&dah*;~MC4Jtet=sX$^Gosci*Fz-`|}aF#4U9Jl9{eFOc*f?ci#FN z4CqIiw(amhQmhxU?y2GQ@()(xhTq)@FOhU)==d8USCT73bHr`8Vo2W;@Utr}#=Nu7 z5QXH&0YEl1wczddKEYr9u?XAuiV(GEyq&lOaQ&mziUGZQ;I2RZ7N?9F0vCxo=xxmo zV?WdDSl4X$64(CM?I^3QVa{OFjfkR@4p)H7b?Y8O;;=qVf>lHdG+!H+hgX zl?b=WzqaK;CIO_8_%oAq4hJCP&zSPh!yN9>1d5 zADJHkdULNw5lECYZ=;Za0g^%?-8vTF>{(NA^=0R4J-ZZ8!LcH|#4uD}1GMH!u6MM^ zO`pOut?IQ>6*wQngG>a-_Ii*aM49EXW8%p}86am(pJD){j@tx>v=Ib?5i~Ui(d-Q} z%auYrWYsbOffhOyGfTz-gU?sY>?}Vwh^%MX}WSy=>`ItB7H2nTI*TL;{i5yV7uKO_1<2yW* zHt~w8TD&-yV~B%)(h~fYU=RD z@)h{Q-S?w0;NynGdf2bEM)HvXBmtSzVnxr+op9B~^Kiw*bKy>NAsmjPxy6TuCNGyo z#aKXqQZ6E=r~{-hs^!d;BIfir@+1iunaC!Wfw+8K>|8`-$N;5vWw78GATTB%C0Fp^*RHJEg14P(yI1#Da3$=Ea=5MOQm;3AR_(!|( z>Y6=DShdI5v-*QKd5}W%om+HigL@U!U4G%&FJH6p@+SanI9}MS$K0|fSvjgSxahKl zW8Pdv0%!|#v4 z>klJLiZ)Umh4U&>#Y2>aiZ(qICUU#z%fbIT?N$y~QF%uyK%fOtUDtpmufBu(7d?jq zl~qtVPfMGuD1V6qqymS`Dq8wuQ|nso+P=`nBd3mPVB;=5|~ zIu;68^~F}v_5E7_NV+VVHF;ScOdB^6f4%dM$j`|V>M6(EN{P={66M~pYcHO9;dMOp zSW%FZgE^;8z#X?Yz20K?$~SjZj?2 z#XLOv_oju_IzVOGHFVaiImAjN9hrk(m2-ft zU!rXfeHwvoIIJQNppG6fX1j8JgzF^5K0qV_YR5yx%~b2hUj&T0yq;lHBz_WIDv2#q zeDp`gxA-o(<2N`$dvO)snB+Q;jWgaeB2Proj za~)(W7u-zB(NCFr;?jN*vA7VilDL8fG?qfG-On1dUzK_B;9FlYQ2JHT%P4*}<9s?N zkkzOPveQB{#|`^p&b0AQ&z(E>IYm*Le)y~7&{ufOEqe;DZrHG+!-dyebMyWh?`h#^ ztUD3eT4nOtgA{y9yUoJgQ~gpQYbCeP$B`-vW*XoSpOz1 zM1vV7*O$J?^zoJpOo&&_GmRjHX|p{p zj2V6ses<-hICok0>_iJwlLfryE?W7mGXy?h0ChA7^Q-Tc4{v z5_Ed!^n?vSh1+4p;NCs)hu{1X6UUE%D=jV}ap)!W!#RStcM6L)HRHXHSL2`0yoirK z-yolv$?elcrp)7@fa@WL4(Nl0mtKe|6ULxpK`s;B;-N%oniv2nNLvQ0^Vq=_g-RRc2fJ6Gi zTNIw4-xowfqnFbW)ZCjJ)Ja)H;}S$_kzZyrf~R&;INBihut0jEK}L}eYFNB$Un&0n z&_gJzt`Y!g-a8CJVSHTDY{1Yi*|_%Hi42e#43M(bmDz)gWA_nFIEuhTVTCVhg<^BU z=C6gNZa?QFOB*A2@v{m%xO_9}!(tTTcNYgp12h!{E(_FtowLf$oIc_8+i$)3{}e^p ze?%Ad1AEgk2au0G`lwyg96fIS>%)I(48=ypG%XLDe@w9P$!!$5F-_rKb`!^pz~w(V z8>dYk1CPs25W@B>iI1zb`(Oz+LQzQyN-F1@PA3+&*w9HqB2Jx-Kh1avgFc%$u=$Mv za{LJLAm?HBOajPMBp0z#MC3X7#qONwa*#jnSoKmPC|Ze4tugf(me4+xgRQO-?no% z{{7)fy#3zC*s^06Lb8^VW9jm3M;{qTtdzAK4En%aY;JEbOR9+v~7M-0JvXU@c=v7^wrV-YvJ7J1qDw#iRg z745Ee@7;&@KU$49-uVFQHg83kRB5=*_}c+UA&jrUWwoPk*N%ALFMq(`fxY4JB-+gs zNujVOwT)|N_8}A%>r<~87OBN}s5G8aH=sa*qz<4GA_*WB?et&xKV;hZ_MaPo*DD9X=e;Q=f6r=$>W4545M^$m@@ zvAq5M3VgU~4N9tr{Yc)h2uo8FUp*mqv;mSnz+nM;Q6`A`pslDbBuq2eACTkMZ`qA7Nj4r7&vPhDxdzIEo&m05~G**wCXO4|m>j zJtmDGiR>(TZiz-Ed3r?ps;+57eG~O%6)>o42N6g zKq$moSy$7#4zf*vjC+uAfRv?&dWiKX03_XWL{-q(?1v>1K)Tuj_-hdehq0wHf_q+F zhn0Jq(GrqrC5FUSI|o}7HbvFC6=VhGo;K-&KmPg`x1@LI@YR0+@_QJ8tAG33tS?rr zKkv)Z`WquLOIHn`T7_hwH#|rpSai+L##IZ>!A0lIMwd>7;%G|JM*>hA_QOhTtYSpY zk#Yiw?v@Mb8e$hd`@>XF3tKjMFtcavz;rvOO9 zOjK1=*VSXmYj5Mp=U>CN?YkxP$)PtG9Qva$d`~{B>@0~ihZCI(@-S@h0E`_q9Q}It zLKXp#VnJhLBlhgsiw$3F#Ky0RaiFROP2mW__A97EtpV!K+F+d9Dc~n!-)Dl26=!YxX z0(+Zz(9~yzzU0 zhok_VK%H+AxiS(gIm8N3r-lJ1bj7t-T!6FBn1-Cp z3^Dnsf;jAjTD=>VXtQWzW%O$^4GUR_9AXq3zRtjF>q#UIs3=g5*Fm}`Y7thC; zrymL++kTX7)tx01E)ugS;tut|sTNaFSzUw0FT9SYUR;X3`%CqnCgQ*ZilcrlNvoLJ z6_E!>8k%-HGSfZCO83CyaPqouYNlS7EeM4|AZ?Ne)sRY2gt-4Ju2NQ|wkGHpwnD1A zNqTB2!_s68YbeU}VD_Xj_~UKALvCJ&c*E$Uz68I$6AFNgp}e9BPdxJy17xi)km$=D z#Dg?nnGjL{Y!-TURxSz3%y1*kZig=r;!=v1K#=uaDXJiv@ajeq0c6tiNRjsx4>tL^ zrHFNy?O}bnQ~Nr_icZ;?_}OLiu;7BTQIMa@0vX8w$ydcW?g(n@no!>;L6U^XDJ{Y* zRgsi8gQSGbB%_i%ND{BXMflCG3$vxj!g#tLMfj!)e3^Z}0hQ<)^=2s2)^J^PW(hx$7gLLK; zN_-eBn#xUDIu&*ZoqgJ*PyYMri*N4Mt=sxdQn}%VJ32k{`qCR4qRRO( zpo0d@W@=ku3M7is1CPsw2`3N6PcJ*aEd?Ckq3B@{g@eM&ozM zN%(_3BJ-erQ-B;h>?97co_YFoSgAzfJAUcQivY5`ss{gj_7yz!(ii55{_0wBWx5p=3|34j#BjY&@{KDoY6fLwU- zJe>7C0wj$Wi8_~6R^ySUU&6m$dK2Z9H9~xVUQ%5oIn5*t&bC&uu+ozY2gt)@RaaRO zkofNJ0wAd!ngqy6BXP%VzeiqP-Z2f3Wfj%zK?;EM$IBadvy}AZLv6O^rNw?bDJ&5& zN0=}P;BYkeymkPjzzqdU3H9+?XJj^tZ(w7jx=1u zQEB)IQGo=2G%>y7_bi(PBmkdqQ3Jjpwr$^odv$=6okEO5+XTp*xCiMbd1=u-LwJyf z36Lp;O$33F_B`U>cmrWH)HebCdUUXO;naeNL=|kPisH8CR$=`CAN*9KqkE7^1`7q* zh(+v9v&Z^(%PXBRe#FiHd)v)Rj^;G@zRq<_0VGY4Ykqc9_h*+a|6iZ#I73yCC7zmG z-3i@Td0R(LmIn*w&%q`0=3ro-o^VoU0s_Nm5UP*rANO&B+L(X|PvYnTi&s>b$riE0E!EfIP?_1VE}PgW{vlyo{$_d=sS=m2qp>98pc)C=OC?p})-x zdvv&NskiQY_gw*`f}-qnoOS9L{NeZijojQ0$1XssF;rC6;E5%#;-M#&psJ-MF)V#V z04W|ahboiG8;<%$)((JV&?7|`SWuXijZ4ly9amj;0Xk9#nG~MC+5Zt8Jg5!&+LtO(jUp;cIUN{j#BnlMQsrb{YYw^*JCNxq8s!g>Fu0_=xHbw1Gklr|R z{K(t>{+Bx+I_h)bdpO~-1(2Gi{PemTdp*1Ky}SLIeTD{wy@#G6{U~ft3q19y$>Om%6RjVOL>Ct>g0BNzHONT7Xn>7i) z{jXmlCp%m8{X5299AZ^tAi1|CFTKScM%BIy7v{xIt68v$P(a;-kNv;ZP1u(t_#_`PDh@kJFX zd@+`&6VoQybY+iJvs*N+TfW;jbKM5R$|(}Kl5`sI1vtb?09n;o&!tL-%t4YkL)UEl{G5pi072>4>}v=MfRrPVm}TaE zp_)}uwJy2tz|0B5Zhhq5d+t33mdGJ5@rbAGA_|{zk)qYwGO1hjj zx+|7QXa&$QKL^)eb1~+fF%?}4^F&vBV%mkg2-og|EnEkS8s-p9YZA;8eGn zIH*)>1XQ;KvG|>JSoFH7n+L!7U?EoBgPe!6&N%J+@gTYKg=)oA)HXKbt#?;o@sd~Y z*%wm#Y#N()C>6Z^G(p~4%S39A{gx?>7q%i0=>RDoA00tkx6^7x zuTJ^6>$YEG-00zK*tAw`I>>C1wYXki0F^b3XlRMb9INcmAw#N(RGZX;$1GNvgZ#%M z523oT0U>H0VE*`4IY?w%#O<*}S}6Imtr|sGtQJ-4+`%1~IsQKY zc{KN=cAtv?@@F^R+O7gsr~m*U07*naRC~$GZ{8h9xqp5a0I49|;lS|zeQ?*UzrpZf z1Ef%QdpGoUPv>v_K;c2EX!f>X&H7Dv{Fzs@#g-~AA2(LdV8iKQAg4AbCkeWOgK#~W!7X*-% zjSZr^&S3%MNfIC}qKx#Y1Ed8Z3c=SkGfBr4X-1yX1h*x?@|4v<8(x(Fxr+f(hFDv9 zrDlLk3(Oop{68M#x4ybld;kOFuWs%A{L(l72S{3u8sKr*aLUkuxO&0)ID7Vt@5h5Q zg;YY}D7Nm{%VdwIo_`flU7M0tFYECoZAPg=tnCe_elGw?>M;tk-EK@6F$DMDb32NP za(LWRigbS;i{LOmQvjrfU?_wg`wrk=FD%6ak3NN{RcMeNPaY&ihBDo07&E9J9=ZQ6 z6y#;GVpb|C!-EZ>PTC=Xb5h!=tgdHCx|l}gA_5E(@u4+~RoavY_yZ{3zDEFL0|6xS zv*RD1(u1^NNY^a<{G9PPW5Qr=cSRx^-v&Su=m#PZlvg*RxuFSe)rUMw6Ff?QyS>x| zY-v$BX zbvNGH>**KY{IfUam>yG%5Uae8ZtVMb8I&{rT zLz@K%OzMi=UO_iB+Z8T^~9GK+@V#wXS)dz>IPK39+_!jULtG2q1s{ z>)-W!;g#ioYF6ztOaQ58BU&{wEXc{kRhQ1wescBhTA#b^9(n z@W>;ms;_55g`R~m+6VC)-W!=C$Q_H$?3-4+)Uerz|TI7tEcdT{7=<<)nVS7zhas`rE}$teUH9LmB&f3F@DQ)kGum?S{gfS2!4Cr)tE4PC~P)r zne;7x@V9t+yJ)R%J1(lR@%_GWKl`L3;pFgU4a#yz%Y7yB?!Q4q_p7 z%0C{72T8S^lyRY2frlSKU3~*HLt_k( zI?^T@$Fu`EY$C*Z^Z@ezvG*QuQk~cN@N@69?VT;`vPf!CO|X+5)x{bizM4| z;@D2&IC1`Qoch^`6I-%u%aW{ap^CcbAbJ&jDGLiM+h?b@TfW~p@4ZuY2iOIKXk)K{ z*(vwF=Q+lcquL|m535h$&0P&R zH0MB`H%+(4lG@2g=Jx!^}xz@bzU2FlNLc){#^d6~2}xoI0=#lD`S1MV*k9k-{~S zF;$)<-ec68YRCMv0mu-Z`)~(-_trYpGILxpLAh>q~FrMEzHfvj0v~n zXFvG?I^~nNyxG06gEMDns;UZsq{jJ1Unqi_1{Yeq0VoD3DW)9M_Hbtcq>ljd$Wi>} zsi#{3q%jm%#e+-^kcuk7;|Zdst_hw%h?)F3k`DzoFH+@1t+cRO*mayPv7r%;%a#exFF zf{T&fjD_ENgkr75FFY8n0n!`7^B?TMGjFZM*(R?zNtz(hhG}#N-Xm-g)p zl9~pO*Ne}$?!?c2@oVfkd;(!+XBv@`gpa=Z-utC`khJ+zY!>wIUXF*C%)>VxS^}HR z!o5m`lwk)SM&}r^5wz9G3nh|HeTx?jP7e#5C(7z214!Br0C|vK9InJuPd~*yIVtaJ zu5z*U4YHJRiC4>mr1Fk%SVMiI3ysYl1S1M;h#*(?BG2l9T@E6oTClrD#XrBc6}xM~ z@T*3t3tw}>m_`H784jyDtVid%`BTRI!}ovqz2`bO^4H|cuPcD0CH4L9|9#mj@4WXn zjbZx|RkGw70BPJuTYz-PK%cI~_|9YZnjyCCfo33kN2d+av(_!iPKX%$sX*+5kx5KwT^cIS}7`aLHH9VokiiU?|KDj9+-| z9sKc?Sul?; z4Inix^&s{rg8hL$8S9T_)FI$;&t$%uDd<|;~)RL;bg20)_k&z^50);PgVN50{BkuEfV1%=PJXc+awLd?tPB+7 zf&Y$06fn0NFO^dOnktEIix#%fFoE%H8N~R`e_{ z!~OTn!eh%8A>U}WYkH7h&Np{(w_e7}nXIE}aJIOxVas;>{m=djr|OyzROn!n?Cz3; z#xLXh+xOP)kOYuV6F`y&8KVI5wYBobIFDzwVz8Nm94~|d zs0hC;KqmA2&v#HaM?vIPNk*@s$&E&*2N4P*07!!$d6pJrTm9U=%Nerc!~HJ&`&+v? z|7Zs4xQRd;faHD!dZ$cBWcrvP#~)fS;~%EoHRrAN&H1(cs*bLoul#O)`O9DCt=_b0 z;o4m%|JJWarJ63;69BT+9a(i9h1r?7Z{Bn~v~(T@^zA8hHB|*3PdzGkY=Gu>!y)U) z&&ft^ZZ;e#Hpr4L)OFhSx4C#T9}^%A_9NwbntWmW>65*9>Wx)6-Q?yFt9T>>NbwZ{ zAO|o&E}S#HW2zuu@=S%oVH`bi3cr8xb@n8E;Yb_*u`R!kE~=ep`ea=QSU~zpE?Kjq zh|CA1=@ZA|(Pj7GjaT`Z zNkYjNUmqgyqJb(C3oV=IN)<(9)6skmA~;Rze06Qf*cY>XMDesm$YI0NI{1 zC4Z4o!Ko25SB1+P;PRDVSYv?{i>@I{_95TWf;3A25m<26YsCxetMUAXQ)uu}S5|S@ zV2)jDfYc?B%v_g(^x(3&(|7&NUp)SgnYp=ZzGM@0RX)BW>*uOm(8a#w=+UE&KtLHd zY0<;Kbp`c4sxGA(N>e7@B-|4jx~vojri>ebuRX8;QznjPh8qc%2YgPP_+ksfEp^aB zLD(!7t+Xbud4QC376!0M7W6FZjBh-2FCMseF7mQ7#Pr>O z07B0!9?+{h9$c~j4=kCF%=8pC;sV|} z{)h)i4zE(ANzu4ZWRp99rWOwZfndT1pAR5)MTeIF@<=6q^UQDCc#!72G_X#5^MaU>EoxXi;UXg@FdX#Z z+=;z#o<0gaC5p$dv;_CeopDWhkaT+lh;>cPSpMFp_|-Gdp{_AbPRnq<+6JWCX}Ye4 z2PqRc$|%mt#-cehuXE=)s=fgA}Bw{YNVC^zVO%##SNL^8q9s%!hQz#S;riN#_axB!$+Yv-j!?DrjhG zK}(Ap)JB)wK}ioI6#*1je8{o}*fVbkTd?k!A3yukI-ChO5M~vjxQDQ=aZeFIs#?#& zjOInNrhN3XfBMP4N|JQs+Jn1}U(xjlkaA^ZW!|(!4?k7!(MLu!6l%JjVsb*`XsFR6 z4|xeixmlQh*Cc%7p?fg6Z+FPL1SK4SyZ#u?9@z!O=V#EQqHwECMpkAziV6#0x3n_o z=LN`Cgq}FWHUaXLRr~RqH&)?PgA0mg)()OO#L56Uv_F${t~G$<+tYLeBM}^{K7)Vz z@84nd#w}=Rak0>`=|5l704YgGx7jgrKtKG&Hy*^a$zze0?%>najSP_7C|6ZcRecWs z^Sc-D-e>DjQ{Tu%>k<`A$K%0)BS-Pu-~R#i z>_J`}AX9A?4zWJ5U;>9&vodTPVwK3_i%x;jPb=OGCD@U3b_OxeSdGFCCUue7r{x)TS{eC8Nbe+wiiqV7$yz-F}| zJv{|knOR6nOM}g3)=8Qm*%}~QgQwW26zgyHhVjbkO9aSerU!ZL0i1&;Inlb z@$#SF#kM^M(Bkv+^QJeZMh)#(3y=aHWjHKWbS*BxL-#Jk{MpmcwY)PNc8h8KuK2pW z7C(^kku5F{KHstvuP$GKb(?me(d~vx#@|Q*#OCd*14!DZ#H=LVK&Hcr+XwaM(CVa# zW4I}@#SlBXRDfh#&+0jvXm7>0Pb4iF)YH)$R8ZUG=8}jgweCUyNqd6yo;?&|J%-=1 z2PpuOA}TR@UNVvn0c0+om_LC-tXb&Q20ecA*tvq{{*1TYbos1KeEutV_cO2b}oL`+ITPPt}oT&)0I0;?iOGkd{hMx;F{p1ZJg{g1rcNG@&Yg>3vk^LqgBS-`P0z7|9wY%HfuyNC z#P_ai2nEA%x&o+o`V6T#!??5)AP*cl&LP$&u7lJP>Q2wkVl@GBFtRd8GLP=euxmzc z-jp0Lx0Q*PBybQ8tML0H@OXplHIfhj&1am*9dUG#0`eaH$gu|CkRk}EI`*Co;Mvtx zSh1@HKHbLqR-obe08&SqRo6%KDyw3sT=*W^Ap-$h+}mbRV4 zS6f?~e*ZVW`_S&gH4nQ3p@G!rR^t};tpJjym*cM*QtVdr>DmQL=iY@UAGsgtsX{3w z9PpyH>JVJ#s-XH^kSRZClxT=X%7D#oM`}t6Qd8+C6?W=1N1+cgyryC0$cNZurU(FS zyl`0I4fg8V{rJPX>v5*p(@v6(1-Bajxo9o{q(NQ31_6@#4w4MrnRE46wQdvMUhxUG z?cN7>Ajpvz_Db4rw06$+<-d#$FhsaYvsuu+v;^~K&%}Z`Gtska7o?^-I7DaK)a!Or zT*@$UghN4Nqmxy3-hA(4tlqR8O>Qr5rI?lbY5pt z_03Ju5bK3JNUG}`P@03U&mD_d;|3u&%MPp60xLD{;wX%f-#5d^Mktj4FcMba_XiO0 zN8k@A2nHiiRMTq}qV-%=1|3!?$dvrZxB8JLhneYG=Lc3EY{JtY?#JN>wnC6cKNDroojTBQ=w;T z965;IlJOT2GNB(*ODV|Cz?9pE<450l418xl*or^D`ysaO-j5cy3yRr) zkn7ycu+7!kK{SIFiG;|l=v7gMxzq2&;stY2(WL|qmKPM)6Ej>_BHI=p|GI{^nXwG1 zIG#iVw(Qu0mzS@=+O50LvThe4bd#(xYfB=m40wjGV0VHX$KJ)A! zQP&g$NOSCxd5|Pl-mf?t56&2lsiXQLC&SMA(NuzFu~;D+4K+v~g`&VLsIDm7jG02J zK5u{zqbxT?d0@^RyJtDS9Ju= z)5oC&Tuk?2QcfG80FkHQT!pR+kYs=)Azx!b5y5|mUxfSaxf`j()DsB#rPC!kwD_VaSy6MviY;y*HtpDpm;d|@ zw(s7Ha}AA9*&PvuGv>)OX&R+NU*7h`2}dMd7}>ncboB38fmzchxvec^$+q^EL4Z0m=(Oa3nj2V|z$FnmBS{Kr532m|}{g2QfwrbZBGX+*=x z!*JG|gsew67uov3A=Fk+ipmeMVd8Co`8uLiyMqco+;sx4uij|@C67%cceogT)I7>ax5-h~O{Mk6aDjrbQ)P~!pZ zpu=a9I;aV5FccEZXNR40Vircp__Ckm2K{22D4AEw0Hvx3g(K`a(7}wt|0K{YzSbCw zOWfJCzJuWi&eqmr#fPi#r&pJAZkd?M5t5}NBTsW@3Ot(RD|6eOZ;s-3CBKF)Fm7B7 zQYaa4;*6)+Z7AzhfIG&Fz~cFLVfe5iod4%AqcL5{zKT9Ec8s|22%D@`5qUH|m&M9O zT0~K0G`0BA*yKV`i5TnEFeY&xb^N#R{OB5dem{<%sKQ5|eu}Nzw;@3D)rwb>%!4FP zu}?`h?wxWQCJgFYzb`mK)*K z(8bpF_44~m+(y^N?diJic=z28hX3?e&pveE#M#*zq+(51lUbt#r-F*Z3vx3sbK>pz z`B>(YhyVZ}07*naRNsFeopQ6-V^l+axaz9WaOx=hEscV#(;9A*vB#1K0`p=6pMu$_};r<4!-r+L&(fXHG)t=K{Mt{UVBq1 zYRfdZeSU1)xd(sz)2rCHbvK-DKX)f5LrXmgV;)J|fuubi3ESDID-%5h*`UFysZ7Qh zI;1}q&Yz8$Q|~}|=MoNu3!C1`jCKGZ$?VX5`FwsmbGE!O8 zAr@u2G!L@1A4>lwZ^z~G;7H{$)Ya7^J39+KdvrtRk|NGkF*vsuAuh0u2_$@>Fm~+v z0?)trD%Ne@j)rCzB3j&>@j$k7-6egQ&?7ZRhw7CDQ`Lr%w++JLd2=w0$T&s$%;bz6 zbH%}`tp;kxg#ze4X)bvu85{!gm?VmTigta(w)RkBjy2AEC`FHA`JoL zTl~nj2Vt?OBv`NSs}14Vl}GT-)>H7PDYQ2YUAeZ|5I)uz_D+^1y?bH0@2B7U+NQB% zM*Xg$d#`l>ns1cwYSgQ`HsG$~S3zOc-Me=eJo$rvy652O+K1gCbqEmEW)-U^79WUu z3^e-`*Do*5#b18?K`fkgCpzV1LRP~F2fb*nJB_-kN+^C0WKl2_eQ-Hen@eqLDB_J9 z?LSvQ!Mock@#ebSXmE?Za)Qir9)RS9NZt^TnVO0r{rlqKrHim=!3;R87G|LdG3Is} zsE!Zs6?zASeRKpuVbnG>VcqB3@%|^PuxrnLG&Htw5wk`$snmfX&SN)u!sp?#8^%(A z0Ra(nsx)d7rXwpo1;YpT!<@UOV&b^b=u%dKwA2&^5Y8(nyR&uxq-lJ}d#gHKgB2gG z!iz8c8TAcr=vE6#3iB~{=ABqDcLoOZ?E$-$&f#={mkN-kK^1jxp{j!qp4qN1V@e@ z#V4PAiVd4KA`lLXwN1gzRspG`9wY-~PMilRB<~Uc(g;vQduJIZhbTcX0X79lQbf$I z2a#j(qtG6K!=fMp8K*sp{`}fXys_mpPC8YnI#J~fA44!^6AYk4o+D|m%0O5W4Y5&KWG$@<{l-SGV<9>K&BgQdL86hMt2NCuCr4%KFn9Orc+kPssPZT4gLDM4~ zCdy1pLwQ*lZo6$LCX5})098_0fSjyMgNPIJHqGMmgtJ9E0FthYJh6T%2mPF++CVtf^SMa5nn)?Vf1d&EdIds93zf^pVK0dVK-xKX?Sc`t9@B zvg-hvoGuQrlCVKeW*UYL=#9k-=kQOu-O+Bx?tEv3=twgWM1kAmMQwc}DvwoR+s?h% zvTZkx9wZi}LWEswA>{~0g*ibdi&a>+EG#O9ArJ_wsc zAemx?-m`N~@Yg^8;l}<02K{eALBSRP&KrfjYEII%?tWaFhG+mDKg1mP$RVJ&=*&;C^`K)x;+A+L+dOfHbd&?wiAeZXasv>T%|5Eoy4(apH6h_8&Zi z)2Gj(si7Hue-M#~afmSQkoK+w2A#~zEEE@aLXYlU(6?7NbS*DKr-FPG7Z-5}Kvq@; ztR&GDceoMJ*p82lkZKm>2e;RU&D(b4*_W1M#V2dH=`eM#XVauf+;n?j-yXPc(cM_Q zU=|AUviY5%Nvej_o)`RgCxa3X%D(i z(}SeoaQq~Q}T!vj1xDS_jqa6;-Zjs^d$vC-F@WL?64#k>Y8kY6p>p|YT9f$+7^X5S-AVo3AlgmGz{-uj#N1eMEnSQ zU1+YagS(|gh!jW7N0Jsdt*lXu%?J)h5kS7ZpVi$LVRG77C&uDh=d1A;_3NW zS(rWT4m`MYJ_h&cAvzcswlHQQF3~c62~(HMp(Xo3;X4X*5m@>{A?`0(U40t$b&YU3 zUGRDRAVWpJCxgc0DT56Nc@`O&S?JU$51oq(+2bh4rw%MOSSb9=`M<>A^LdUi?Yd(V zAgKtO!o+XB_bGn!hnKj63FT19rVt>pagx9u-Kg6JV)6Xhm_B6!iVCu$!V~7EYg_0N zGxp}eg1j=XH;98rj^nKlKEvA|e2P=&>f&k>h37-LyG(}zqXzcJPk#74j2<;Wgp)60 z86=%IBOJ-|rm6@8!|ch{oU6r|Gc{;#YJtb=Ly*~@5hnG}HQ20HSZy|>q}Y+3o{rp{ zY!r6NLrGBqiV6ylot4S2VK%ry!f6|ehh|rR1_KLF5oP+G#!{GzWETI9RX0ys8r0 zs#?$z&?HSaJ=HiZ&4e$-gC z(4nIL`@>6jezJDUBc~c%!&F!^2_O^C?Yzl&Nk+{Pl>t~Jly=I)?8&3CV9IC=?Ouc| zyAD|iA{_9++1LoL*UN?QM!Da4Pn7%xCX3PVJm>`K^hfa4B?F{!n%4lUB%>%l8w=;o zz|w`Y(7#uAq@_}mXR(RIe!H}sSG&;S3crZKz^FT;8cL1ATZ#%LqVNwZfEdhj+T5fj zBwKAP`$vpX@+Qf!5-H|F8mgCWQbnkf3=&;S_1Rjy_}V-8zu&zGCn?St0LkGwV{B}) z#8QU04eXCOcio8zqlclqtg|ss&F82( zQ-hFhidYz5#v~UKi?(B6_pbQfHy_4=c~fDxTaCikH=JFyDnl}ZJaKtD( zPz~~n9zC>}b4GtMp@=+u*&r4fJF~6Vm=LHpZ~D?A0Y*B_1jg8(BHu~?8Br+js-Vf` zLt_gy4;B|@_COS2OcT{4zUOnbwOGA&4c2ek$bYBW(Wv%tH2-Yq#G12giiyMlB<)}- z^XS_-8;gmgGf;$B+YONPSq3;-pddw#Aj=l!pHwSdla8jKjvXgj^p`$6gw019&=}Mu zA`ppkHvWm7)LH=~{njc$FU`#e&l*4U%zyvKzr1NrPk$aj)s5&q-Y@`3H*(;>0sDs^ zuI#;e@4iKAckaK(=~a3H8YMAUqcwgVit| z)DR+}Aa|*t@KQKTr{}mzH)8_{7F^=$Zs)AdI&*AHnkVtwOBr@*qviDZ(nW zXDUhyao@tbFmL9a=+mPc(itSp`@DVtGHSk=0-vxqV~o7$Dcq!HnBljJyGSupcIiM7 z50Ix$*WiU$-eQ1s2SaQK$?Hkf*rYjd|z8?koXI;>o?3N`h$hNN3u?O=ij z8Gm!exFj?`keGl+A=V|6smy}_QV`49<3aKPS*Hrd2-4&bvh5LM*%jEWqTN-!PsPqE zCthEFOkcP699$7d5sAQ2q!6H+x?!=sV%95j0Ea`X4s}$&ZjFyFzH7@pOYeUgz$O5` z8;Q9ZZz(QrVJ_XST-A3PBIcPNtXenp-A_JyWaEw_b95kE=ZteAatYzN*0-*~YSGat zI~}73_tfvX^LA-m?-F#*B-R$4j6?8ween3g+=-i_G_6%8VgPAq6PN(0OKA3o*n?c& zItQ5)Ad?sce#%rD(P6jf=w4okd*{!>yqVL`yL$y2Md3+ahtq1>QB!Nu90GId_)k$E zN_i6V9>v?vf4`UGIhqSN9w1MjJ%^WGeVYNY$roTjYbIhuuft@J3bRH)nVpu3f&F@8 z^oSwo)3YneON)@7mxJ`QbPhc-Fa`o}c|15%Q;$POPGHyGeb|4Xl0&-eS;G?75hW3h zX*AMpHVp0C8-MecPvFi;qu7It)p~x3TQOnYOxTP+mY5k;GeIF{B!0#&JV#d$AdOl< z8gJpi38_d98B^_}0(e6znp}Psx)2my!?QOo*t{C@9GjY&v1#)byt`rr>YEx^{3Dhc zG~N*97_=_SFvhAiKw1PzXGydUQlwxA#LO}e{xiN|kP&tuuhFJQkZKj+m}!f^YSj@U z!jVhWw;gN3yIZR8>8{i8X*NkPb4A&c07y%;YoK}GX00+=o>Z%>59rp}d*7U?`~K>$ zzVkW&l9j8!(TF)WBtY_V({*{nh7I}K_wJqY%coxXUb8#UF9In;r`8;7N5y94b78!m z0Phy@L+)l~id7%btpxW?yB#xz^^i)ktVoems7e?Ce;7W0h?DnWO@c!8O@@>(pYx2x zCQP{aOfqN9{xIGo50U}$VmZjz#*Fu{#10YOA&EEB$*^Zd7c8E87Z%K!f$kNhppN9C zQ2qLPB;K)UOcTK`>ZkF(7WXI=UXtJMl>kTa9pZ#dhV)!rBbLAO0e=1amrzyH0G+&$ z_*zU(2*(+913igpYqv_s$x25>X=n84R)NyeQe%uAu=Zt54%d)zr)gIX6!$WBSc_z^?!Z~y$a=-sm{P9^9|UI&H}ow>ha-2{@s(DswK9$T@WAB5%+a*5LGp(c}ptMCp{co~>qiDfd@Y6f`z9 zWBbk>c=h!^!|CyGPBx(&nwPLy!e!idYgI18CdJPXwc+bql8wa-klk53nAf^7e8QTD zkT8D*tK(>_t(qc*xu;`piVlY*0@4fjYZ9uRs=nrnI=sEH61%FL@M(65j$Fcp7c%JL z$iizZVJn&*q+OO!mX{fsIbnF!Up#i-iavvfy-0z(8%31-e7ofOv!oZ<@1)Us@ZiDD zyLRna@V$ThRN_y>0;6#WbJP8ZGitOR9TrJ1%1XhM;k~3EJU9nkG61{g zgGC8LR}}a|3S2>rH4GK%)n?G#S;IvlB?<$|B&rS5&=L$|`R9l6=XHB84v_7#X#(o0 zp);`o7tfoGW%tfUX<;7Hj8X|im)@evoVe69L$&TTq;pjoEjO!OwsGBjo31 zUGwvq4EDrDi{B*1K`w6*v+9wNV`OmT!;Z?0h?Pi$Jt*3~9)ARl?jW3=kf>XX(xC*v z(Uq~Vdvg=EZrhGmUV9bIt`-IvQOeQLBUx*&l0vL<6d;+!Y7@jIQxlr{fly-r3KP?x zGE|m}%eJVW0X?k?YoYiB;kADupW=WE~*Ze}e%nQ7{m3Nt6{$;#fgj!*5Zr)q* zx<26qHO@$YKoQPyGh2*d$rca9E__-8u)h}lT7SkbM# z6nEb>1&`dn5Is5T zLyPThvdGB~Babi?QsMLjIJ_FsD4b0|q8P&{=7BuU`i6RZzIhW?eDDFz)z`6XqKIXi zbJY=(nh1~tM0DWo(>WW9rrd_HgL|+CNf9BL0FnPEx{g>VlqxC6v}wq)t4Os(xW6Nz zeHd0Wh9rIE?rOZd;RJRbbD}Ar^WD(#D?)e0Tf?lwX61%9r)fUq>r^jp(FgbL;$1v< z>XxrPxb)TZ%*>B(^w6rge>yUo*ZQ7|ULS$v$&)7?8#iv5{`3F+?GvY)+`|GIax`7G zNE)S+CHlj7eS-9IB8iLGT@rQG(9tzN6Qlc;W9Fz{7}>iB1?do7Kj?HyZE>h;M?^B#rzgl=5|tub=y(AP5|kO6AHL2fE0-cTFBJOtD>w3cTJgqZ$9z>%1euR zvoYoSIt;nCcd=bffMmO(Y1|z8)72aB@Bi}*4j(%MRVFD1gFwV2nk3xm_TEs!>yiVc zkb4*3A!|DF(=sq~(gghV_r8vPeY-M4)Q|?gq;I_%Z@O9lY1TT5(hk-bVs@<{m&y#3 zAw}h;!cLcu+eA?_D6$W#S#D*NC7rD~i}mZ*W6j#NI9pdI+E?)u#e-ujlNwFs#B1}$ znO`I9YS!ygDHj3ck|{&E%p=t%L`}%c)wK{DvdRMH>DDmPEFst}DlD|-h%}^2x<|2K z$I&LdxA_FN9cjSn#vnXlO;Y%%Zpb^*C35&Up0S#^)&w{LsTN7=Q&ALNy6~a_P)ubqGNbmK^GNb3Y$raIR+l8&)( zh0RIgO^Qurmv!W&+tH&a8zXvk#)N_8xUG933Nvl6t6@kgwU{9$95Kcu2Fb8S`inBc zijF341aEFXj@Q=jL2VQujjy~!DKcK)hR`xMKy_HqrKkYY?ihowExQkWdv=9`imuH# zs~PdTfoA<`10)$-e=vlDM~>n7SKq?3&o4)WqXnWqEg=tO7N{mkDYwtCB=>qPX3m_u zxmz%#cP~7A-vTVX_ione<@Q~dt`pF{OS{ZhT@8TbwsY|!-o{qv@($t#=p+rN!b{9y zj~{Mt5Gr>Fj_Wu>T}~7QCr_Tl>hQf#iz50K=62}0n70aEY=gy=)R z&YAiHQwCwukgmwG=@O9#Ef!U`S~LboheeZYvI2|IlQ^PV^(LQ={imE*xu+W2D(g{I z=ZDj$Agq!AfKc-hIZ+EK;ZQLsuh-}!&V!_Elb8yC;6IS%;)8`|b z%|^W*{g*lY*Uj5+AXC|P%qbsv_Uzf>XI^-5>PIU#Ev`IWH_97Qvq|DqCxJv05+w>g z@WwF4Ls&GiO~i6xy-#S|I;k)#6+KIG(YLGs1G*ODw(cb;&v78jp~Eh#tO-h#e1#P_ zC{#l%Rt>LgJcj32?LkA?FJ;LX02xiOQ(>@G)Je{mJRbKio`*qw`yeZw z1kU58+W6~@F!}M=)AoKY{M$z7GmL?8F*;fBJ}Q2&NZReOWry8xgp`C+R?${*Hb8!x3jUw zOer?@A}McY5k>J-^GIZ!S5TgptL2%wIcfGKO@?z&Bm znlcgdXHUndAp?=0Ly~942EKs+vZEt*rCv`;F=x*;;Jpu5;psoT$bSz~6v6N!`K)E` zE+TPVk%tfkkcfS$Yure9=A`j>@cu;@H*O^Cc9HkKUI6ln3`vp?iAu?-I)kJsg3o>& z1EdAiri>yx{-9`P?)IDQsD$@ThgXu1J9PLE*00}y9XofTp}C1ucRa@erxKeD2qvHb zcmz*0PZX+^L5^u#fE0?t@sCt1FuYqPzCHIgea0|S^@^~Gppp!4SVz4pfK#DZuYq~L#iA`rT=;h)xk1(VHIe0dEoMizY9ns z0*}i591k5if>oa9jv{wmFiuiWate7PpR4$a^khPv=x&FJSPdM=x-+toV^z`)iZ8qDXo6U1H$Lpp5 zNCPCTM~@yYfA#gZ?p*QVnuRB7oWtCzlC8jIl|@iK$(brq%RU|;qYF;-SrQvVl3EXYl>AwMe}#rZkN$jrdWW*@d6ItiyQEc!u4bArhYsMyrT%gnG&du%(gTZz0Q zYsgMd#mK?^v0(OeOr9_nor{aOyT$cbE7_h~zgn+hJ|VMO74B;B$LC+iso<9i=|h{J~uBM=B0;@|NS zm1g`rK1CwHkv=I^)6hxPQDU*-jHaQ+BBQl3bTWXX`OV9)>OD%bk)P#&5(#mWahETI zCT{?)po)MZ>aSTi#{hiu$}C37cWZ!bb=c-|N`B7ZFpv;lhTWp|Dl72KnL6gg4}bJm zAE%_)UIXmM7~f;fO|RA#yC%NprrJuBldP($DqXvJ)1()ke`Wr`+LnRM!EiAkr)Uz3 zctyuU1RbIv7Ja_$iHzQ5mJ`s4&@5dSr+rR#vrMRtFe&nI<5Y`bG>s7Hd03_dkSTUM z)Aoq~)Z+29_H>gkBI9~Y`Qdbj75#d3!`(BdV)l$X(XC5oqZ7zYHT_p~!?Cx4lAQnm zAOJ~3K~!O4ITNa-Q*h$s8NBkw3Vih08XP-W4SzTsZ3Io_KbP|`O)(W~=cT1!M87_G z5S?$=Y zDL9Z~M~GS{#BI4`0BIKf%T$!X`T&f9tcXvXBb7u`$*vfTTyZ>)DJxNr%>)n9_=hMr zi&l5A|0oKG zP1yJ$^cBS;NyB8LKFKaw(7CVxg9r43BgKIaKU)o7ILz-M2AgQZ(=;vp$HFMNS86x|YKv(`5>V*8Hm z`1sRLQGKQwK~qU58Oz*6I^N*o2t&tXo2H>qiC}m{#psC4Do5|j8n&m~5s(vmxbQpL zd^VM45kr>bMMOB5Fp=&>)Y}T1Ay$)EKYUm-l)w_06CzK_c^s0e6QYR1BE>vTO)tz! zQ>Kp}-u&Rb3-(T$Jeg`7>4(}^k+Hd{A2%I9@`BQJxuKyUt*NQ0+b5r`TJ*oqy)pY- zv!_QyM>^Nwa;iFM2C)6(75_@p4w`-75|&&XKpO8M0tRh(n`}kz@-CQv*A(>X)g8~h z`W80r+QW^9iH%3a%{rC!Uaxi+>5Pa+5`!II+0PZjmb3kHDwwroaT;k1> zTv?0TgZ&4OV#UX+@X@EMaJH@K(J9{ojkH@$tYi<=v{j~`D88KP8;PY#0B7gMH;M_zso>~{NQ^?baB;%HdOz zhx7!3i0C@b)i*)~5n5z~!V32xU9({WRQEacz_hkZhad6s5VQ zAtEllXu(eZC8nwss$QI(5}r3>V$H(4XMH|&`0y1O85tx#PWq}hMV;ft7Iga!{>47& zI{Q6=DczgA^h(7*RXB(J|=^RGiEy;MvpGqd?cQom63r#eS2cztf`nk z=S~#nWy8kGJGTI`9iw^vmlzUY{y-S#8k%sp@&q<*-Gz@oU5itvP9Yf4n9ZomqL80U z1xVc`s<2C)LCC9MiZzOIGcjWD08E`c0V9SFL6lPh5G90Y{k|8~=M8r54 zwd!Na_{_^Bai^Q9oEV6<0Z6JNGgyUY!&qajNs^u>>w2%!yui1<_P~(|V{czsl%Kyk zudr~x0gh&<>pEW{mw)-~GxnGNJ=f$XkeC3~T7U7y7Zs~FY?-iT-G&+a4xbp-=<;+5 zYu40=L?CI_Mz*u#wAw9)`?q#KzF?kG@%%6=u-7AplaEOMrw;mlEfhgHZ zlztw>}w0J^}NEu0z!gE(O1UZJcsBSNekay4_0)P{^Y zb&$%8M&KCX&}yU0$DSiGSl4abh%H;U<9JmS++MekpfevVWX>aLF66^w{P&^aRb28Zmac-5j}cSZ^VCQd@vL-|lO@$1eexw9y-yhC8TC*vMtq29>ofXqZZM~A@YYrw^eL|8GmaRg2ncs36M6~f?i!p z^{?GG505>(ShCw~Xmq-;e$x&-_sUz?wf_*@K5E)4WkZQ6ouyLRKuxf%pQL9UTBJ}fE_ za{kk&*b!E!$W%4-ifEXiXc!SuP#RX?&@^~tEB2(=@tUq+e`X3o7E3G6KwE%p@0`Q{ zQiONe%j8Qk?0`tlis&!*kd?IjtklTRzTG`j$B#NQ>#k{=%F4>tW@KdS1yFM{);P9j ztZ&&p)9C2B)#LHx)SNoi^`n)mhppeTbM%?|#sNpG>v{ykO1i2`Rtnna#<5)(LR#Q) zbw`}*i#=L3SBrK|O=i>3NEk$~IibUZbr^|~ESFXqF?|g_| z`wzqEAu2sNt^o0I>ycLPl46 zc2KL=v~K#$<7XV6m?ptx1{!Pk(p<8)Lx$F3ft6a7Su9a6-drTf77NeGO|W~-v18L8 zSFS-+6VahVc1jy-vIDy+ z!LXQ2`KaP}T-!H#pZ`2GHZqlXUlU9)!e$d#Y(8hfs`zP!%q&2#z!*}96ZGN_wlIPbN41*{8~XL=hC3&W#?(pUF=Rkr zWM`ytUqQ1!y!hC5efY({{w9A#^gI*qq9n;b-OR%j4~|hyRpUS*_`O0YM}VggA*Y8z zVhtonE?E&FF#ul>r|X+>@YqRg-@OMrckROA%1Y7T*gU|94$7^Jf%(sPIXDXG>Tu{9 za@7cWXd1>U8it2e6o(^7ixA6Cf+_>&Y!<9bwc$Ohj8l#@gemvjdO|xGT@rRiNDW5A zRz@Rrvz$fJ6$+)Q1v#0KUR_H)-OGxcw+-xbYQg+D+e=DHKL1OK~SGTQCdX{n}C#8#DF{^V%et02z6?Sr|QHC>G6|g&}==p<7uoNFS0K%nFaC1E=1b*}C7l z_sbrE_~L)^6q!83>Q!-SP~6al4voSi7kxE>P&k6HB5@0=qt!LobMP=WZQqHFn>QmE z3WKBqMK44{H|~OG*qAR*Ad~_Hg<1pyH5KDD9Rqw}NukpGW}_#Mcnt$&%(ieD2xOhQFgR=$y&xw&QdV5h(zknA%{}wx zR8F3J$04iLdcXk2Q#3rcfU$kc^A;L_~k*hXr8d~QH zbXH}1nxZ1p<@RLK-e5@p$s$pGB2_X`hMfLOxq!rhCY6;oLm&5q07#20>!qFYaPQsI z@tsGPqDxsPewUe#p%ZhH(~UKsZ^P^FevFOV_n^t`ZNqKlZa7gr#-t|#vEd}5e@jS9 zwWFf67&9hKz~Z@gp=)UovNO_Qx7kGaFFp#@zIAr%RkucnegmGf~r5Q-?Mu5;q>@zYqhX)D%k+Jvgp)%-k(Zp4m`7rLxO_9_8iimsuv z9>H*3!Bne+{(&&8o*-mZc#iZ#{|m|zj#?~u*Jj1qG#i|D2b2qYkZk~xIpxN)nmBrR{rwL=yuVA=ifyuN+W~;oa9RwHF`>10 zhbHAFeDN)SZ0DpKUZoA8P#3@7)8FIsc58CF^0#c?(d|Ef@vHtV{zxZ9x27tpY|&+# zB?8G3p%j3w5d%Cb?Z%x+iE$?gX06BH__qK^S(5akyd2D%Iss2UdM^g{>&YQj^T9x@ zYH)dd*!jgly!O@ySn^RKncFpm08EfHL!_n`Nz#9QzYq0|%~<*Q4!pm51NK)Q zgUjnhL?N#+%4UhB3mApW6J(sv7N>y3@^QL~axH{$vWn>`cJ!wv>2;LD6m^y{DF_Kc zNyb5ojMuCdY|Bc8*G6=nSoLCbI1Hb#_3(&lMP{S2tgnqDIFfF$S#?c~s18ZfG99u~ zQIsE?K6$+R{`(f!Wo2id$;`_+XSF%@0N4e9yhX3*b`{tAv4eAQGr#;6Kz4BU^)+j( zm^8`O($eBk6eUen)x4&rrtYDDx8l^P>O8mGoz>*>=5F4;tJAK%2a5f{aHoid6h)IH zN}njYWKkrGLxE)1G~LQEp4cq#-&n9t(wPsGpOuMe<457~hZbY}=%I8zj=~rLq9I_@|pk~qtF9~@BA)iK{a3UB{phm-zX5oL_phvMIzM-cfI-`^Rt%@uqh~8QNlN`Y0 zG%I>4I_zE*%}qh5x;v7xjz@BI&>>E z#V%>8Rn~Qz1$v6rqUEHgsuiUrp*eGAHs|MN*X3kox=PBrIP(e$>unb4bY@1zQL7|X z`xV8NmX_uL5TtbMEnvL7&2g!WaH#et7BEFP}UrDcZx$;7R zaEZ-fFOp?zIv`sVRSi2mzPw*N^~d3dt7`fwnv_G45{<&Jv4=!q8jYKOOUO=3#XI#W(6N@C!;I~_iMfa&X>uKyg*zxF0hoozrkV%7_Dxc8!WD*!T4y3B5o zkdu*)ZsnaZW#TwYpF9EmdUr#1W`1!ljrKOX~!Hj^ zFDGFEai3Z85+$VAtooQC10sv=p0=-luO7!VP4TneC_%GXWyNl_dGiYLNCK`p)n;qS z$;$HB($fhH$xEcBAtCOJb<1PCV*BhCKwg2Ni~~#&84*8rs>>ztj1yngs;bWBEcyBq ziw~Y^oF5EpJpj$#x^*elL6Uwl9V*itDNL4mZ0S5aa^KwsQAU>H8Ga^Nmg>HUfN-v% z5u0}G!Sk=ZjlBns!sGJ`hO05#?Mgxz>N_+%bOPW`C3Y){I~AaRpB}hl+(=BDJP{S8 zMM$;VS)nJse)0+o>#dKtNk$<4pvSk&>{5e_W{v^n9SsRN^Ysx$K_C!9U1Jlr?LC0^ zR<6UrBgb&+Y#qWOQ)enBU2s`44<; z$$^ti54nSp+n^&&OVqNG;sMfOwV_W%86I3T3*Y_b14d|*pp*85v9053wWzp+y4zFP z$GT11@b-tFVbj*#sBdbC(%Rc)GK9FXvE|8FiR>pa2-8zjP*GNlVM7LB)UY9#GGQD_ zJLPgXmKlaOLxJ9xxNdIrk8UljZWjKFI>#s?Mu&k9ceEa5>S#fAq$rjkcNo>_Rs|}lMcC4_;s7_7g{gX7wAwoEbX$4^5Oz4zIz(}?t9-Pu>el}sY*mB^iwWSCgo1!1Z#wg$N{9hWm0Ewb9&(F$Kimj25btw~@pFl{<$RqRq5uEV6{G^fYv>D98BQM`Fy- zzPN2*f0ULKAvHCHL6UziIKJ_8*jv=ttGpDylCO&|-H17d0suLdsB#|8=z}Uktt|gW zQfV>?i-%Etwidhh9mW?2DzRhFejGS@0xcdd!U{Q9t((@FJL7z}D-M|ij--K1M4SSs z=qsz3=!jsfT}3x2$kZv^DnZgDL?Sx8J{2w($=KOg(={RkVM#|w*Qka9XRS7Dbfn@l zyA|~g+Oq_ZNg$HGUe!h1@L& z)SN|1b~YRZg@D~*9KI{VW}m-Tf~i8w*XG-`Nba~o9|;YY822%mq;vd8h1pEt~;>;Mef|H>&VblltRI6b`29# zfU&76N}zIS2bWl=8q|pJ9$VZI`29LmSQ#Kg5)jl4fRur1s~xKxso3anpvB?f3lx1D z6CZ+Xq*2Fq^epZa_}LF1|9JeEk-si3E!`?f5`|K4J-)&bxMgjw^59dxa>IrV1&bd4 z@wc5G?}I8V71TK-?lR)$gt8kF@-s6qd*WF9fTqL+>6HD9q30kgWL?v3An2es;0C%GLmx z3?whmS>YR$wz|xHBHT^tg6PgUHhFmX`yx z8M&Y_9%m^;s>2%y;$Y=*y#4-X_;~d?RGvNyg*&PffhYbwv6C)owI%|jvB}$<(nXsl zGCLU#8~XI@ipdkkV$y^$=+~r)i?8?0$+{Y74+t|J(ZprNS+2ai@^&E{?RY|VNcKUochMTaSx zVPFogTmFPLiG$XvPh3*L;3xo+-a+1Bk*;BoMZ<(t31ib_^suVPqB>-%ZZw-wlUh$$ zL(s3m<5uBvM-WkEL^Ps~Y6xp8x74CmW`2tm`)pRc?XaOTJp(~Xfh6e#8wE%S|37>0 z0cKZqo(sRbpEkW|X4HE}5(0q$Q3R$KQ*4Zl0o%A>JF%~G?Ub8xZ*KC(N&MTnNu28> zwqvI_wu2o9jOh{}A%OsiB7s1tcg>8Zo_==y|L&KLWqtBC+;z zB-URGZR!kwLOS7-<%Z(EDBS>HyB_)mhw$>PnrY(2*C1o0Rtmh?0oYe?tf$>p4_qx10*Q! z*l>J_7d$1+VUQBm-GgsqhoHGr?F7}iZ}Hw^q#({L;vV~M$1FL?(ni_>Ik{*4zcKk~^> ze(YP9UB31{07oZ@IB$D8zGH8k1ju)6C?|fRzP`T1MOVM~lf6UsJvm=p$;~*?+s~Feh$&bWNEIGrXrWgEWYGdKXQ`d4s<|vz*8?k)(65Md@dvL+3W$12iM%*%Ba0sgwL1$tc-o!_J^2m2{1j=)X z<)0JE#DzMkLPT7FD(5GaCJ_lIo6Vtba0E|1`vM+%>`A=2?*KEgv$oAC0uJtncvZ}W zkCmqmub>h{>3^h%V|pH%y&NvoJY3UYU`15JR1F}dV_nwlQ!O$XmVwkY=C);dBIei_ z9`=wgs3;IX!iPrq-8O~wWQQj8l4azX)I>7HM!sX%5OZo ze959e@965Jx)mZxu8pO1=~k za_B|2bogT0xuPiT4Ryf{>(=1wfBd^h)I}9IITYU7iIE@u0NDN_4A+O#)&*tN#c00q zCTMeKLoqDUCn(lGmfB$vGcZ7|;NsYc9&CAjJ05)WalG{EZf>1Lq*{TAasvwSOVZeR zxl4W5P#;nNWaZ)ywIs=aCT3zH9!GmyJ7&+C&LtviSFgab`E$_Hkbq^9jUXkNMK(%$ zvqe|9CXBwL4`%XY6CQ!kW2}hevyCLnkK`XHWGa}cvc8cCsX`B`;5Zl@Nn+1|BY0}_ zR_}nnZID}Uo|u|>{b+olyD|r z=XeAr0rDI?0BWiArQiI`wGVB2`JVkJ`mYaErIm^z!a{qZ5rlg|*m1HxV&bwDOYrrt z{BAIF_Ebd+9N0$=VCaYc3}wqEL^4UZhJk!jJG{lq&~(kUh%Q+Pt)UUn^d&46cgcVg-MxmdYu5f(3;i|Nz5P?w0o)Y)&9Wg_wnrOP-6Pi*od%SWI*oJz(I z^|T})6rdv5r)5@|R8v%#R70va$#fRSPo3g9_tMVYEDat}M)v>!AOJ~3K~#6>cn=0f zlE@VbqEBYg*pjoAz@(BQCRo^{x>KARG9M}1Byw$I02scHI?rK|@numBmn2M_A5qX{ zc&J0bYB`nX4ri@kdE2&wOeT+X(nC58s}lD8QkuK{o9DmGdcUb14W zsKdr1gJd;8vbcE=)ir0>H)k{$1q49 zYBS%~_}u0edo`Ov$%p-{0hB`=FguA-cS_7)0ZWpjBPId&2| zUU?mxpM3$_w!eateSMtwk!>R@$%0jqma;`_X*6ZWh3b9?p_54WY8g5j>+8|o-iB%2 zQ?PL19IRZq6!YfHL`O?A643}uY9JieQ?eH#`T$Of5uAgG8tFwaZ_k}K_ggamI7!esH&eXgQzrrP96f}W_w8%@=qJATfxU;1f6@um z^QifEIY5@LCJIPJG!1h)J8;j3K7h~O`(Z>)9sWQclK1}<&Jz#AI&~BV1$-3hf~q2| znNVjffUMyz!*1QE!8tMU3KdwO}B;wCLawJcs`gCcW4bia=jXW%6%iM3y`con-6`9j&d6m_26(=FFasg|la4`Jx4w zJ98SE8|oNL$@}DXTV*WBbM*LrDL=LpRu#{Hz>L0_e8bX&f{jY~I{JU!c3G_Az~N(f zZO>l*e&EPS>_2=Iy{G$F7Li&!5|LG)fh3fL-8Civkfpf3;Hc7DsV%YYJ81M=%+Y~W zQ5EM$6)dqdOx0DyNzXN)L3`5yvCtbH=s`t1tTIb zD*)EjRP^a8p85YZTOT(K^cX^7&R0bMR@8KqUR14YDhfL4W9~=ZbJ6L~fAI_7?4H*B zPXJCTq5ygFb&f}15+Kjf1K6`?Pu<<0|BdVS9Xa*sWX@gd15t4)QhfD~ejN?zJVdUvU4{ce{wT+y>$?K_Xn z!DcTei;8A57Md6+%D3)8zhF=JXc z+FF`nPzY9)Nm}@gD5n zvkyDp+=HIpeq{0m2E_3FA-7BTjbY$E3`Yv_a4|!Oc^by-!~Aq5;Lwq#uORLh(51Op zY5=RFI#$MX%+>=m1}=1BqY|jIFo9?;UM{pB_#Pa`Mn0cICX<0(a1nS09M?dupd;@R zIF{C@kPr|Mo7YqvG8AkyRctm*jObBb6MhKvY9;1TwQ|hRgZa}sa)0`zPrZ4;rI-F? zQ&ZEU00t)sI=>hTXc8dL(Q`O-=uqT0e*2Fud1=pqk00qDy1|D+O_^m3bW}WsBZ_sV zh1Cld;IIGU4>5CE2XxPd_r|Uu{oqd#Jok)}$fP)26ap02lPMaq(Ru_k=OJ?8TEs8B z5XOw@P#YT&=z=`UrO>yh4T*b+-@ zQv`O^YS!{{FzXo2T@(5oSzg16;DPOTa>>G)t!oFA%`#N zi{Oz^HLPD0ZP`S$Rh)%dQpMq;T~RPkv9UU?;G%?qc?Qr#%vJUpiS$Exb*|0ldSRNA zJpX;bcU=?;1>|yB?kVYe1dfzsjiBHd$PzKfr;4m_eM(PSD!Hb06|Wk=6PAuw%m}iY zSu!L=tMl@}5JP`mEaI(Mx}g7&0J}g$zx%%PpsK3h1~5s`IY)bPt&g1q$aC;8NKI$k zwr!EW`rCh8@%*m6cOK~<_<#?!O;$&gzLiB|Xnk3lin*Or@W;RR>sWW`DkP$2;Psq9 z`r)6!fAr^w_nlHG??Q{7moR}66gbdeYX@9D?Z7hb{>Pj1GmukJ$c>3(Dj)R>t(L%L+)4GOR;A5__~p!mDc{+1qR z@z6?dptzHS8>*rpYME$jZNb8Mv#?^x0<2uN5VNLFLvv#z67d+~u?Q@~;1YroA7XSH zu5y5!TmbTsl~^&tQw!CTR8lr1FcJl@#4IH}R073RCWn!97DrE>#49^r$4k3*WAA|@ zEFzvO*n)>F=U_3a5VBj#B95%4Q;}N?!}1C=pTef(g^@uf3^AWu5Bo%Lf#E5L`aW7z z7jq0B=f`whlF+fhaM2VvFo}Ru#3k|M35eNwWbt!qSLMUC9pth(WV2Z~L{Ou06ppcI z@W^|#O=LZT^N#e}Ffc0%n7PPfz)-QpQ1PT?;E-vdpc08k7=D6wRu-xe-8WDdi`i?I z%{%t5fB)xy9go*j{bS!GLFXK7%42-wGltr~KWIAHHBF{mh+8M@Ms@4)-Is@p0Hc`zeh5Zz)7&CsF4T ziA8FwDkP|^BCSV|Yn_7l#cR>@o@=1bm;p6b2N=}5nHyVGa8pC8mqNC->!bJdAhx}* z9S=P8FrI($WsD^AD7XP!l{SrXY%CA6zMVl1r)Jp{KH>$Ui4dYxpA>zs@k@T zp;Q`2PM%^#rk%U?VA~5X<2tY3LtvHer|qmrpRw!)+t zM{wjJ;(KTgT+CB_T%0g)d1D0g3=L5)55sdnZH(Ddta=r@iI4|O1hs4qnRFI5hkvEA z53^G#L2ANwO=KJcc3^;7Sqa?@kylhbvM)7O%Q<0E?h$y#Fwk#A;PQGB;a~>RirrS^ zA}mvP7R;D>@{fP(b3f{AZhm0qym|W?8X8iQAo+{2s3rmOKkzvaIKKAUYmNW=_kM5L zjy;F2=+6b0U z8~p7rC|W+lprBEg4>njS(;?JuD754$Dhis8OeBJQ*A%p@zZQv$E`dIMCX{HRBvv5V ziPG%lZyZviRzJ3l{=p&ad~FYY`oJUD^vtv9Po||BPYHy`=_nF+&U&27p{sn86Ja)v zxY2#;It&#s6dwso$JEXatXjSlt5z(>lEn)#wYwWljrE9FhR9pW8zE*cOXK~LuYiia zqB810U?|w93euS@j-EP={RfZY<(;o#$E&-r@9+@}r!#PD0uZ5@%H0d#o~y9OBY~9V(4^1y5U3)gDn75=*b+=x z0z$h`Kq{R^fk8I^`>0``-G&w0&*HbC>4>Wr`0qPNcg^`*O4gNgfbEo~h|r*x42Q z*;jrKD_1W@O!wix_A=7{_7h~E-k?NtX~Yauc#%?QncDaeQ1WI(UV$pSNyjizXl#Nq zb3PK6T#nf4HBh^|p_J>nmSdC5F|rzuD@sH91_p8X*eN`;VH2KwdNYomIEj405w&ls zDk$#K?mxTHt^ts~Xx<$5MG*S2B@&0Og4wRIsEI_xK-4r)*HDk?)2CtC(j{22Y#HXv zn8B>rc*JBclk%KGhW3|lDe$9}y%woHF`q9WnNHzkPaoGNzPf8S_Ut`~{^2y|5!3lR zGPx}B6j~?xDLoCJrmhb!pb#hpFJ&&9^Vy@vGz3TjQ$CWr#K=ij46}-vBD_oiwiHs0 z`gyeb4$hCMxU4yb#TL*73Z?ppQOSf)r5$3z(fLKrvYZ&Bz?USPk&$7}Hk{l$PV4Hz>>1NAV`?Yb zTAI*M7e_P_;m~Zzl9fD?;^z6ba5P+H73`q0I|wl)ywA~nwkyMP)yGTXaHXnE*@wwt zB=#l)A?4d_8+`)F(UK zcJIV;e*UIyyKX!+ zl)TRNf|dHogmwJ&@kSU6{z;vYSP)T2K`;jy2g zVX%*lX6mUY3hYHuJ^vJ{oRsGZ*`rip>js?qdic|(LtC^Ik!9y2zHk|o);0vDA-9Z*ak8hErMi3qTk=?BO-Tvvq{Yu0dURUqH5ig{9QR1mIc&Hr>%0~YmAWqFCmFWUqqy#!u)JD zk90PRWGaP`ktBu)`1*&?KQxS?)Cf)w4Pszm7()Xi7)d6P$!1X~*sQKpkdkmzy1|_@ zLi`HHR&MRJuT%V%MyQrdw~&V`zb{Gw2wpSSF$Nx@fsIzh#dJ-oeD!MfX z^?@sZQTAyJVVDZ`D;TD%JM6(OP}xSFzihhzm)g8>nMX*m5v=NRI44+jTooxhih^sv zm16#M9Q~s(D^FuhMN$p0&(iU8L&HwPLRus5vHH$y0c2=uimT?3KPl^2dUjez>!~#> z7d?N|byq!n^NrU(3!rB*FZnKR)?=J{5+L8DG2gv=xA}K}_jhg2?cB5EWPfhm>7nGc zc7O#wd}=SQNo%!w{LcW86tWVPi!lVj%6aqfhrjdRv1avh#Yhb!vv~t@58Q{?fw#Cb zI(d*qZfe-dO6pcte2CP=0A%e)DhVL6 zZjv`T7AeqRXey$HhIqt4A{IeiT>^~_jc9IeLTgJaT3Z^?+EkCG#s<{Y)gcy-v0NVY zxr|s523*6Gq#%vTQ`90+N`!8yVS@~QdCw3ugkU`}PV0OR?OK58rjG>{u-H^F-%v4C*U+STumXn(TB2e? z%tZmlv^>N$@mzL2I6OuL6!Li#@+3;&7W0q%9?9MoW>*Oy`Tc={f}x%Ave-fv;eO z?*~yCml|u_#{o!jv1Z^0Gg_MQTVMDLuD|9Ar8RECesw!C_umI~+ZM!lL-nAu=OnE2 zVz4p{VTJKH36NnSHZ6N1@#Ld1*e$Kl<}HM|_&mfGE`~XEI#g2QF)b(>v0lp@HK~3Q zLLGS>w2{-seBkJD?0kI>cE7O?yWiT2Bgcf&+4<55Jd2%-d*5leho z^ku@7UMH~}4NZrp(|HAfirRhg-N+|S<^_v$dmeXNA>b>}2JeuHi_L&WfJk}5T&}<+ z2~=u9+NGl8B7=0A05Z#-U@DhKHYeWWIvx{g1lWpDA$`8bwTB|C8IEiTvP3v_%vVj+ zEI(R!kF_VdsCA|B)`I}1?<1jj=+G3*H54q201G0(Y*Rs(3N-j0EUIHvWguSG>~dH% z1W2}jM4e-y;2@vNGdL0vhr-Ha0E9A!#qh3Flo|z)q`&H^NEb9XN(=>0LlA1k728jW zu&%8rI2?=M5gpiJYB)`i7&c9-?|giKECM}Wkm~Cca<%l-%&xWr>(`$D+%4-bd2G?j z)h{$QHWJHqQi|?f*t@GwISG*O@F0^A`KLbr`K}jsytV$+z{ss51$ULJDlL>g6fw?P z38vyjoEaeH3Q_|)x5!rzms4xgI67O*rHk!x%f$Qm*D?cInHKrUGZYu-E~$T#;N!hs_vaI&`#>1q?#`j;UPEthx zsr+jQl;U2Bm6M#um0ncQClDJQXWuwvOCF;J!z3^@5Vb5sBT+=65kw_e64REvOkLNY zX)1J8GHRJcD>ixB*opY!IxdF=X>%ulBRMt#M-d(*(6r&$0yG`hV*zmfS8VKCDnSrW zAiRgLZ)eypSn7j{2QP+$y|R)QHcq@-%o%ATl}}vZC67{8lgA4&2r5Uid>@TUfNmX_ zV+L4YDp(RXSoNk=^${Z@&+{2X*^^a8c%GTr<=F`WeouOgc7crqVy2RjNb%v~vEiht zihhQkTbKxC@6pvTk|Wk?ghk0&(TCQCBo|T6kj|UYHSCN<@PMIVpP`a_$5oo6#rw|) zka9W}3z+3t5&v8bEM2vywkG=Df6c|47B86ngOw{Ucy;O0rKGkq$#Q*%_wPx7d>04w z$3OnD_Qrt&(|-2g|vp4x?9 z|H8e>b=O>m*zf>yk3WL+eLqBVdIW**vXmC*-^g2%q#V)0M_fUeb79#zxzmY1i*T-x zl+)lUItqr4LURiuier40NP1v#gl*(})U1L}Jd-*k& zjWy-Pn5|e+k10Yz#j_M3$6&`?716dUWXFbHTIlVFaHi~5Qs&8r*TbJ!-dGb6ihUDGR z`6D22(MN0GVG2CVG!(3CisQV5flfDr2G<5L*TQE?jf>fE50=4RpI$6a;}A>W5DBPj>03P<9tQ%}v4H-F zfoCESJZ|XdQB}CoD=(*@l}wImv#u&4BK});P$;!WoPxk0NsPQ-y!+=8abrs#@1z1o#h`TI=%ReB^R|owh zj(+eMo_XOFJoWU`IC|tLmyb|xj66@*3*b=bj65M?4RUos0H3`Hp*t(slvPyQ@yGiN zc1mbLgz6__9D3GnY{^j=bw&otT9lTmBgdL0wf5dxm;JVAxQsA08B`jNy^!rDAY=Q0 zZ6&eW>ppd?pxmL2m~W#~2WCf9tc;ngdNWJ&(EyLbtSkV*KpN(1#SI8h6xbpBK>>~~ z5s^}9q*G}QN0ZUOgtQ_FtZV@I_adxaJ<0+=1&I2Aj=ZNMnbY7P#`j~eat_V8Q2$pj z!LtFdFB-x9x`y4Bg$&CVgiV%94{GdKXca()b^+bMs6Z1BfZG-`(l=gy!P7Tfefhs! zam8iNwzjtRPKI0G_F^CRjT76H$34w2_W{(t>h;%OZ@cZ|zw-X$1L+SHJb$?#ppLXf zWc+cw0UF~ugukxZ{fK}QcxW;7;Oa}(C?EgGZCJZ#Hk6$^kiY*YFn8^OlgmK2hzmre z4uX&(n5?6B_3;2QWNEOsLSUyV+{PzoMv-rsg6QJ&Pg)Y z@ZflZJh8u*dywxYKvq8oLX`;sWN8>HZ|9r=BwYsSl@=*iTwByYv8`!V5-<|!g~(;2re~$+Pu{nacaTY^kWJ+{&&@5esJutlpc@+J zX~Qrt_o*y13dS-+1W!zX=j-e}W;_dyML1^5!wt^>I6VoH6IZ%=M~gKtUb>WCBNORa+B7 zHGruAb35B{&xdZs?blw3##2X;`M3LEKL0FYl$&yGvA{J2s-`nYj&;h33`0?li~)~~ zTq+N-P_PonH@85WISaAn=OM9d8O-T3pwu-WFoZ|R8x<2BM!$G(l112*XCn`iSeeI9 z_2IQQ_hZLPyYcF4dvN&ZVI(t2;f?ABms<$WF+ku65ay5hcgf?N1wcw!vWbk{_{Y@n zCThJYWF%Mr?LQbG8EDw8qh~<5J`V;HZd@e%08=y-b0QiR*J)T}0W(z(t%`?wQo@lQ zr?_MlDp^UawHiS6wX&9v!fWNoH5d3hNF|fVr}GjR!GtF>YH_WrZWx?@OsA4%dc-Aw z3}@eHGlT%18#==A4P+dXg#m2OgTYOaDgQ}n2=Pw(e_mD5V@B|_u46+)#W06gMcZYr zJuZ75AwY)N;80FMSdUd}f|q;ocSW;Ou3Yw9RYh?+8)CgzTzKBL558~xgE!rD<7NP- zCP8xiRd%*VOakQDj#%08K@jMF@CRS*y6;OeJ@et&-T^@K+2wd{4;F`nyjPL;6!8a8=DbycEXxH2eC!V zV9s9zy`uw�b^o5QO%?01dv2y1<9YHIBj@5*cKXOXR$=Y|}Hb&ov5 zI0rdetY8#Cl1b{5YL0=NXCUj5P=tws>$1qW9k|eF?kZHrEAqZcO~tO5g$EVjO)G)| zi?WxNXvlji&2K@-qPA~D+M@YQZRN%RNC~0ByN03#M4qEbZfc6%*&Oe`V9C4}Z+XwU z2k*S|&W*BGa+2LTk?B0aV6(I- z^XK4WH(iJKu2=~B*{9%bd<2cD5g2(#vZQSQ{uhNEF$Ba_^>V zrR|i;6tejO`uhiQvZn`qz5VDP7{<|)y?ArqA?(|C0DV2Z$Wu243fYl&sZl|jFoUir92au$gnF2;*DL%Gw@NLNmU78a`}t}!;C;Tss5B0!5SZv93DnG znJRgYMHX`9bEpN7zHgx5ijEz`TIG%(bk`o>QU;PuTM{Z)V5%$8($JYG@=>&l=|KFygChc1yM~fuz&XkT|_` z&eWIIuf5>WFMa8Y1d@j*J;}GZsn>YhS**%;?nD2xpNYb%fBn55Oxyj|{`VX|J$PH% z!TCP4gplTtyt(SK0&Z?23V}oINve>DSte#p@5EK>F2;MVT8HMQdi>#6|1x-P$4)Bf zW;Mx@__KUmGR#Ics}cCn_4w>o38y!5(N^H$i#xH5l1ERE^qExeT%-p+;8` zYDtz`xg}q2Y>=$XUsi%hDf}vmr&;e+*I-*ws7>wArp*9m%z!>^8lv6PVYE*Xr6TdT z>?9&arx%g^GHfg(VJk}=iGBJ?Q7Q~H_c%$}gPINs^XfqNn=In2jNeN!QZ zCPc=I+NiQTLy_eprlujP>u8Hd(2=mvZYivA(`@I^8Q7R@DCp93GzLB_&xYaK44?!t zBFq@lb>syKO0NV+X%2BvLMQ-H-69qE+j)mUkB+5M8uA!PjDc!Pb=~BY0jU{L+JM5Z zl)oMx8shhe(G^<2wO*CK4MVE}9P^HjKq2KEm&>FS7jP9HF5eF~*}|Z%U~kO8Moq=@ zhRHowD~a1x4}%Fp8VgJ;o<9fc*R4a;jNrL#FJkAe-RK`4DrO%_ZNF;m)};;tqHY&~ zt}0G@U2Jg0!kN22a_jXE-f_nrKLs#J+!=4}Oz`g$SymG~)i1|k^57#lajLJV;8E^f38*D!loqXr21CUK^Jn7Dt1rV1v!=p(dIS9J&m&gI zvM(Ddh;aKSox+?_*`*dC;!MTieCb8{!)V{L%%cjs9+13Tpc=4M9ff!dN=pmOu4&vo zL?@u^?1s_S&R~gX42od^Btk&eLlwCqyj*tlBx91K(5QY;uQRRT(WBME1$gcw(l)j zvSd?RTU-C6G~L@} zMa`?w+mK;9ai3xr=6p-Q3$LXy!A*Z}y!J|5yM7&}c6D%mf{NxJ+58;-;#=RtuGil} zf!gp$mSCuCLdVfd?Cm}*_?XrZ$Mvh0;^P;sLj1K?V7;*u@#G*>Pn3C3cXYZ$gGw|1j{)M)%eb!NwsmZcOi`>>5umG^y5@dFHW86!O@c^aOC7k z^bZVSa5&B5O(g>4wNMz(VL37p)+LXIcS>gChW9MJO!{!GdSjf}qz;=83nQm24OPv@ zlHtf=o{BAl@HugktwKLEoN2|YkOoUw2P<-Nq~rsbY5>zv5itxzqEVL3YfQw^-cXOJ z4Rx4WXJV?Qp;d9v;^a`58iX}62z_K2dL{$Sb!1;o8U_MAA%`alJ;MGiCC{5@tbAas z8SA+4$y2m#4yBTjLx!BD=`al8DVl~QgyUI^q9i;}0!Lx|k@uKPCgC}yl0XiJo)I8L zZDZi;aD9_YJMx|=@}~&1=p#ymOyzngWDL2O7i|k_R;7Q@@Z~~Q4 zvc?%gDRL+Kjg(EmiIjO%(7c2gLCBaa<(UN$i{=y=LDT}wGE7(zi#R&{8wA97X z)=-a*=0>zPCeRs=VTz%1_*5V1gLdLL{8Pt);Q^Sr6inBF&OH$6xw7{H)hC4+?tQ^U z^bC-)a8}q9BFRj1pM}(=r$~ew&vtlxX^W@GhHh%mO#zBTiec6@&mTGOi{878p!hy3 z45dohQE1Typ2sb;XueVI@pL4DS0Yh7 z7Wmj>kVjdAcNbP$%K1r9OcI0_owo$P^@UI2f>q0yrG4u3Ao_=MIN8&W$2V@q3p-xL z>4ARsrm5~y%<hjCKw|4CXuL2-hx`{063GRfy zT!&2pSS z9+$6Ojk`bmeq6kI1rjlO0O@G;Stm0Jx}k$yOL#%G72 z`slJWT;17<&o7@Jbo3upaPTce>;OJ*N)G32sEY*)nREUoy!jB^$MPbp*VpKVxT6@m zQVy*2PD$mLMEEdN76PstC~yJ|In98Rh(Vjug~;qVu;$E#P9A1kC)9>UsIe&2D0!A7 zb4ScV>4iy0tW-%NsQcU&Fx*+nyfyL?9A^1a`zIHvR1ST8gE)TtB#sqpz10%`12oi}H8k-u>-qMQhDIJ(O zwG-WK&1j37sD}qDpMjbhfZcl%xub_sIC2DPZy%y|260Eo!BGhZ3+0RcP_pDfFi^SF zgN+{H`3PG}8Y{BH2!&p~g3H7dBHaj2QG=nIQld}HNt&NL9>pG?^1;ddy=Vw9StejF zESXF(>zlP!t6w!eNFg}RN~*pA+c){k^;Ouu2bcR=Qr}3*Hgc6F8@*|N}#B!JGZN?=XbvFi62~b*_!*hySv{~ z6eT~wZEo_gsu7q3$O%jds%iYQKly_NfA-Ih-8qnQZg!#0@e!D#SH-B4@%VC6R3$)D z)WS{It;eT6dOMacTEGo`i&nM_nKFeuo5RLuU&7z~{lDP3?Juz|XU#<@y*}D*br99w z!|Did&-A9?GRuS3-=_pwhxt%s}8lAVc+Pj7v4y zgjGs-VUdX}FQ5(Dp)Xf70VcJdob4c;%Ojb}VrXatg98H?JUxJs{y~fk599Rdew^+f zz+h?wX%Z063+5#OCjlt8#U-(D&e4S-?eh9f>b@eq8umz3?xCrY&MO0-4$Cwd>_{w~ zI*QO&BlWgyY(#TQGuk^^(A?a}B(H}0I?g2$xhAS9+`3ouJ!mwKhKGiJlBPO0T6z==DPuIBVxS&T@Be7UB^hDWsF$~O}F$4F0 z{BB%z=^D)FY(~t~;Clg*sT_{>3?i9x(L2u#?4!B@>DNevQ6loin;wt1Gy^R z&VH}zb57Dee@@rFkAC=;?|%Bzcl`{&(a8=V6Q5`0M@|CdIO9g4)jfOmG~f2oU-{6X zf#Eyzp0d>U)%Y27!OHwH3TXx~6riatfe*azdVJ)A@5AExvr!j~lsE)3OheP(^F0hE zGk9(95&ZC{4`IVoo6*zPCt4nb8-8dl%N>K8#Znk2@X)O|!PW5qpXp4XDK)6j1_>ts zQTHhiLY6vhD75BCK%2gbuU`Owln5f~7g;o2g-0qnn$DsFo@K#}#^F)uwS5Ycd?MY` z5$)<0Dn2AmV8!U>L^~teU}Pwnf0iT<-n~N0pMNgp$oNMY8s=wG#-8Q;8Ho~5zD;_M zoV%p%8?MjZCFhao@AS+(pY>-6Ea|&oaLO77{w6B|rI-SH9Mtey7cH}>ewFibn#Q3= z!9*tT4`7jU30L-A~A z9_11}2012vu$MTxvx*3*R(nYVyrO|Jx8AZP1J$;947ekToMS|?;bzvd9#`}#t*wJG z){+$6S47l=)N)3KhPbNNwO**Pcx0 zaiTAY;Y=1MdQW4^wiod9=FK>8T9pbt_|VER?c$~uoDH>^?`$>YCia6n}M~auf&`je492v(T#vS6#_--mq%e9>O8^y z3#GVrv9m*QTuR6>QLk~L$CVF#xipsu9*OXxxKrAMMTZfx^tpbLimfGJ`ms1rR}VBa zLTPS>-_*tgAg!qxMsqW)#%36G4NzhUD5gdAF2s*7abK#+ALJ*Bke|F3+0Cm25#_S7 zl%EXCP-K{~RQ4jm=5zpoBnQK!7cYR4FsUp=C!dkHZ}Rv>K?(;23B;&71=R%FHq=5M zZYGUFauCkY0Q{kTcmsV1Mh2l}GEh=!sM!qkTmgE%0L3mqbqEwaCU5a*mMRBA+eCo2 z45x~4XNZlWF*AcbY2~^O&n=hgb)~8hHG;t&It^G{ksLq_YL| z_Kjd5ox_n+J$UYg7xDDwt=NC)h#}B`|5~k5LU# z;XM*KcD6MW5hwWMUAJTD{Mkx8LOI9sB0piRJC2XR;UoqJN06r;fUb{&$9nL!2p; zq1Dk>1GM^jsC98@^$94^IMhfSszqfcCKS!!!fn>wF(9U-_+r5HC~xc_Ak~h{A7~9)Bll40@*aw zTn0)$2V}EAAqU+lKqVy@607$W_Vh$)fXo!~hFfBsh8w+bZiR;{fKq@s8B@OR%6^p; zHV*TQ!cyQIBIiv-F0m+UI0i48NkkJ^ht)wek-^bQGFsNH_>EbD0DQik=0;H;P z&(Iaim*MU^K8&u84q2)KP<<&yk=h$5M;vDm&SVPc9ZaD=nZcpsC%MzjrY+Cn@X=$U z26)tXRiGq4C^C{gh1Rnh#B{hzXH7kF{S}wo|2x0=-+pKq#_q||kF%R}lOE(4<3&x6 zAKUbN*H0hWc*E|4CqLtQm>a;0itNjn!zTVfr5qX<9Ise=0Y3iW_XiiQT#Be+D8g!% zeh~?Ov!t4fkz@uVBWdI)pCTD-L#aHTd42~TeB^QLe(Ozmf^W{bHC`<8GDNsaSl3h+ z8TW0h(rny2C4m*XgGR@JA(cMJ@~4cXPGL*7{3-t>G%Z8&hcL)X{)HTn&jJK|xh#}imcR4=DK}R12pv|e;Tgc* zD&+-NeN|p3S|!s4MH@+8F zUbYT(G~Z}6O-p6BB)XWsc{}jFoh^R#QSz`E72-dLR8yW(#a_G6~ z7Jm^ya+`OOup=g^W^%Zf@@fo}>}5(DDFh+<6!HkEzLGseMoTC}2%#D~R{*3>-Xe9T zAbn2T1sn&8=ZND7?8pP8o|*x5z9{Rp$iP^pNK@|lmFGKUJ1UluqnFGbO8hHo}=N}pbysLFY&k*l2GepH^5EN34}n-eavjgu*)GAZ`(#2hUXaj4qOBy{p~ zrmOd%BkvnXQ!y^}bM(pMr50+^yO!Fml!G)$3n&1F;~Mr&smFt!j~8-2hJ1~s)`c}v zmJ=*aLTRWf3gVFn7S5l8PkiiSnBLtDQ#LQ>H75V*APG94u_1znh8SWI6WOeT(?eMX z$%99zZ|ZX#MLN;jBLoYIw(F?vTP|Apdx{Qenm?0@9`^N`^&kn?mhI$V}pge6(~(!5a?rU?jqtR>(PjK=4tx;TNsc3d>z_Eocrm8bYW^-8%uez=+H7&&^ zPYlB_ye2l^a&Jxy*gFZ3HOk$`oVpdC8}7xNN0Xipzf)|Q<&988PEE8$3YCatqO+Li z6q}xCJ0*ZrNHdU$Ai$PtH>nq(09ww^l{H4@Fr(bP7-YhFK>53(XQcQfs~L7SWREWl zpwT5TubAzqN;itU{Sy4hD1TX1oP02%%tRVEbl)K`^J13(NkAFabe5dSqA;$=O%}&0 ztPBi4y_5r|@{WpEh4R4!cA&CD&IFK@_snGq7#tXc>ygHAcnxC#WC)Mp6H%FvllM)G z*rZ`h0s&&w$$;S)fb4foVMB6uR}-~c)KLAl_5X&j2TA@ASNbWCY$ z!>OKHeth4 zPhmKnWC06`s8q|aS5F1LB}G9~%yQN&nYaIQcinp5`)Opu4j} zsB*AFBsW|Mj)Nm<3==rIMBXSp3ZH7qe4kZx^0tTlhYsW6#~#OqO`C-6?n}rj<_qO} zIW$E-`!HZ*3T#}LP;gs=g?XOMvS1c@IUW@i>qw>3h(t~3Qo>90jg&>^d~Q0Q=mcL1 zcQQP_ZGaqWMZH~q9g8>D07xOq9x_!K8A|t1w7^5{*U(uFy=IwflouOzEi3K)mB1Bl zdZBU8&q(&W3>A2U2CldS0-vxVAtc0v8$NS1%W~93z?E!Q@fqT`96c@W(Lyw!m>VqZ z*phG~YH5ovIUJ=Zodgu2$}RP2ONWOc{OafTZUSVOqomqWDi;|U8sS=0`pnX;j0KPs z>=EmZO+23zax8d(g&Z574mvM;JViw!8pD!Bi*V!xwk1a9s|!(!w^)2(tM+Hf?9-xuCKq)Mv zM%@Ln*(^+{cga2kJX z_N%1slmIfMR#gII=*ERkXb3y(A#=1*c%hV&5}rt@K2mf5k$TuNGFkk*svBhORVIjp z04cnQvMsh4G9)~rzX=3u4U!*RhmPbm6V35p#rgphNh-C;)xh?d7Bk?28XkFW#=w@ z|6hKDL&uII?>J2IlL>eEWQrHbGl}mH3Xul=X`PL!o3C2?>ev40_x}jMRz*>W5jgo8 ze}kVKBi=@WK>gUgpP&2u>j&>Vd}82}wjZ=X3AmCz6bLUHsp2j`wMPVoE0-_87d~@0 zuDo~^3j>5<*XXi!}1vqo#_ zmX2bBgca^Qq^XS+m2?nkNqW|mPgdNMfaNl;n4HCcB;riuUC|KPP;@3sk+511T0VMw5Iv^{ zvEkXRcy!}N96f%DBT%82FCKBZ!J-6oKK`{51WgIcxnRk><3IY&pMR&Jq2V8-c)+BX z`56|&JGXMrcE$Yy9)IlEvFL4|_?64{9qs${NY1-12$U$9$K|7e7$trbyYVo&(M@fXD} zIzW~aqt0|UHI;ej4KmzK(tOzrl|Cg=C^#auUcqKAK~hMRD%B(ktyK>?3NGarNmbQg z1FjI*Oj4sd#EfUNF&fiM&Jh+=4^FEAXHg6GceMro@75DIo+lx5;ZKj11_%K%4EQpU zPElD8cWPG`F1utcR<2lqcs#~6$Ygv{q=x!ilI$KC-@2}W{)u`_v9w7!(TXUjtBasM zkw7Mu$HC*Lap1&pX0|`S{bd%|uh8?Y1W58A<)~5F3jEHdMEd3{F53R(FMsjRrcUjA zmNW_`bCF}u)U(?o#$UhxX^)^*R*yXL$h@t)4!!@xVCr@|&=ygrjxY^hHc&EXB^VMU zMBEUI;@T@O#joCb7Yh-`qvUiF01`O*EG0!{90gl+hG1}%I-L|kqOdCIGKM186n3Ss z>h3*zuD+v!*-=l|HbnlCjoNw;(qr%$hQNK%&}skii}nJK605X z(jzI>bEPmM1F9s*l<|^;_Za5OnNvogY#pwrzz#&MqZW{7MxZG|sI-nE1c;skl_bfz z)W-vwbtns3abiX@zQ4aecV9||XJ^+?^B= zf{Iz`QB4Bm8K&5z2RUkR%00+(Wh4sy7jgxplPTmgIWZr(uXPnbiU5ras|rA2KaW~i zxh5R)99djK5YB`aKmea|k3JC5blB9>l3K1QF8qXt$igNRmQ2M{1qI*Qax6IE)^V9? zNK_Mc;pnwj9%3!O(J%;=C2;Xm975NcIvroJt*7Ox_!WSVt(EA$5AG zpQNUuxjv4Dh6H*BlGt~o2OBp%gQqt?gJZ{zi*(JX5UYSjan)2pM)$4ybGzG;fAT-R z@bd+W=6_?(oH?YfGuiE9jOBZFJMFkI^Pl&C-Me=uZn^W`&-NyB_hcPyrmrBvR&Awh zju-2OoaHccJFLLR6nMDA1a7TUu}ZZO4?NLT zL5if4w-_=lLo^nG=G4iZB*a7$S-$=1c#{;lu1@<+c!G^OpA^ily4O+XtCbgJ=l-4c zAZ7edUXL`($A1$4PH?Q1`m0TFsk)RZB^vS9ch-Xx>GLW>=?r=5@++(cNRFTe0qk6! z#Q;bthg6@KIuq8Nh9wqd-PXc9KhH~2m?A=sYj9YVQuX9OiSZI9E%$iz0ZS!4R*!o? zdX^1qb`Dhph*_ARm}Qzn$tK8^TMkzK+MAcoHve z-+^pCCrVtybyWEriVw+95VXdk_H9?MedUhZKk(-lUwR=4nNwrs@e}sr&-VXvM@)GC z`Y(6qRX4P2*RH0U?*8Jh^^RmdR`Ago1SDr2C|+frPsnG>I;OaxW68Xk!LNVr9$a_j zrQ~UGG=^yDBk3%X=``n0sCLTn0{+=?L{|qc;Fftv3bE#$0*6swd2JV-+44M&p6Chk z1v}K;kyl$0+dPYBM-nnC@m_a#L7Q>qzP(yoFM$DXN*YEYYfq z@+F4JdYrUaiLPD^kOGjZHp?^QZN{BXRqViVkFVH$YXjt23|Pg-jk$A-0`&=gLe0IX zO#M6r;nBaUISlMfO=x?YI6$81e6@fvys(LcSOs877cgWAlkr$^xP4VBoq;1g$54== zg4Q3}cYs0@C z$>7J^dokiBxI9GI6(Li!_ADe%wem$HRB51bRVLL(ChD+!*-~7%dNt0kfr`~G|H zQ0l`4*KY|Bu)-#3dX}S;STNKMN5z!p2E1q88vO1TKZogE?JQ_bY_p+M2FYv|`2y8B zl9vb$x8`y#lLv_AO+E6cyE-k_Og@hjr%qwV%P(QW#tlg4-M}MaKsjSO{9ti0Y%7)x zbour;`kAuVC%njpz{fJ($NL*Jtk()?QGM3_BnF+R84KB{BxWAKG=&r$wJV~$DS4Du zM2MSLVA3Q&)(pSZMzmUJ_R9;9ls5AUHZsXHdyf=NVF^I_6^bo{#V?|mC!B!9E)_Bz zfv3WDeAqsDTNd;X;8?Ulq%Y{4q(e+zAMsd&W}t3$8{B16@yxJ~AH3Lu*ZWjBOzNq6 zdSmRC69q^@LGlQxC+6%~vvBd63$b$9ax^y93y}vlPD^As&PQ@c*k^Dh)+^lyHNtML zYd|WM#g12Z;gJm+vGw`qSs94q$Gk^X0AvM78iDUGo7O)3^*{b!-@fwli@yut;G_px z8@46^5&($>4KO1Pu`x6lJ2ik4OM?z{h0~5BE%oVv(PNMIqm8fj?I>Ee`S6vgt3g>~sy8bQZB_ zguB*Loh0WdE5ewSpE9AWQH5!j@bRgz4{0`t_Rg9|ob z!-EsGkyuiP#Fg{$l5gS%+fU<}y=i1T(%3DVEhVt2ITgs5{r}i|4{*Dx^Gx{N_4IT5 zz3ROpL=gxCq8QOlH(+dRu;avb>?D(9O6HmQXa32POrQM8#ABy8aguS1ow#8e45owW zNCHV9fds0k-QG^yW&O|lt-a4Z=iV!E0RbxKI119e=j^lh+H0?Oec$(f?>lb0I7tLK zRzqb?l+RCFYYWa=c?Pb$>T=}sdHGK9XBETgGTekK^?wqT$ZU69U7sY9w&h!d*!RZn zJ<{^=v-^I5(Mn}};2LkE>lQKBHpBClF6jN^|L6C;@$6d z%{VD8KE4RnA8-B4Z{NAUuk^WMsLl#h=tO2qq>YE979$>YkW}k@qk>zTfxB8$$PW)g6-%NlV^TSpk2f7AB*&xEm5F3h z2n8a#&5EkHe?$V^@`(mO9>F7Y;w4iL%sgjJ6A+c z-I#nr43Gpz8-Zsa^d4qL0EI9B)5S}YQ9EDY*u_FPb3<*_vw7`TsL3L{@pPj0)vfyd-EGCkeIeP{!yzl~? zfBqU|QYlgO5!*Qx3X7a;h~skYV5Y}JI-Qn&Nv326hKBL<^Un)FGR<1uT-R^wtLJT7 zmYUVo?){g4^P8`(J@1@9nLBIxgAFs~BhTmtKmzFQ?#`Wm#VwydIOKh{6k=HjQ6!FD z<0D8zNG+|o6h3m{x%mCx`n>qM4G)c|awRaB=FlPlq`$F#r)vtdM+!owD?=PSd>9*E zei<7!ZosZRyD>C6su`@c8__CA);*Io|IoKiz;Du)`1q~b3`pKX#u3xQ0J6%*N~4Io zo0GWE@X+EFbz7wwi7`jUxIBN+XtgX93kBLE%I;Tck!0f0>E2@MC)RAOMfeG0IC<-S z?Ip%8B1d3FOfl;<#vQ2<44CR8>BiM<=6kCUi2!g9pmFhXAkFfl-m&FRVOrX;;Fa?}!X6nEEiR5qiGFDaV{ zS2`uM_N@UA0m?xMIoCqiVPM+T3o*KQ4!-wFAAY>C4?B8+VqhW=W*$K@)_JWOK2Mw) z@%)PBt)zzahH>1Ti`-D;cafYQ+r(%+=h|p$&f~P@%W>|ibFgUPLgaEeopu!qGVNTV zpF7Ip(PYMj?KqNgdUf0Dxc`9%*b*lGmGv+ALG`>H+YT4Zo;muh|NWnSzF@)JKX1$D zHyeggoa(ea)!sM7$M57GmN(vbqv^7n?*8)O;mX~fG8ZXBS!4NzdVnNrj_lQzY#M9N zJ6rw6-JeE2lQPPMvhsc3kVuiB!c-(JlbA}S0kY>~c%+1F+uy+R>o;J>8*iYezh5Fr z&6JzOgE=lj#&SD#w_*IPi~cQ}(@7z-s^dj)bCg26@^AslxGe*$P5~`MKN1_F&xgJy z<#0F4wiE)TJgi|LbyPm*WEwI(B$iBdr&MzeHN9EFEF3?bgg{aMQ|%^E|HjF#>WE3` zczaW$$TQW+K4pMBt{;n9E!eRWof?^E;)ThW)Tk*vDdVN|CThl#Jj3oQ_Bcue8IsfzIqC?lj6KCXVG9nQMT*K%#t{KRtAbRAg|@ZR zVXa<>hu`w?t!EG8#l2+=`>ail=_XSlOM{sZWuj>j{Y(#tHchUP@{>R@8oseClm^9E z=|@_oqVbH40GK(=q|+i%x8k(ZaQf+|W5$db5-qY%ASumcJ9JM z4?m2D9(`nTfQ)(}`IU}i2Mg!S?Emhc|L1Scnm*&NJ38_^8z#y}evqfSW*pZ`!FxTq zjT?71-+0%jeye-9a#sY9=D37>b)2;PF$jt{=gbxO^c^2ZM@tjv>lQQke5OYDkQ%Hr z`snWI!7Hz9#cSK&z`g^AB!V0rEeKIZ>~=)fZIahf0aEXbS<|QFGQ-1A88ph0uCXJG zi8PGK!$q$+`bGw2T$2uQQi zh3q=AUB_PU03f9&x&e^ybspD${ul#f%?4&Nrs|Z~s~QId97je*MCMSNNNdp1q@2mL zX5%PQ|Ci1j^iuUj-+~)83jsYHBN2Y~_VU@{bLEPZTZjq)(h6X=0L^E$q5XyPcj<2#BtRI=cY6OyC8vb^X`R#no_;6~XD$5hHRL*;pa;nS{DaxhxcRokUipNFV9 zN`w8FDpzdBqQ(FDZbpgCP0i@)nughPW@E{s#aOs-5waPYEn6Z}CnD=aR6rQNn_hVZ z4?gq|Hf`Bb^@y#`1r72#8Nuf?;rgd9S=jxZul(`XXHW0=yHqN*zabRR0LY`RJ&Yi) zy!EqRJ}^+cyAm3UNj95Uu@(b1>06>E2OE87PV2-)7p%eAD^JJt&Mt|n7!mgN^0(b$g&khKZ{)i-h4r!0gsJDQ5i7BA{4 zl!Eee8((c6_5BuwFv^ooIA+{YEkp$~RLBM%PBY86Icta<-83_ROEO&GOHCzy#Q9K? z#j5+Vv=Wf0fmj+enPwHYf+|SH09haRO>73y=g4ubdri{j(TE`534~4^AgAQ*c?6Bs zsQ_cVIE$oWNrPiyv>=%k9ZB(tV(X9&*v4&@qAe-28``0RdpMRdd`}zAF@4JY6*X45 znPX%{&q&v#{wY(YAxdTdquD^qX*o1qG7G(JZTQ9``|d-GAd~nvm!D3q}G+pXB%O%AO+_5K?tB1zh7~Yp=hC{=osM!`8iO z0Fpl^K%Ta6e$ThR@<)F)fA;hkAR7doBRpD-2oj)*PX1$``Ry<5?H;^)#0wXPO4$=; z3>&Aa&JMcXM$OW;)>bTAya-+G9lB0eDx<%@ABTE+(9_q4kx?y9&c&f>)KiNclZkD| zH%t3UO>D-7LfSEd#nan{*PgR-`(>A1`oh8P{=u(*^Pg94-MxQ}2ctErflSQ9%J)Up z6~#z0Kyy&Sd6tjsvj)~=Ewr*Pt5}9>n5dM?TIC~7RqCiU@{Ob$NvN53j7V7*u~}7_ z92|LBq*qK9EjIx2oq*p|-a9pboDw)j(Z^)pIyHdQ(~t(;tT`47C8-t4OBQggojQ5F zHI5#2&5`L<`lQMe80eX#`{+3@39?dS5UE5bs?b;XG`9e`wg905t#+kaw=tafEDp@D8ifhd#ymMD9cFjLU(@3!%`FUypB!I(* z4`+Y(-~I8Yo_YDT&+YFWI>Qf@8%oQ64LE5*MyZua-5{#RQ1OD1mWV?|bwn*G7jF~e znqKs<=;v4a2u5$2z!I-*j*!%ru4WLUS$)YSEPvJV1%nrzwS4Q9S6=qZi!Qn7u~%Ms zZRD^2@AoeJ`NL1%z5CGM845;1NkxBL+$D^m8s7sWgcbVe3M#lfW8kJ{2d7&hl7&%_ zw^}ZhkW4x#7E6-e;SnV*7WHfi=n*7sTV(4PLDCVVDwh@45@QlW?9n)GPEM$e9YH8y zLZJCJJeF$P$haEkksgWnrT#dT`dnPonhN$!`ksk)-$VzX0(3!Gi~vf9-2uyY=yB*I)Gd?ziR+6#T3Y%VxWZsu>{dPgzAv?dTZ+ zH^B?}(Z*P8W*HvCd+rNDzbcxD}gi9ASX@riW|twg{Rp@Jq;% zP~%l3-5Sz?gbmniRyLGG#XK~7wJ4oOK>^t}5G-9sel85&C~X!SEXNXBZ;u0$B~&MV zDn9(%9HDazwbew;YUdfRV#$9<{Qu{y$5dctB|a|$wZ zC9UdVa9{|9LP@59Eci#*G>qMo=nIvuIg*4Udd6^In3_c`$04bcsymYMH{qBTGqIXg ztpZqCAiE@s<~7q$S=@EPS!=JX16zc*Iu^f zjsNJ{A4#W^KLfClT`GoQRCo<~;+powt(0h()Wt)1lkupiSTtY6N z7i%KNCW%0&W4V(jP%`2a_A6I7VHdKbI+c<~10bjV*d3n$$yO&ujQxEBsFZ2(rgIln zd#dQ^iYNZq9gnGSRCZz-pAG&(o`wNeN)_5mmF2-Gm8^m&6Uu5PBexK4&OmNy25lEi zgId&q4SfN=^TZ+ic+(I@j3$t(P9YGsb;RdT?N%K3G%~JhPT9ewt4`~?>((2dxaqc! z{}q5I48!pF>=7gZ%zf?E&1=5#kKbE&&jXLHKHOiJS@hugirS2!8TUcPOkGlv;s|oe z09lRpBSG4Dqj97xh3xY6W`qCVHlUgkrhn}PXYBmK=RfzS7hQA#*O7w_fNTKdQP-Ot zJ9cz_{!72}o3HOabXQN&pY6eL!gz~X|H+Aa>DuVzXuG-k;~XJ?;Yy(OUI{WxsirM> zD`vD0-*NpFaitmS001BWNkl(ne$&>E-TArS z{nAii%~L=k6p$R-w^qZtak*Vqg0k?j((-Ui*1&a5Nlfz!uvwD~89_petcQW9>2P>T zl7dZE)5RJHLm?TEk;l5MBQ;81JdeTUZ4wI9gfw3RAdhE&tXfP((<&xs#g763jAWet z-hTKV$z74IY1~^_-FlAY0OXE~Fa~_?=@2WU{-E&Ez4%4l! zWvJz|+edG|;p&Zl@CX0;djRe+3}b)oJ>v5Rpm|_m;EV?zxcA!ceDC{LJp0PdIfErL z7bvmsFl%e@wJFx^>;rz~A;l`^!vhQ=B`|SE`I{ie~j2SdJ-3g#P*`%gz*Z%$c7yQGw|MAN|eDwKi zhRgm;1;dplGucMQ>8+|I!r1nb2ADKhRsmMI0q$tEaj6rcrBZ@Pl95l95=(2&mP?Xa z&15nd7#Kh*K`AU+4QYpSZtVG9f}_O-XZfE7Nez(oLoksn(g4Wg79eXFt#M5=2FRGH z%JzdoVN?u>88yOQzWVO?gKxKBT7>Rw+=)XT{cChI((c7wI2FBtyo zul&#NwY9eXrR%z{8-`Jy`dmA;-q|4OME9E$`}NmfpZ*tr@%5V?f8pg{+q$p&%yK9K zj+*E)d53lMWY;`cM-b+F>qc-07u(1e}nmPUR{U&h2Qb+;r{bhc8}x-qzW( zW{;Mc0Jshw{V^lqLq&=t-4BO5ql=+mCI#`63b<3K(h5i3FB47 z1Sm#elWy;exH)^(NaUfyNfjhzNz!Adg#v0H`0~u0#kinkBGNZN%v0mOOEiq zsXk>#*)|>h3?{F{PWH9qzarwEP5lDppjFKYDFHCU$Z1ansY0QEk3)!*YCNW*eAx z$!u6lJFuhT;GUNT@bj04@OqzxGMuVCm8KY&N^=crV!P@IQ4~aBT5~q|+#NUV`PlVW z|9JWGr9W^SXERB;M|lS2F&Z5mZ9a79twk@rwB@oFH@Dsvp88xk1>QN;NB0yM3ZaT8e)OXso&D&O&)@mzvm0)H?X8|JUr~FFD?rT(J7FQK zoxMk#v>J{?#A*y6^)51yRBFmn;k1@a;mS)c=vldZ*_&sddBzLNmM?uF*WA1n0Mj`m zQ<=;J`+eYy}Fa;)15$wPE@eg z^>KaP!r2LeW&op9)<(*HOI~M3vY#cYp zl6h3`L_PjfZA%zGVI!@*aX+4HXMUni_4;{tqz8L)fP81mKs|F+Q&JfzQqX?1SU|;N zTT>*;ugx6C5(cq4P2BWYg9MzDRGg~>VjV2eB-5?BZpr^D1Z1U3PcHwiH3ldyXPY5f zb1tkdg^snINSxM%on8|6Y#PLUn}+dPw?fgk;j@8Xn)suUP%zk;piz{E;ymig%Z|*$%`3;*E?AW!x zt>_yGpGJ_?n-cq1ita}=5uE9)jNpcuQr*bVP>QnJv&-h;HlkE~>S}eYBQJY8IwM5(MBVM1jUDk7+4}P3n3YB9TsyUrdbGzCqr!St>cgD)o zUpxDZ5O~BbA!2Rv zcM?$sfe?FGpR`?98oQ}#C;YzZLNz|Fm@J$U5ixzr?=;$q_c-<2@<~!x$N40k;^|Et zASdsaocwEaq&T)llXMk|;5fzlNyw>C%w94BF))rhlNc}~JsN#0^`?4eg zHX~)4nBCs&UvkdrJ)gY&rspobd>uU?$$n?;F=|Mi;>0?|-qrxf@iB!`=D~vp+n##r zxit?w^2pr}Jod!JeM4T82ix&wU&sCD_*Z>@)5I_(7AMvKX;F*cLXb;4mBn*rj;va- ztZ%`bY5P|$Tk!hD>#lggahy#6b^#cAr@&bI-AXBE%lh?m{>R^Z_qL}tY`%Hlp}ysz zQdunxB7OzqU*kYBL;@AeK^d24EL@YdvBC_I^F0`>14WA#g#rqrBhm-SG+Qlx(H@Im zXPc&^WD}{BM3h3qH+8L&=`sGPf4v)kto_Vb;!d9slK_)_#|MyN{SX$FV-Ju~TSd*a z5TKY+9W9KaT&!rn#p=SYzw_3OS6zPD_ZKW$@C(-dC#yS7<@QEE$sK8~FgUp2iKm`A_t_WLpZCfeJC|?Y zv2(_u-ogAxIY|02>_7>bhw6(mfRZzcb>~4~En#>5D1R zWaM^Y3mcZIL~Q&XUxSR9@9Y%!08*M%fBmZpk6dVHo>Yg=mH$-S<9 z@390(ol+eGJkjR$eUwUNF*v4*i`LbM%LmcapL7|I8!4o?0G~BSDmDpuoBoZOZ7HQ{ z$q(x9CHQhqF|F?foxr+BuuV0qqp5PoN7ude>%aDyZ_k-C>n8wSAI}DzZ5m_JnZr}qquw!d|#J3ly5NHO8U5s+(zW$13^NY-`i%Q-+bNm@{6 znJ$^Ct2ys4nLlIjoaGDlU3$^^FI|28jgPQ3r2&ppzjF7Ar+rh1!|QprtQx1RRj|MahK|Hb3a+%{73 z<|t*_L5yaSxvc^CDst+_lQq(07-AkOxH4Z(32g%$cJ%pqb{pv zwd)0qbxPBg^lG_M5fGK%GubOWkyPTLzoaE#8V%&+dDK|{t19GP-3rvyC*xG0mLSs$ zUsOh(7}87t+R4ZDy*w)KEFXOA0CK`&Iw3P1SK#Wdxo)|Qd-^qmu$@AjI7W-KcoQ-W zeNQ9%j5>buq$)ck?1*Db1dde55m`18y7WEb4AAY35>vYG4-4H4Tvbsbd*xdTWz+ z)!J2u|JQ&1kN0L%slSKgymB;B&Qzbn+V|C@Uh@EE1VJ#bySsbw0}ni~0wA?n36kuYL=eCytAY`u zM3;bHVJ$O2DxK0*D5a1{C8PcDWVPN&cszBweq$pup3Eb(s0jiElhxlQiz?qqoo@Wy z`Ea6C*|1IJ>8_Gy>d!m!e~^uzi0g}cMu0-0C{8q$vQDW=7{_TczT=>pO0Dq;*3c(C zjg`=Zr+M2_$JFY;>^EeqkSBlVcQR=!(uIzV3N=`L1;_GXr+nlW<3Ze4WY6P107AN;F8s+_x`Ux{`Zg1m^u5; z0la*y!EwS2(Lw_pfDC|H2!dt(eTNng_78R)?(WM!^W2La-}&x8&FLR5wv+?Y4Ghy# zfoJ>5Gfm4d9NP&UJK;5@GnLa9FD%~l(aX9oT)Sp>=ZqPz*si-Cz^fDkI96Gyce?(Z z$nT%ZBXlBP-!VD&2q>8r$#DV)L1pP+_n{?+_U@TJGFr$Lixv7n3f<1Kj3ALr1etWw zZ)s{OwoIGZm(I7n6{Sxp3D?h54JWHEiAdBXO zoEMl*4vLkXn8l}SND(8y1|ao%!k(>U7+?-cxI7u+wp;=WP(t1@#ifB@NOmhD3Pz2U zVo83+7o$T)0{laT6)w8+Gm<8x6~vbBb;P2Gy_S>J3!}d0`mOk+gq;RJ9t(ifI;wn) zj*en@co?N(S)xY%FM_YP1xP)4*xt*=e==3I9WhB_qO8P*Bh!*i7KvVbkl267zCHfl zV-|uS%335m*eMSkXSJjA!r8Fq<*~aI;Ab!Q<8L3|kKKbQl-SY4IV7qB+T%2O@o$9u z8i0(gkri4JX1M0``NLnl`?i;^zvZ^C0H7$x5!*T5%ky}o&qi(_q?dEONz&UKB#;Ah z7-`aJuT&UGZ+YSA{DD0?a@l;|S+rtRY4)Pi2FR|B{*b>wA(6vmzDK}#au(a)kDE|) z%mzSCaeyO`__@YlIdEhl#$3~Q7KUr-GvH#t(-zOqi*of=P?OxR+Gb%h;EOiSWk@za!R_db(5mL zz8JO8X;FSrN}`VHpa??*K1IRDutndIaS>!3IWjRphN(33Ls~K@G~)%Dki*ZimzJKQ zoEucy(V(cy6&2qT%PNstd=SuoW@f+zBwFZ zGGX~J@F{f;AKsHyWiM?QrrFfgUP|P0qtP0}^eNXF{)x)2AIv6vic9GU^|l5;zKh!x zfn_Wh8TU%m6!EI466e=GG*BD|kUU5Ci6@?z^Z1ibUH5L|^d0cwZL4aw>$9c&Rw=}1)T$RxR4-QkOUPWq0Vq9A+X?X%3%cc{9 zug#V%iU#PfBvHrXg6QkWGMCLros#u2MiHXYQbUWXy{6hnf3hCQ20*^e1h4B$)bHi} zVcX8|@Tjh| zeh5dzCbUC`P9)F7zGXanY-v{KUt9I(Pnjl5(h&qjSB-!7EyG;xpkz>3p?* z)i)Ij>$L%j$Ktj%0PPqTS9v;B2uB6zAV?+*T$uq@xglm+bOs3#P$!H)Nb-e z5-m!^;5Y)Nf#)HaPGNLt7>RTmzVE@YEF^60Gs&pPO}Yp|zv@F-yHe;?eM~4!*23|M zI}&_OMwY361Y*`}{Vjd3kI7U>IyI4c^~>V`V(JsDN{o?Hp6q+$pG6t;ntnx=&&fz- z>jrC#jO;`dJkZlZ>)(uxg`O$;-_oW-vJIK6B;E)N#r=&2l<6Y$wd-Om6QLdBSOTY( zY9OjiqU9S+K?Ztkc(8Loetrh6t2&Wh)`XF48teBJ)qNWW@Wg9H>>MyqRF2^*9cjj| zv8&f$5mmMMjf#S9O!6j8sAaR-E7x6d>9$*Ly7AsK&N}0sh#x@0+*EGd)NfAXohRG~ zyw@lHguCFz2@Cl_Kys+Jcjf>5>R*5I!DlvIc6hiv-w(}tu~sM=h1dn2a@xf(CfJP)f>aO@1+4eyQ75t z!zL<<4j)XX#>iTCC#pAC1PP++piy|*^3}3A(~H+#e$mcru2}cL`4?XJ(}BOV>y^n@0;;%y*p~EJCX)$Cy_vRdB@vLU#xP?o9g{|o(&jOKx=#ioW5;=iL;4=y z{y_j_e2O{^Nfs&@$BY(>g;E5JOo7WbW?Z><60vc?O|7%a`l3XPbm9=8)Q$f{y^!rb zVW17Q#UqkU7g`)bnxc45Evn{_S8XAnZk1~w)saNYvSu`&*$R7B9*2Abk8dBw&o}g8 z<8B{^3pOf}@FzGjdYo`SC+vPWZ#nl;W{8#ZyS!`HUA*o3tFO9$)w$>12Y><{^hRtD zTHfPqK3P8A0LYW&PQHulh(I#&@WT(U{y$&;=It9^ee)wd!-YAXLWb@_1UD^nT=%M` zT5FbD*a*-P`dIFUSesV3&<(M~qJ5Tv!H#Fk#^~@cY}b+nk!e%bA-Nh;(41n_?4x9z zl1rV(+9h4%#YjH zt;56#07;4Pq-&~0)7vVyef09(x7>KcJz#cE z*QJ!oJ#_#5=lsn#|M~i-U*5W|XQZ%*#2vb!Gm&PE0~WIU$FCw%(@`NZp^tfH1sA3a ztV^3X%?{B{rYa0nL{z|+g_ooZ&A_10wTDC^fpU>dR|g5lMY&LvC`WqX2&k5cBBRW7 zT8JHS^k`d@8zb{kJA%YIu;c4*M+V5+fr`?#ldxgm!EnCIx4s_{q$Dx5rm5(f>Txeu z*mPgP$jB%ZQ>m=qO3W11C8N%WF=J~zzWNoVMkR7%)JSG3)26H+Qk#`EMW(_d`fAjk zVOX~KIOcP3$o}qs}re(%@}rVY&}@P1F!buXX|^hci2HG za3xZe29ZeQLIeQD6uu|D2Rx^gW2o8Fnk#o)f90NEyZi2YX3Y@mDhdHKM7!VR%srVu z)&R(p`R-2f+9Zh_gi`@3)6^uVuPxNfi#E(lC3LCn!KT}=(FI+4^_Z)n9G zv7a?)mla}KP{A5Ez_m>dRwhhzF)}EXV9*~>+!zA*6)i)@_K(rg5%G?sW-EyyB=@i; z7W!KJoa|TAvXM-sQ7#uH;$;7%6Qx^O*JLV|eRR?qAg5bP)6if{tdE+-t5+4{e@x|w z&|-?CcdXuaYygsdr?tL@1VtHZYM7QNDqcW|0u9`tNUT1dcB98_a$^S>DpWXqq zx#;l~HtzNC(--^j)Affj5as|YA(1MXt$NNyB>?d%K63OIgX7HhT=~ii&pG%%|J#4P zCy_|}1KFy_NWiPEj9r=Na$#W%ly&n^FW&jYuV0?Z3w zy39^$$MvZ3x}FRXg&kw{AA+Q%XlOL5Nm8}PMk-Byk%G^DO9M#LsF^1c zwU}tFl89_llR6Y;W5n%a*f$SIT7p#bS|Z zR07giY&}8!rsiU5f2V7@j6f}E^5-8m{L`<|r9gccpyUVQ_epDP0cGIJ@#dEs@lxQD5QLd*( zA#oB^k6KtvGepW&YQeO8`G!l+-}gs<^k07o)A~C`jt#TmV>g3O#v?TV@?^ZL@A8^N zlCGyG`|PvNE`R8;XK(uU5AM5VIJ6de2A8o&`*ET)*(3m|$upMnMd-W(6|8mx+>m#$ zGHIeE@R4MF(+5hUCDCV1<`M#qO!Ya*1O^9(1r%M!7IKea*wT-e$)*Jyb2&$%B9G$M zB4y`G`Y@l(iUbMUPnStEgW`14u%x4)jd;K23>%3V~1YH%_&cgLIn|Y1ws^WISx~WrVC@rKJDKxQpGJvf-G#eGH zumW73b+I<*U@mv{6cq3oHB!)=a&wL>?o{8AnwXGp7?FfkD<#${*-vRZh8C};7=Z%3 z&_{wms0`Sqfy(G8^7$rF>CqzUI!e{-*+}|M*p)PojsPQSEjZpINJ*jAY*bh)FRa-6*tXp$d|4r9i z_R^VWoqgZp#Y-QGWZ23LLe3Nyg;V%#4S+m_Z~l=kogle>{rcSQ-Mg1R@aPja{q&(H zt{f`(3oEcQ0Srqz)}kU67c40WN%=?rPy?i{Rq1+I2nPXjp@+q`!YU`k1sM}7lLk7? z05-`Tl|br{2{$2(S1#5hljvnnTV;{JLsQ;dE-h(8O4tQt!78QQL8LV#5TJBTEpf*> zrL>3}bgK7dv2V#{C90IR0;T~S2VfIB>!Wf7^(_CljUc0zmG?H4rk-LI`8G=RdA

|)_Mf#8WEAgd_=yQhQHuuKH5f5UONMTx(57volPEyNRI2T`C^7>; zQHN+_#MC(%sRT4`Tv!!#Y!jn_2P+NaXJ^p7q61B*wIeYji*m}wn|&T0+SG#ww+!Ny zgFt`5h8GfGc{eocmB$lIPWjiZyKvvN>n?qI)tRUNa^{@* z&jQ$M7zSk@8?VL)yzK}y0P<~z=+t}zL9(Z(C$o9;`UT(qr=Q;P;A79;&@)9m`O90b;Ou-WLxES*k*z9iGuJlpLdP)u0Qc-Ji(VLRzVB13G zQ9*!|YilAc?YAsOJWZ>Mpy%Bh9-o@4 zK;x<#0NI!WM;w9Jvu@+_Po426U;DdTHg0|W;sbr73r8zx36+u1t0Nb&njEF}!K^ON z^>j$O!257jfUNQ{#|*G40bH1}u`+F9hGoJo6{Q`78s%K1y;6YCBP7#Q*GDpwL}9cb z>N=i)k#-Pa8nsxaI6CPd1}a_%CzU|xR|IsW2h!96*=#FOUVyY~i9?C>Qo4?)xKJ#c zmP-PF((tZTd*m7;02LJlsc+RpYY|9Fw5j80Jt);ay|H1At90>C;#L-s%aaTx$xDGK z2{BS+>XJI90+1C?_Yp>I8A67M?8?SyQc-$33Wixnlxq=kP1M&)^Wi8JOW+q(B7$y2 zp3xftZA~Q&{!EuLnq+#_(EW?VByK>`sT7KSAPi#B>t!l60_?yFVP*|9&(9*WB#)-$ zt*|;X=!1o=2TSVdtwZ?Lj-v7Mo>2^Yyr-0=i0s#-&vGof)#Eu)Kab!j|5Jvdbljpj zZKZ2JvUblW?zrudl`EE09fy`reT|fAW3hXuBhUcIcRFIH;QN(QsU2IlF8@DY|N7bu zTX(M6b)e^r!viC86`WKkI1#P7hHej+#Wqs!tOH1)vjT;0+za0QAew>)?X|LE>@)4 zqau2uMIDak5HNDrHDT5f{ScZl9GVh2%6AYzB|7E@B4rx_yMQ6vIG9-1prvC=t<9y3mo)*9`M4Wq?HZc!6D&+33PGlh|aiCqIeHtsH~$6g)Av)hM65vLq7 zDXPT+B&v@3B`0~@;t{C+ir4ADQqAe4f7-n1BUfH}{`R}?y7Qr#GiOpAhdqwN4RxGT zaN#-zm)rozV=#!P!XcDWcClET_RKTSto*;<`|-NRo_*=EzTxtMQi!Yy0|_`Ho@)${ z8V%|i>c;vdg}@{JJqj7+W2WKZtORgT+QL~m2h$NENxLK8lb$^?R(($i5k&w@0D-_| zqu>PsoUUsl6ys)~92h7BK5_}x7wJ4`z;aBK$cR-6Dc2SCP%W8fX(tgLFH+@U+L++S z+FDTYkV-Iht0OT1PZDF;_znYU5{E)EZKD)zOnOzJfE$5?K*u_%&ccSm*!89DLbE!> z7+5?Jea+^r))J#36!J@yHWlKM2E{6&Mufu0u#?A=YMcO`1|5DA0g@?ZuS_zOJ|B=2 z#dG98f&h*Hqplw&>;x(tQ@)L<)u@M2Yq~jfAV04O`K2Am zE@_8qvC&=fu<1Y<4{h#KPj4H+&Ta!kfg@3^Rv3uuu#~5pL~31MzLZNPp&DuGyOycC zTAM28tXSN8!@3K$e*Dfm?@J^S^m5$U=y5z1R;Tyx8XExl{*CQPcjU;-HM8;g=a>HD zkA8mD5AJ*Pn(pE9in8xzLc_Gfh-6reMkLaypFH@upZ$?WVj6?zk7kSGD-Qp{3 zm^TchlPp*rv3(%g%sAXVJzmI3O4ys>n?#24O zW%P`?M#wu$P>gH0I_B13t^u;1ZKM+u@?(M{39(t*31@Y-7Oz;lX8*tX-QRd|#_ZYm z0{9hxgN=IQNw)-j;1|>Y$PawTPwX#@>ylfyZk>Do{r6w}mw)@6J9>)Y(h-tWVK^c~ z#~LK-LgSY=$#uqE>{gXX0>V`E^MnFgDn*=Tma#VH;+$L(^IV`60UWYSJrAWq0T$im zO$$Y~d{8JLm6Ez6S*j)0FcV1(jF!-xO$jWp*HY57R@{=nC{Afr85JPsx=2wDEeKF# z+SDb4DD)PFkxpgcvJbFWmgtkMCgN@BS5WXgq@4&9Jpv9@WC(~lh3dGrq zVF*FOK)N}B_C@VzKeH3*g(Tp(DA*Pb6o4&zO6rG?ZO8L(R&cPKFe+e;*OI!h21pI~ zW44BItufjF#C2{N108R(&o!TL!c|Ka6mI|MmD}(9)a}2_H8uS_5*(*&TtjgD#9nHS zi?eS41;Z40Gx1<9lKZ3&m^?4-eHbM`B}xh<>g6As ztldgk&R5s+n0llTc!-eu31!OX%VO?Crmk*)FhT=~&>-vxaf#_+g16)%DVAW+yqbNB zq_O}$e@|vGHx9HVGo-5#uB4FpeLh@arW&vk4s6Oqcpl1>1|*Bv;dpv5GY*18fX*e; z&~?@LTyorkKpwD;IraeRW=f}6>$!!H3s${h-RVZ8_%><6(X&pXCq$Vv28}$uI zwOX@Tqb?4M8w@BkCCp&W$|b|M-+bMs8*jYvo^(3-3)gjb186k=pIFPuaecN8fIO~m z&+&V5F-UIOw5fCR=FO|0c=D+W9(?Mh^A8VK7FU$j%u*MOAU5gK7gA-a)OB=EdXWSo zNBPKrN<0A;8^AfPfwfHu%t{)_gk?C?XJr&fM+(*hE%r;QsOAXio3w>b!idg5MJbfS z03(G8@@bbUXecpdO8r)X33XosT?#9y5XFj*d?u;g?RgBvI%NcCESW``ZcN`Y3Kh-T z2pDyWP@@1NJ=P!zL)6n|{W5ODV3bL4Wi%xz+%S+RRsuTmdl+e%CWa7pQQk+>d^o@H>_(3c(A4m^mC@maa`J{K_6&D}6YTc#JpLN!%2WHKh z^(25@?DT0cRgd2_<3v2O20)&OckMVi=LjUN;o;$?`|i7M?rX2@TKn?{9=&SEf$o)~ zzG_pZnGmBu#e7#xC#i-Gn(jK;OGp?IVZ#U|GRp=5I>Qk2Y+z~1#91zIdd5Z<*^+^W zkSWwMt()jn;USqwNSMOb4~ftS29e^7#3ghGsjxpUAp{))7b6>skr*RVFGR+ro+~8s zWNngd7ve?{c^b0)fq>&M%2OJ!q@Edh4oX*|Wr++PqdFc}S|#EbsYY>#HBP=tOs!f# z*=MMwE0in|N{^=06e-b0f{F%I0-E5oui2`sACe&}OjXty3C_{xL`2*fl#2U?DK$kY z922ymWCNk)`Aji6=I@QbMGjcFmERyP+S(O2fKc2tk zwKp!@w)?F!_a5q>7r<&!%5;5AyATlpd5!&d;vAHPGXkwhmB%7UBxGxdLWc>=GZdC2 z3@lArSdug_(+to=r4~j|rIN5bXz3);luchro!aCg&3KU&zH&s|v8f9i5naL>`efQk zpy*fNiD-bXsY=Pr(CrM2gqViRuomi9gfzk=rI2PsbVlpCI+i8~rA?~C_(GnE_XgT( zijDpx^YE&9-8y=cgs7MoD-BwHC`?>W{}2wDr%cikzX_&1u9$S_I;gaZ80_;j;b`YF zi2{8uM8Y;uAs9+ZSo?DdunQQQD1<)BhC*v|QjCjJGxNyI(4gpaQVu79QILF7QtRIs z#>O`bcx7J!J9|9z78!xF^}~*gIwRY%x;w3903z3wxVNKL6jzHTz#!W;oYtBvUva_8 z!)LEt`r5inE_#0MoCS|3GZ}g~_8M%iZM+&I@IH({10dgrK|NIusg!cMyLYucbpMl! z9)0G;vp2rF0Hn7Mwu*d-xyTCkGp;P%tSA2xU3d1P@7)fhJd=RGjSfOJ$MYjtwW7!Zdts{&W zgHWW=${vt%9fV#*TQWrvod^d=B&OAF5|)J#vRDPEw4eYZJ7HV0y~DMHJd>d;o979m zmY_x~lX9x>BeYDEeP7b3MUO-t9T~FjNODYt?INrrvNCFtNlKE7)?C%vsH6}RXk%&8 z$Rkq-Er2WHDEI*f1T5s-=TeL<-oFV!%y1NVYf#T9fFQ-GbcAERr)aFj`V5 zIBeHY*wyP{+ny1%dG9DT?$-a*4@X^0ZM+&I@IH({10dgr zK|PfZ8AX$c{{H^X?|kQbtM0r1q04u751hH{;NbvFaw7jBXerr9!kK#9S9xo&uIx3iC{$%e2tU_XHJ~jNAe(%|?)_ z5H&mx32MGlh=36r^N*%*YUS@EAERF_7*6FM3LEgdr57=%z_Jv$ z&5+cufUPufNaRH~52kV%fwPE8t1t=PskO?@0((cZuCfvq497w;XCc>-Kz>FZnVBuH zTJs3AHbzxo^i+HtE&$tmm3sE|K5TfSAN%_Q6haqeMNk*kZ!Aa~rOq`~c@lus6yWN8 z)f*rUr@G$g8is1iCcLGyJA1FY;-c+0-*o+R3l=VZ8o*`%`*mi#0gR{i>hi%|eFGpr zxUoLvzA1_(?U9j@<~`fDpYb36@Q-fYytn(T?xE7Wq8Bu?tAbfckq^)c+hgE21%QQ_AE(k@0u z3Zei+V__=Uh+%N3rR}Jw!+yzP$(J6>ieH8U0+ywRMQ~R7e4F1&bgrM#j3e zBMeQcE%JCw>sC~N5_M4>TR@-q>84DTOuI;Rrjcw(BRjnX$+irvoP#iBplksnN};<5 zyn3L5=eGCb)!jqbGZ3J!Y@--B@M$DPXcK9{D4wtGW%NCq1R$e##L=U^)x2L!$hx+r z^69kS*_Ztx=PB)1T2OjB)_COAEOlOxcONhK}Oz7x}`x1j8RHf z6nscZQDUW)4t=zS70f^db1Yz9%EscRG!{Ary5J*kP+lz*prox<;8&!+SEz&{$2M5@ zG{EpZB>1rE6@$ic!0nXqh)pxl}SkD6tga%{1rBJqV{>lFQth0pcX>L`!E z%#6A%5VXduwkZM zojUEvBHx)ssx1dQp8{M1Dq+I2DEVfJv&Qzr1#H^Wi_N?Gux)<{J>@itz6;;5j93&s z_6@089}DKy->Pu{sp?a#@>@v_vuz{m7-3gargXyWi5IGP+98p`e6`{u%@9((eF`yPDkk{7nTamJ8`X=Rwn zkl~rg$4Fr=R_2ZeLl}`7HsV)A_R&rbA{ZdbEKFaDPbJ#}xD=D962K1GFUT~khfV~T zXN6dtaxg#ZVoo}NF55zz@{y&)THr%fC={+`?aHyu6niBjxi-CbOFyW;h7oqjR0@; zm$18g7+d!bV#`~@*wN#myG)~E7nM-rabfI6ejm}mbE6PNkCI8B_!a<2m@3Cs@z0G9ID&MXLL=GewN${=nG`K1=}$!5hlpGrpUcf ziil*Lz%r0X>NX8ZzELR1uuUYA2_&0Ru$og)`2>t?0#4c$5dq6pP||Z^BBVNx;i$5* zG2+AME&1xLo?&d;J%m?wjbKl|fnLwSV8|#KDEcG>X|j)?m=J&TYfJ>G%0oWlq?{BW zHQ`FxhM`)Lj=y~V^pPt+vS#Ne@A&vb?d`4iTbA`^DwXPIJ7|N1b8XDLFB-0da|0MjGFvC1DIRgoj)CG4 zBAS|mN%}HkP*RRN8PZimq1iIfYALi>KDrDK(`^GYQZ{B~ljzDO(c)N085A!M;Yt%9 zg}i+MG-*NtIj?5833=d&e#CPDGhJqO&`z*Gyw7g8tBH?OdNqI?dpz!)VNdmr_!uez{Url^ zB?G-Bh2GH$`bIossH{-*EtC|!G94{+9vMH!XCeO;G4+@<^{$3{97%_9yHYKggm>|( z(+`|;#?npapL^ERmtAtv3$|_V0MOGQ;WSo=<8cJu-RwUeucUEKC-ex!YCM}ZZC!r# zZFl}zU%_AHnQn?AH&Xz}u`J*bMqwgAGW|Iwew9$dA*}x?M&`zT8EK5)f;PbzYw12lnVgULQg70s}R-vw7fO{MsiU z{n(Ay+&g>rY(|Y_rxqIQ)D!yAJ*iK=0gxy4?LF}>ZtK>4ZELSt_sx;OUF#WcR!J_g z?lo@C)^(usjg!u4iHGVUNJe9^{~&Xqnjb_wmPk|Hs{uo6-jHac^-iU+L?nJF8W6$} zzet)ZDg#&t$k#6r4=kD9suw#TE|vHUY#?`WdO_ zQ{le}j$R;j$^xUuz%VKS)2S3%&@yuRPeg*@zJkOb362SUk@}CYeR-AIa!bV2qgELm z#nuyPCY?cY@o~FGJlyreKA{E~`r*td5?LiEQhiOFuOcBcp;9@;c^%PyY9b|p$m-$Zzev|# z#H!VY7Lhdht2XbA>9^YAE0$5ypJyamZRvzY z{SC3EP&_`h<1qer`djol*SsRY*Y#UXD$*Btq#=yQVf?nGejhWw21$kVWiwm$eE#m+ zzxKOd{=yFc>}f=f$N9t9IK9bt+l_H)jKGIA0^7E2%Uy8gN546$QkQy2=9IxO=!gI* z^wesVvL=`u$H$rS2x6odCJJ0gzL@myP#*SR*jSo%V-y zdX4Wr)ka|Z_U-vKS6=fE!vO&@k*8tQ(EyU|6%I{&#qGkEoKM+eApfN)9yB=J#e z%Tiv?roUzwit^B8C^T_1%{PWI3p;*HHx85>$ zzWFA0?%avK-aeGdWwE@HTx_KID*CUrWRv)qv59X42K=#(ASZbpbAX)eTWW>Bb)|4( z%{9KR@#i?n<6W(7#%c<(b*TSfEZHYaUPEN^5{ZOrZ*Rw}*|X5m*@>Z{Aw2!`GbonJ zZx4{V9W-1qr(^H0fBKHU_|k6(Nv8pjr`Dr=LSAhHAWz8KcJiJy0rK`wfA+s0Di|Lv z_|}X-DOX&d^oy>*bpUA^R@mCo6kfRc99(hPWy*0~RjzpU$ndDy+t-IZdv;^juH86z z=n#fSMo{rQv78c@3@B;qufBxu6aQP=Qt@?^>ftfG5k~;N=q#wYs$ZJAQ#S}vi^|bX zMn}-%S*?!}jc9B-7JoL5{Md?;Ot@%iZb4^P7v{{Kqo&W8j(k&-*mJ$HeFyHn?_Lxt zQ-~lb`D!CPYr(Xgzy7H^{_1m|`Ba0Xa|~xr<52J42s8ll{TtiHk>AA#96We1bItWP z|G#?%{2PZoV{V{Sq6Q$v_oL>pN&qsStz5YJoc>#G{AiC@L>l&tAW$hk2&|FOQDb0e z5WT(qIC$^?_Uzq*{reB1SQv#D1meCyuoMk6X=jh%P@*xBSIt@BZ|U0PJg!bl$}S()h>+IszZ$ z3h;qmSmVo1%n{hXe}DQDpSbg1ZarAIZJ-n`_LWN3@Knb|kcKi1L$&5}!)wnyYuo2P z^T`e6isuZDdglkBF-O5nYf}w6aQFt(f`<+t!r?>R7#$f#|G)qa96F5NzFrgxMMFqF z0+N)EWABEJ+K!N5J;nq4wg4F;cWneImYTZdORjH&gq>P95-K3>fh{3@@_3}#_asU1Ii(c&80VGv`vPnBUfBD?k zKXLO7U;XUepS*|Ojtzi3##5+qxMMy74S+o6L)tjtdl>6(y{)O8gd~w@d2L=kO z{SeI(;^@~zfP|@9a@m13XP@@$fB09w{Sz2g@1BD_7Z*z5NBkg|rC?-WD912F{Zyhv zKk!lUd<+f_;jR4#ap=%N0n3r$5o36G7>qdiUq+ZrCu;AC58_puIvuMGvhX@)K0H3f zN&&hf10;_^O&r>GrBW$mGg)LZ86%U;B9lsi|7~k)LswTP+FIL?N~cA@fQ}@xIfzb) zjwSN%AV6P#pW3)#Jsy1UAu+I?th*(OAmu|G`FzR^FF9+`tGC{8&DTEt$vb`q;6MW) zKZrTi_>T870u6wCFQeD^>@gn!rIhvPQ%^1X{O|v#FYGzof0GxOv*NHv17s~!8Ol_K zYD%Yv&OUwdlYjVce(M{{7cP1Jz`)479lQ5kUnrK(t9af5KUD27kP>fR5tw7+KK%$S z7^V$B2v8^%&_6hc?n8%-{Ra-=1?YF{I_6k( zD8HEmQR)CV{&1AJ)RF*HM2L@7->kw2yFP-{k2O0pQi%jQ+uG34)++VH_V!M+wzs0A zy~D_5vtkHM3oZ?YG>hgRZ9Od)6{VahMaOrs*`vF+2hTnC93Fb)F&W2NAJ6JOhT25Y zzJ>tVl5vA8&pU1NE!SW57q@-vWA_3$*Z|05{`fQwc#KD&0g%UdKpTg9?<4T5U;Qd~ z%NPFj?+lE3cX@%ah(yYoqt@3T6;wWz7+JA&{7OW%Df|~OZ2|GoLtQj+=Vcq5HaL!q0BIPDzQ@|FOF!Z(AWCVgbE{)n^ z40@B8!Uc+3J1jFq$}v^KHgV|iVLbTA$m zGjnTtAPEV9Ktc&6g^oY~rGzRSq$yQVK?Kyl?uxq2y1M?;_08_%7Y^Eq?pJMVkmvhc~0D*JRhkZ7QUbvJZ* z2v;AJveIrodY!pVi{{A>jUMvd?8zg)@%Q&HW|k-b1ZU@#wn@F1-Q#j$X&;lt9$oaYZX}`3Kd1!;loq|gB+Kj+MI;9dL{zZX*80rkC(kkXs|gd zvUzzyMWwWM*S;v5Ou~3OOUI{Hfn5 z0JM*4RQ1N67k<<8zOMiA_VzwQ2;t$c_(1}9GXWIHyLojy^x9HVQgnSsPIl{QnbylucYlN$Z$a5FOHs40*oOd#RxxwG_t2qf2IgGgv>)1cf3`}h9uOMiLkYXD%q z4xJy@>vs2dSDlnuP*4CLe(^=nCriG6tmVn$0Axb{r$A~2nYM4y$n^T37A@`5t?Ng6UtiYA0)mCJiqR>fQD0zrFU_mxPdvx>^`YsW4~Zi;dQASodbWMHr?~!QUCY z7UqXjq?0 z-ZMlECsG?L6BejckY5ZtckiP=tzHi$rYcYfZ;(~vJ-`{o$}CcypeS)I8kt^Q{QSqg zdUXFxuh(Z_fKFZA8F-xANdN`%cGAUT-x7hHJ9laxed_6Hc_v{_r7U)!Kr}ZHNNy>y zy{-TsA4^PhRLb99oc~^*PO;y+y71V3Wb*k7t;`l-qAb&C3RNOxMItu43{@68m@HLL zWwn4+vhyGs=6Yr64P_$w_aPI z)o3eiGBhKC5TeltdaWoD*1)+su!gtyx_aeIAnlR_m$EOzmTkM~+KpSmEJ;LdI$iU_ zGcFxXySzlIbZHY_@$#Sk-}`-g_gac&=IY{(z+==00Tjskpp56ZDFRFk5)%53J6Bls zWT{!XPoaX&Ap+HHdiep>yO%O+#M@wy+D0`?dv@N;PbLg~;0xDI_3U^j({dWy%+e^k zL?5S=MgvuNH(^-;UJb@!LbB?L3myjv z+)e^0khhaA9{ZLEu!r%21q*tw*>ikePEkdoqzJxhT3>a)MD@Pq@gVBvq(Q5fqndz?Z?^dHdgGMumaqb z78~RjmB8}vSJ3mR=fPsNsn*hO2&9)zqjZT1$r#w9^U}qC{cD{H0kfU0?DjE<`vayHMCXpW)&lc4LUex#E{Lwe!fQo{B-%EESFoYR?V49`ID@6 zm_`VR1VXeoYF*`wcC}cna6CB$)^6MehmM})^2qiwZ}8#1aIHWg*hedkOz4n1ZQ3Jm zb?eb%B_SmDmTnCE5)!Cq0w|F63>;7A9)YuGFGNmw^ob`^FXc|ODnb~`3S`C#i<+#q zmbhT4Q8qe3r!)=@Djaryk1ek}JNI9~!2v0R5WDkitc2aA%asW-rE>`p5`idsUc1|o z5bqerO)tBoKzWrJGP5t!&z3BM^vn!k){|PR?Zy_Qk3l1MYt{Jdz#g5Jys-FX=H|WZ z-faK(C?-<#=FMxcd;gKA&KKJrvnvqdB9JvMN@PJgT8+{sDk6Wxp#CeLd1~g@ep>BG z0N_jt3k$u^uPbCKrULeDDanqM;<+O+4Pi6hEVD#tXi|e4-5Mh*dCln;~;_CNdN`%cGAUT-!g&x z{CuCmBgRg;SXeQu%qqr9K=idfzzNHC=M~Aps5e+zH*cEu+Tw*v+ed|c6&@a5;^Jl% z4jfI5CX_x5AWoMBIYa>voSn2-LDT9V1G6ISlwQg$fY;uB2QspU-*;EVil{emmoV+~V z7OT2JWX&n?vOVD;0p_Wr6W7fg|KKMrqTB5ygz#pGb@5@>|NL8T`J6j&VBDr-mtL_+ zN;ntDtFnGgnujWo0*wrBR4{a4pOw$dePn4^P|z_ZPL4fA-M-`LlWa1b2ZXd^X`HTN zd%Zx~Y&JM`>I|&gumuhrIR6~Mi)-8RxT`zw;K4HuMV+Rfq|o`4Kxd|@lH&-@c1~H zo3Ld5YB6vMr1}Tvo)`7=HdwmF#hiZS`FU@&ZQgiWU|?Xm(_%?U$@j5J72WNUJeLya zCsXi|oedIQ5($|*(PEJxJtGVL_U1pKu)GW;_TaBgAbAZ|fwD4eO@jT(r;Hf*!xPgc zf8L~d^CUu8!ScHMu$P9j>6hZCJpIxVtE99hK(xG1$n{pW+V_#NDmaZB1yv5ZzsJ_8 zV;}siZmA_qZHzSz%>@6!wlpX&pLaQmX^c1^_yVJww;h)SOmPN zLM;{~kEC)4q@PhIcW%?H@UwURzOr$XChzO@`U|dsQ*}oMkAwtn4*?X&+rt%)S_cHu z)6@MY&3bBLT6X@tQX51olxiF$=W1>Q@}zVE2Ax)F5gvYJ;hgE8#I|bob=R&jtT8Va zs?1DkD6PzjwOTE+DF`DJP=aK~KHgOeQq7I5Fj*k^^m%ya{eMGAWd+DA2lD#eN5`*+ z2{5Y(8xiDNI(cN`_j6}X{35Jr6mw_RsX(#<3TCsp^|&Wr{MIZ(TS5gLkHoDZknB| z7yyl$s&XTNBqI2Fd&`~Lw?5jhSC=J=pPuytA%t~0VZVD#QgTM$D!aT`0q9H!@p3er zbeiP+*}xp8CW{3QCLM?M8@IsObLT;pnH*mG=wKaC91_XxSDi>`vqt`=G5x!peErqG z{~G{UljQ2C;#;^K@GD55-U*;U);n@Mp}Pc_#gvkg61RHWzA3wtPK~z{O}Ohr+;JRs z4_B9S5s5&JdZWEp$Jpc3Cyso#@4z10!+d>+?@o%S&E>oVI8dp4Pit{5S8uvgk{r z(Rj%rkmBLw%$`*?=|xINcS69oHntKdP+VFDtA1V&yMH|Z1w}=U3avL1NY%{t(QDv-+#q@YS~~=+P6Wz-+Vg z+C|ROIUgWS3zGdumj4*&t+U@3)9T`zFD+crF0KPB{dcLZUCy`l=EH*{ftm@%$OH-8 zT?A57Q~jQM;pKjZPNpu*vnoAgg%u2N3Kf4mU;mOvS#Aq z@YcH@fR(Zm<#H`9R(4udAVng8uR&CXc8fkeYVd$B#!sF4698n@wIDEoFDxwdSulUm z^P7&QjV!6Owoq99BEOW{UKS{2)?9$EkEKIw`$JR4J-BS=@cF;p2vl8t)>6l+`s9XK>BNjT?K;dhU&dd1Y0-6;J}z`8%#nV3JtNnq*Q@)_?<{_9sa{XcvJsj2`Jvf4#q(rJ9-=^-6CffX0w@aMFA6r<4#}s^kWWAV zieAdeA$EmZk2fmVu12p?0>M6dTVl`nv;X+>{O=-Kv|36CDX41}cswLf9|TY!>w_|$ z9l*@htVl4`9Zg3K?>oBj3Z5d%N>^721K;9wncv|-fWM*a>R;>6bZr`Cp^VT0YHB=$G00jhYMXDd>_q$qx zPGI6in6pn*LK^s%JkYb-&Orlue>ru`pdIXCy)P@vs4JJ^%ob@8CFB9B&<3nChO8)1 zT2TcD4!#Qab^b|F?Pb=8#>xejW6| z(jT6)X}wxXpwX!H#hEx(3nUi@k^4f`>Z*FJ#`jLTU;qFSwMj%lRMw(tcxKNo9ahep zGxfWeR?W^I0T7Jo+0Du-tdB{Qj-wR9DS*~uwZqxebXdP>JN&YDKS-2?=D3RQ)t`&H zOQ$Bp`x-=h|1PaAOnqqVha*RhTtx`01%CTJlv3RzQy-bO?MUjJ0+S_Haj7ZG-y5zM zNN(8)a&UlOUgy}h+y4H_bMMEsY<7Yfmj{#6hFB%~giMtlK!^|fu2qsCD<>EJ``;ho zz>%Y1u~|XkyP4JVuQm8c1O=J~dfUe&_Bpj+&h&4awrsfq0CH~U%fjuWj7LTSH|mgz zWRSpJM1Xgn*uUSfbldKB%a^ZsDYHWEZv_Lhc7&_qSpCdqMaTKx8_N$A2vK|tMpLWE zrb+$p@4j;Sq=z;~H*1uAHYdlgtk68tCc#_^LR*`x7_xG%z|LRx!nR$zp`fUghvsnW zQT@~i24YgAC4v$jF$fCn7}cm^{E+@T7c5%v1&AWE z*sJcMTL~`(3EUI`v>BTCWJ^n)W72|=!$6(*V z1CVj?f?5_pZA|eS0!hI@M7e!rqk{ju`;TQ^JH~wn0OxOaLOgq6xOnkm^NF*bTyXAE z{^&BZ9Hsyj*^l{pfppn5WdrQK24hLfsEFj@gZqEmC8q7JMiG(G=1S{4yCnCuTCKi0 zxw&xg$Whq-%O1FRDGOw^VWy)v{PhCK1C@BwX)RG8#78TQ?%(ag*x`vk-k&&_wYFmY zC+oD_-krMt@VuT$00q)B*ZrQHbyilEF+V@Q%cNJ9qL9XxL!9WRtoS6cl)!I-NoeCLM(<1%<$( zR(bGJb)lY`0x41v6e56+hSE-vp{Ci>9{P3aBM*HI0GnA^yL<9R!;3}&H*gyv7$k7l z5@36grw<Pdh87Q8*94qhD6%rL;)Xpi?4^rVrMFqs`pbe) zv*@WaXOZVb@`~Q7Hv`99JjSA|tSn&eppCz59PGW`0uhfSnT_3FR9G*)61=4fZ{$8Cq+kXpqX3&_w94fPn$){qd zP1Fd??z=i6m%KnO7>)pw>ODpNHx>lTyZf^JN^W8@n~7VF&VQ;?I#{$S8_auFu)pdl zp-uG$+vvEMD~rE)>p#8?0+`j5U!Qw!%!>T#uOIYXzHQf>y{Q>PtyI|Slew# z|IalV&3?>%yjOo-c-_~(6(bQOa8D6nd6C;+e{1Nw>__!6 z&mvH-ew^;Xn!eXsMYZ~mYF#z%MC6hnbERP}#fCb)J)vFe{C|J=#^wg0!5?Y0+7wo) zr#?Y4EAq&`BT;X^`1ZpGlh4e|*Xu%U0uj}$O~sM?!fZlS)T;%O+uQ0~9Id9WF%;Q1 z9HkeoLUcM>)x&W+TT}$_kpN=-^tQQU2cPaSe8AF(p7$~9krgJd(@rM!$raCq1e^rW zg2a2_o+H5098RrS6SHc~#tG~8ofvkexV&YRR%c}Ks;Yq}^Z#ADh3G1hwN2Tn1=s)E zS+7TpmSsor6ZA^QW)bDH#tloFJbwl&#=XN)jJw`NffWtdxnxbBZNDCzxjW_D17&)h zuPji3mB&*pNcB^jKr*XatuWxUvajZF)DXz(V>pgSDHw?WExo;^dE9}_7wg-0}OCE5hu(YLBFc?`> zD-fA&u{qNATyOEK)plx`w2PLwcHy{MKSlrwIz^$4bzZjq9bz+Hdi~EUo3x2y)nZs7 z^gEKyKq=Ln-11A)o!j>e*||4q%AWHX@g_Yn%FKi#Y5*!1NTSwB{ABy%^N*-_~wWxNZDfiRhMSYKQmA=IFkdbEqq8#ij`uF)W;J%ES@4WZ3)D=GKSy z9v;4F=da_Fva{P%Y6Pua5O|IY3*5OzAlZ(sYGcRDv;_!Lfw~TW$TQTKxAN` zeMpb4`R!f#SCdB+O+o|%3PM6y3PHn`Mo4#LR=x_M1L&S-v{YJ;y@O z=}&O?`v!#4{7wf$kI|^42lCaF@agq(*geh_S*{;I&HPrf6Gcu}jq7PRyJYHOfibiV z>&F*}Yl@rYm`mYd#@LAq%&sbjxQ82iPEXYzcQMyPJ6P*o@zKs3{heSmw@eIjI*FRmLR0_R zl;K6E;q#zhl%7#D>&H3_Ou1f{dy)tNRkHfWKvoj^wpPB1zsoO2FI%(2L zU3&iY=Vw>sh3)a8wU^L)#mUy4rIQhQB^IkG{aH<9#u28w=Cd zqdU9Xws_DeRRgks$T|ZvG9?+eTFkyi4?t3A8d*Q?4))3jsere>N}`q_?GFX=M5wX% zzL^q-3vQ@pp;!{b{!83QlN02d1@W_H+Z7_8b>R%3O{EK6Yz=beYWwe;-I>gJ{U!z1tPGK;Z@ zikyn`^lh~i3Gi&K%sV1f{pr-fNMb6g)CI-ld530v(6B1p8xcR!a!V^e0;PS?E!2LG zY6+BwN`($hiM9xvUw;Ee{1uYNGb1#(5gPS((PRM4AI&fb1M#Li*#`zR zRCX3@$E)`aGGsdk$F7pZSLug6dm>-huTti!?ys!fNH*zZ+D~}uLtD7g*nr{nSlfqe zFw7VMa8iVPc*9-Ap8$U)--A@J0>!J%fVwMA;K%AF;HQ%hjox3ml>ARzO1+V|=SW4S` zvS00$Zt~`Y?fBJXvKf}wmQOrIQM*f@%+ebJC0IK&?)pdkb$!P_DiM#M8apq5aS zn^13E0yiQ*o&L$%4n?Py3AzH0F}v#U&V#@5o!eU0UHLhIHra`ZVsS!c)0{!n8XsUu zPjqqVv#eVE4T(r6e<&Ti-%6X<@LwT12VibIG`KIs9^DQ#13u@l+u|SyB?98WJ^D-r zl1qlUeah1^1z-~)8r=s( s#sy?QMjMr+D)IEERpNiy|C!PLxWR64Vrr;1mq5Vee$bmzMLv=655&;8@-oiqFFz4nS{J?ohprlF=lgntVkf*>NrCvut)bPfFR8ib1j{^d{4 z6$t;$>XGUr2>KF5aBhMP{(jr+iKZ$9d9gtdA_#&`!GA)mLXaCj1g#rGka#i#Q8}eG zJe2?+;Fu~a$U$iMpRDGBIPfH-DECO)W9sk48y}sc^zF0O@wpexM{n_MvVuu5gI={8 zmq$i^(Nan4Vfjej5obQst|oAFxmDkBl;*PiQ6){q(wU8>_I_NPqFveqh90W@9q+>@ zm`njI+N3vRZmhc{9h|j&Fk|N>PiP+ZlVl`esJZv#?Cg?vv$-YnfF~I8pc)psTojd# z${-~E@cKT5{nX50ESV`aeu8z7=Wo0!n#WZgX7>qGX-@w5&+=1n(=c7bgP_vw#P5P^ zsrOE#(6$=LMS*3Scx#m@yIXM`bi(GeZzg*&Qak9J?x$m+kM)c;*yT};)N)WylVj6y z*`p7;JDws*?7jT)Y;8~CJ5+>-@~Ji7=CL#%^uJPk$^s0{ZHkJ=VR;!Fp&VSuKx0|J zaqv@!Z_;j^U)3#$YyDf`bd4$*)k6$u$BU%pFw3m!0qd|Cb-f5peFcq}K!SymwbzE8 z00#yH`P|kTlGhSd4%7<_jYm`MGAYP*9o=QB}DduOxC~4PH)*W-9lhOJ1tx23$u?R zwa=N_o|&Xrel(8{uRaEz(PD#&SDR4D?K1NqPIWkoVe~(J|0fKa9D=0x(l@7N>27g| z67_R_)Mv7O_bitLf{fkLV~Lg9P1<(oGH_|j&e!bc(^x3MzPNt}7+rAo5W4f;Q*o&# zbjdaU97C=m0N&x(%Ubw2*f2)n`rqKQUPik{$LMFU9hrYP_xsu(}F@xL;O8F0&XFBGMez(gv4omAA@(BB-&kM zvHCbIrX3xS3BWm{^Oc5z*XTv8RVE$)|1oHNL(2|_a33&qi>N5(Ro!8&ho4+{Zf<$ z5Bp3{3u5&cz55vRfMKS_J{*43Z_|64k?V;1v_fT;XKWt}ESbWq?A5h1!Em-HY4rIH zu?B>gKfXK+$u+3(?TX&5jZKWk1&f{kwElRSFg=iqZrbcl3d16Yj1`X@{ap)HYs!)Z z&`K)1*TF&jQ=|9ORHm6p?9aXx3lPS^uaw%H?w2C7f74JyBhbQI7$gT)L$p#S3jY-H zw{Dn?Laz!Q9mHP03!w^pwhKGP8;SO$WE+$L&K}*m+u`Qm=faP?K$-p5w#uv`PyANFXcS%tM&`RhCJSFZ+b|4leG35jJ`C~ z#JO5;7^#dr3FR8tjmz};OMvwq10PDhIe&T4#zCC4DMiy>`<=`WtcOy$m1rViBKlJL z^lQ!86ntKOu9n7&7)`C3)+E=cJm?0vILIbXkA&yz4ihvnAfjZ5d)js_&Gz{2p@6= z?1?Y4zBctfxIJ}=I$!UF^57PmCumhomMd%fnQ0?WG>(&(7#YvMQL%*vVnW=10}2=# z+xYiyYIU&@fwfSM!Zg8`{fu)L%LQR?!2>Ja>Qed(UnVb~3pg^tPe6_&ct>3;Cw;P+ zO|^;K;9VUTjQ!^dX~UbRtrjUpN#^Wi@MHe%%xluiPEtDq9j#tr@SZw+mKQ^??wI~H z63jy@Xp&!T>KGSG;2>)8@o#DAI{Rtz*TCaRj?W4hpIZppM=5c#T)k3H^ofvqipW_r ziSNJn3Qxesn??frCF#TkOwg?s>lpWDVSAyf_oxLJXh*+aNKYRgkp0R6+2-GD0Yh`I zP(-G3*X^sNhQG$^TXmVM1Cyz&8soWVCr`tIn<&48qPs!NwS`;H%xyH$Cf*Fc&Ed7Xti_|kHe zy|%%Dm-oT`=|)+q+%L&wj0O3YgH(k$OuBYHmf6QwR`T&FukUc8_1{y^ywqg3)__or zGw2cKTI%3UY1SVxFfM}L6N>REW~fU8Q#PC5JF=7G?@$@`SSajhaip%H`p-_~6A1RF z0`Af~Be^79LY|Oh$0|Z>znMNt!Go>WNa^(cRmhbeFSrz_ZuMUnPx}VuJ;Feh&7d1Y z_K2b`XcV#kJD_@6^|S;d`YU^@rUH3o6f5Mi5KzF_*s(Jab?+EtOlZN1vQDz5?drP2 zOb_p28BICFmSoCNhQc zQ?FbIV(Ij0TN^64ToycXkHf}>YzZ$jea!1kDkYgYB8A{(79^)6MP?6{)csDbJ?-H> zgp$|3qP3!CEhg;B1h003I7%?tdo_=xF6n;#sRpz&`xSlI(PBY;nx3a|qWr^g6~~8Q7rr?&$IOPQ%{3=g!ybl0m>Q#gaS4M(;R0 z)}>iz6|Zi}iKoY^O;*DH0``s=u-&r#*-dqpRA*^+Ynm(TqTJ%4Jf)=WnJzpGa;T~A z$p7d`%(R*JBTcsdKCgQ9#j|G`y_Vs<5%%l!3*Lf|hw)i1?F_@T9}XHmFMmmegvb&K zOI_NF8Js5h>??XWYL=OXPci%|^FYb&_XHx7w&yQb*+J$(%@AE?dhM54totkD|Ca@l z?>!2RU}y9=9pod$#zs6pn%#`@(+S>XjHSD}Ur4Zzci7_`WVGcvH+-n_5BSqr3&)bx zZ}@JZ%C2aW^WTl?l84Y!17(l8^{=gj7tD(AN2s(9mi{{fvqqQK-)2Gl7b?TYTiXoi z80+;1L2!&ghKv4^u185N9Buqzzj7zT7P@fIBoY_LtxBhqCh!A@@w-O84dTlyITch! z{ugfH5Muxh#JIS%IlcL@ePBu8!1L;ng7N7 zj*WUP$G>59$LSTe@S~0!2$Eap(#Ki$LauZEKl!EPuWoGNAUsF-qnpdqN#aDTCg~4f zyrq%W5#)InJwg$!cL?Dv?a*Y>^D233BRlPmj=mBij&>hDos#b4Z&ADff4uO5(7JPd zm_3I?s(H_1$b-)kIzL(PKQlwi3bZKy_eiSB+6xkigVjKmT|<@k9!Y1JUVk41XEVmZ ztqt@n=f(~RiSK&1^le;xXnPlR*m0>gq^=0(3FxyHCcnAgMacBlg%~(zGz-XcW|^Xd z7c$&o@aIrB1qRE~Tu6=Y+G~8sZwn4Y1*9L3h}_lM#m=b$+b4rH-u?<0D0SaAXMAHH z|NV_6|K1O0PUu<6u-U7F7lV#VEG*0SIvZ;pkBWO2E{Y(2&G^fHq$}09_|?av zvMY%vD?23T#l3#Nz|qh(DtnprJy*W8O&CtJlq%hHrYxNg87II&?T}O@8=Kw@!vbiB z*MVk*ouT1uj-DLynYjRHd8T~QFp0d&?W%xzFfs>s)NF+u`Fsh-L`0pAIWnl?J5hJA zmQ+Fe{%I{cn3T?Z1_`Dwkt9z8nMPfGOV-NP7=hqgu67Ap({AvX67IK6^6jjf_PA)WQ|oz>&4<-d}!{c z5K(^~sAJd$#qg(yjVct+ng35A9zmBmhlF4WjpRckb84fdTX3rksl=V@xUsjBTsr*0 z;1X)Tkq~h`dxN@o< z)WAtB)ATP!hqG_;Mh@>Bw=s-Uf;$|f+81E_0PzO~_RDEGWX_YI3JQAsYxyrQXiR6X zwr-4E{#;bt;Is3lpMG}~=h*JxR{%RBSE8x{E4B;$mB(9t&9k#Sfl<*Il~I#AFNViX z82ekI)DznO+5I`WxmU!zkJZ^BDacOd_h&>e?HEccfS6XJUgt`45uwz$t)(5>|khJVv~ zhF`Y1G5A%@lveouE1*!5adZkbaOj=CH{Pq2eTH2AvwRL=KlKG9TUf-z6^u3dmCI zqdk@g_8Mp)lJhMpuHUFEuqyg; z3tRfM$G3TI$F#{32eC+a>`!wA1tD&hcBct+@pwdI^P)URSIqfHyAGDgdMS8ii1L?v zcgye0THnRr2CbxJ$r#36$9VrUKlbG2zw__3hCkD&pe?v~vYOG4U%5LfrH2S)?+JRB z3(gf+Jd~*6`FK`V%z##`bN%iA)*X|ek<#5Co^BBn)8jK%vx2S>hs^f>&rsK$--gJx z-b>;$?z4n^HbkS?u)e`{*j zSKZr?SqQ|N%a-2qPBSkSMYY-&YPHI-zYjfxmc7pARilswYO3Ptx6)GvR)6QU&mE{2 zOsgt@Fpz8u{!8Fjw@El@pe}8(F z|AXc3o%`SUrnbu`6G+MOgF-*G9{b-^E8rzI9Q%>&_wv>)4F&%)@zb-p=O4hOtZY%X zn~ev?N(pb6?M_|>&-?zPvOxB_sJQrGVnC=`>ew51auaBhj>pO-XuvU7^a_mUeGtFavQ{#3u+-W5FxPX-ZgW#A5RlleFx8lSYQ7OI##hiu>1x z5aD7#$)3TpmQr`u%qmY+t@cu9(Z89yiBdOlL8eBX5vd9Ox)Gn0Tr~4t+oGMdrLtSf zGHQBh@Z=I~&9zmFJlRzY4+lbgtV74>o)6dX>Gh2rrH;}-!M(?5IAdMjy(geg5Vyj? z$DuQc$ARyBjkJrda@sD1F)8olwW2=S{ZUqZfils{KW+^hO{b58aq%F8^{<%A;=E}q zdljh{^Q)JeQDyhcw{qWOp!{iqvpol2bE@!*CHuhQz}q}ePNiP$M@kLf-oC~A5%S}m z{9WD$Mii4LDNbr@JwFJFwr%uYTBWk3aRaL_*nC7@Ix41GS{XL5m-Qb@PW=^X z-bR8hsk9KwF#*KSf-e4AAkn}epowo_@;t){ppSDxr4J)Iyf zxZQh^XeR64i21VKebKuAFMUelLu2tbD2kV#6KJPol!PvjVt(}|{18>RaxRws%28Lr zpDzHU-T--M8W|#W@I%k?-;17OLa1%uCo>X_fzp3Vhry}ZKNkM?ol=zQZBn1CPth8) zg(HH#3JJzxa;?HH?JFAs$7>RxzQF;xseeynR z9IT)p8`IX{XHW?|jD0HA?NhyBI#v?iH3(7bX~%iC%iii^ifp-z=!5uGmM|DDu@Ioc z+T`s1Ik-M^C;xHB4cyWf(aaAi95Y!4hP| zm`9&=2oTk#2)$Pz!i13Oa!#ST%jB;t)G%mIP1=dnBZ@1QKNDx#4xlD*!QsynhL>uV z&yR?A0e zdih3XR`%i=7PKRZ5!}1?Cbk7$;W0>_OXIB{2=UWiC6UXcF%XW=qJ`9H@hQ33ncng9 z|4|v%ereTsC^E7Nf)@n&aU4_Q42|@J`}~5d|00d23?rS;ZY>h7Up|ivHH#cL^ox4x zd@M)Da&w6dDl&HO_xk(72808w4k7M%~)zAKHxcYxBlQ?&JXdco0 zTvPl42Qn0|i`9-!$&SR%r(3$7`Pw8){j4uTQ^&hfWtfE&LL|5m9yC@m)^E31ONzdk zvV!EkPi&ijqCEFthflG8sQoRg(uZ&+(&Km#RSg9`>0>+8q%fh}`n!<))=L z)@lu3Li~B#1A5Sc@4r}0x9OZ^rT1a%gvV9!pQtZ-*Hvvc8uO^s8Aj_f-Uneq<#cWQ zTbWy!s48BJ<2kLUvLosh!v=h)Nx{qRtq7k!vgy0_Hw3G&`wBE?b z-ZX<>c}**$>`6)uc<1cR%l{~><)+&lp$?dc`kS|?^In8^X~)FzrJ6949w%@lDLZCJ z7LNC)jpTJJf-p4_wQiWPzAER#yFZZjIEdlpQwfk*lOKq*4FLCUsP_0MgXQ@k*dO2Z ze$^MJFkSOM8}Fu+bgG5J_5fm(;(kJWW~6vZRmKTDSxH)@g_3F4zTlls#3sQL#!lAv7$sl`jh!Q%Ym9l>F=)PyDeA z=UChwroSSoW4|e^pXw(XihF8zOs9a1zVJe2mTRqn02;qQt)5LYesJ!dL+0nx9Bx$tVU3n+cv^}__!Q|1sK!0N#Y%xrD5Btm2wRbs#bRq%GX!*uy9Or!8 zN8x1Qa5I4U)_N?tG9QH6zsFM2$u(rp+Pz#piFYkoeyNY+V(~kZ&TCCjC?6bza0#4z zwVy_oF7p}f5h6^?oCsj^7~acXJe{U>93LCP$3dg$aPe?Q3cAPFD!D}O3h{?N1boDs z#`~tkv(6>{Cn=&BLMqb*tnR(oh&9c`kHt|u&+``$&^Ku187MOXrZ*2Z+Pp`{-h_eg z&HWaP&1givKCeE{zZzdX3Rt3IWe)m_v2c3-ulsDvt9o$%WH<{J5=aH$J*DHcHlBY0 zexfupOHnzUtSO5!*feTFvO%D{C)EZ9Vlud2OQ7=BF(9xkui{t5e6X10b zCO)Srms6vc?;NGi0o!cn16|9wOZ6bP-!93<3OYCauoBM zkg#FX20f%h1xXCC|GWj28d@6Uv{dh^<#(`=;w&sBTCS|yZh(tsiRTC3_{J}(Cn?fe z#0nWrUpg*k)Umz2aW!`; z+jle=B}8a2zk=_%&KV>M`}c_(f?N*fJ0#CE%$+{9cr9%Lpm7@{ac)7Go`ud{JvT=$ z9i#c&2Y574smhawSuItElqLOqOoXU!nDoTH4x^7tmhY>B=PN%pY}j0$Q}AINceRmR zmusJZxiw4Z*eQl7`*bKJHQ^S$0yTnB%y}y!qfq>A)EaPmlwBQN#z4&e!s+#wdfNPT zzfvcur}aU{x-%G?Yq}pv^a9{ozgO~yGQQTEz4*inC>99yIh1}gz4o6HdWV7vB5a$G zseyJDoo{L#92~qLr@!@>8j-0FN}SP)R{6o~Mc4?hkrC5n`~Bjj$L~{eATUWXwYDtX zGOW>cPmSc~{$}PSBraC?rBE?aO|5CKA3%831|*B37H`rFLzK$!NZnq^e0PMhcGgl! z)WpL^*$=g%2*UCQYcC~5BxFFKR?rx{Y$c=&Fu8Qm?L_4j>|Pz(A+$@?8@QRT7Q-l6$*5 z26Q(_h;zGqFiP!S8r%6^7tG%7W|Fmy_5K~9Zig37BZhY$Jh&V6c3{5(=LBlB%XAaE(yW^Gf~ z*0FYq@92~FCnI3p{+f>E*TuHwMlS;|woiN;dy&6CQRmBd*cz&&t^D}TCCqu4&U$@^ z7<76KjRBla1_0uOL$_N0=*e z8PC+|rKie{wfbI-)q27eG{Ks=OYw2ZIp@EHEPk+8+8KYiHbH;-ZC&-WzpZTT_d8vX zpHvD~v$s6ES?F6zF%ha$<~P`&rURsP?M5X9t#)$CBkIbZ@vhmedZ5)9b^0Rvhwtd8 z*}pYcRtaR`hf71Z{iF3rL3WDYxEcVKQL+_qNQqy}*v0P8OZ#}BnObTt=D*2OjFfTB zaFarxz1tjC;j}V^=3ZsErD3n|Uad;h#qX3`IXq(U*FJXw(u#}ePWVI1O%n&0j zdj$d$uwt9GN9coMnESUzu_3gWHZ-|K0A@#Zh5=?~A1GoC z8L9@pG>iVgJ`x#Oihb23=-2v6|`eT zj6lnhkPv-7*l~Ta=)Rr1uixln$%bu<>O=Sb(<2h+Yj;`rpTL9!9-;QDhtY4bFfD2) z&1)ygSDk)FXD=WgDr!1CL=d(OC4qS}y_;#@DZl{OOJozF4;qE!^^wa!H; zH}0mZ1k^(sr7CLRf`Q_XqzxrS%oAU-`kJoU@bvbuMpz4p2p4uG3KrRkb(8xu0>^c2 zDp3SziJXz45VVB)G1U*50v-hks=^8Sb#JfN@c|VGXGi_H#&3bLoaSbab9f~iJ@Z!;IMZxzW9(o_2S+0~x%*Y2r$DFj!QeNj_*(bu)+ zP8J$P@+`@6#ah)c8zd7v^OOiRwN00aljnqz_uFsm80UW(G0Q$Yir*vRmTLeX@2S;_B@7FlCY|}1Z?}MoE z-st=k0u^{iS(KOCWJg+6|E%F)<)fDP=pG<2&w@U*#)?BSp4Q)T^yqIUj{Nf~?SwE32NcBL7Ph3ruBC+VcuvYLRjs<=BcR_0{ zv?3c1hpqGFI&2L0Uj$y%Cl_t^-U*bY0PImy-pCujelsuE*G>;Xj#%~aj{-S)@W)pS zPZg2?j2%&~vIfXlu!n*Wjd7g%uG6}~ds08c+%P2gJ^hs1dY$;GH(pzm0rl!|8F5Py zNWu0$jXwWao2+<>TgUc#F$Ub{BT~Ii%Zd0~^u;5q&q@Yl6dgBBUT3$emjG^NW;j1F z<9!NXRR|FIAA`UA3cQ@Z?k6A(27|nco!_scjPibb-*9wnQhh}HL86gTHA%dBLpuRn z2_BYGXy}kCc0OpUO&&u{!5#anGX9w<-n^Qmkg-KNJXCJt;)TxJ95a)*D;i(?Bto=? zl0=P+i`qT)(7-h@$RBHQX!cpJOW|`P!?~2PasBM@qRN0EZWtHK@Hy#y|9U+lss|$j zZiZB+-eMTE2-bad{kJE%1Se-4`tu6#z3eP^rAue%}L) z(r!!u$q10|L~TyzpX@3&G@IA2bg+`)H~qnxEawp9eG15{hWt+|AZBg0)`r&l+|#%0 z#_L?dqoHG#+7}eDesAQlAz98pmc)qGnR8$FWmTo{2&M=wp=IZ_YQbu+C6$si2ho6q z@Tx=i4J+?VJ?qCGzyVZX*n(Mhlal;%Y!!Dxo<-;8?x*V77u8hyZWX!mZ8w*$T|>Ru zdaXL0Kn1C2DTfgvr0dK;C&JRp9Li;^BtAKq^T(ERR9Zylb{*1oRnEIo?d7ZC)AJhu zxqbQWc~H&$wmgg$e#Gsz##IdNIp`d>@xC}}&NE79P3`fV{;m)XCwhOI{5bySg2rrJxg5wmPtTSa04Jq) zaN^?p?qQF!2_^mATicirzUMMdj&^C9h;x(($o&^R{)X6-GsORF;pD> z*XOMVBj95t3yQ02TT+BSC%eS)7Gy}iegd55VC|n#1tRYnlZfN!a|#@RAwdPOmg)S*S3Ku(uB&TSZW}MIEP#9)<++U#iUijP`qR5`ihw>ds$bNV4-UG~o>{p0YVhXS5!^-dFC?Tn)E4z;4uf*TqoQWEr*_=5 zlVwbiZ)qd%-tra`(-p8ryd-DWpk%UO6G4Cfoi`5}E{|!qJ;^OaBV>>)809JIyf1RU z|9tiKxbo5HcGNb^3w}eW-v{uaFF@)-=Z6=od^;(wk0IdWL@0OxsV75kS2}*#E)EJF zDIvnz;?|aoqK^Oh_EG$xYASvxE+T@hHg2xa^_`psE^>v(KJk1iH}Z^XAZ=y7kVwiHg5+mJ396=ilwJ_T6Cir0Nr zRKak3VuZy6#V!V#%9WoR;^Qt)-|#%|jD?;(M$Bf9*1rQy=lI}Q<Z!w&F z+x%ta84aLlN>Vb2tDHu}*Xu_lJ~8fXLPcaAXqgZG6`KA1N1}Y+r}R-$@b&$13R-e9 zI+@$$gdpmHha_11UI(?L*&V67L~f5^a3*Oy=Z%l)f1Y&R$a~=4P@D)`Sfd3bwY`!f zV9#kFLmG=T;Jv8%=a$|u@R+(hZFRs2P-u~$EGkf!=j|3MHorcMKNKCa9$E$ro}O)m zYK#f2A4r@N#xgEvw{HRcFGTPpN_8Ok{KqvWYXB!&Ct6=zHK^TR0326W({g=6ZGx%* zBLG+1T}`+k7axp@54fg$G=NGUYt)?nQMB<_$3QVH|I@`pjbn?`o%V#&KBxLz+n3_! zgXTSm`ru@Oa>myZta97M|M5=Y2F|(6GmY|^MBPsy;`>MGp0@oUmcek6pQ%{Bl*d5D zJBQ&Q%BD3nOFeL|*))t48qxdc0DgoQ|CthK!MC0@$$;b@gwYyLO;f^G(k$yacj)TSX)83r9!{0%bKG5>SsOAKJx{{9zVXKx7u^74pJ(fpv) z8z>7nUseT>Ep&uy3MOQxl?L`6z_*Eq-vUV?c1uGpKDzBXMd6aYY7pka1t;{; z|0%?u?;4A-Q0&0Vsby+jWn{IZFI!?L;TiuPBk^f+O7;U~E^=DRN7Sg0P+a0c$>ohI zpG!U=`g9|0X_fqD-Z_K7mV39w_y0(GZ*s2iX+v)=fH zZ^6!T6UT|d`G(ehy6PLapiR9nVovH%y$hLl`TQ|yWm25?*fk1#`&gy}eLN2>Z~=y9 zex`2Ju^$p;-TW-|`6ANIfN;l?>?;#YS0?uN@0~46pbi>@B(mn|A7mxYy$`}b365+N z`~7Y?OCwgqXTVnyv?sj8IL@G@BtP3;m=`)YTe|L=w@gTd>66lSSm1W~731^Xb)>AR zToqt5?5E~k_4(2zI15rIAp~Qk{P$@s)@m`9&Z_C5j~67Uak+OvHfAP;{s3UZ)EEwW z$J0}>u%XyBe|~!rqvu*1f0antlXrzQQ-1rZ=^G{@&_XQ*6!mep0286W(Nl%BU|Yj& zxLDixw$=6DCvashWGE}v$8sAVhA4nvGZPvIgJI38i|OqxvCW zqjjEX@CQIHEMT|=lN5#}WrG>R?B*$im{6-Rb=WpJKoW|d!Sskr_YWnYGRC&2d_UDc z>epdh!9?^wPfkOYyw@x5W8AqR(uP!hryNg{^ogBoeqiVO{cI?a4_Z|RP{&dAI$%zz z7|3%}pn?gSqxtjKlAimj!mjD;q^PbX z^cy~m=(!>=o2zZiuTudK+i!G*;KKLxU~&BSJxK#-2M_e>B`@lpZ0srjhAGV*QmS$c+FY!}DgX5S4HfjO6AMwR92%U9U?%v`-#m!hZE9-Zl&Bw*sfsx>8AF^>DZf2MA)i5zWvp$Zcd*e9okQ999 zCl*4q8*mPmLnPpuinn2ks750>GD9q9Z z?t+PNp4?_RF3IJf?IRcOKCVNCyAUW5Ota1}d8ly@3kXO!Qx9r!r(R9@XTfui?yP5i*7K)<|p)Isud(}eLJDrrIj-;Fw0hUOA$r#&?y5?lE^ zrv%KYtNyqOrxTa)^RcPDNz}c|CH0XXXs?&|sP3`}8MKNY7lAew*b+C&Bv>5mp$iBl z=GdfJW%o>fanJVw>ZP^BN0uS3;BN8@I49Kbn%t|4VLg$+ECswN7Nc< zz`d_~B2{R%=j5iMWiT;e5-6)J8*r0f10LB4+MCpe6`ro2@_7C2O%fKm_xLt~grD%8 zIE!GA76f^us=mwj8|;%#yZ^nxzlQ^$0?@8E6dH%U#d`L~(PBv}4)pq?sEN?ij>kg$ zA~^tdM5?I0`n~D@K~44Nvb*~95g{I~wue*bH_Si^O7c8_CSg7S9P)pBg37BpI`;?k zzXLUMO!un~YByp;jaHH$qC}M-CgM(9CR}LF+{8J>h)z&1-aMnPW!I@ZG+s_B{b;62~0}bI*Xx;j14eM$?Jlw_J@7Cgz=zC<17Q7)*?7d}yzC zD8Th&)vhNj?TC=iPHmx(cA1)c(i1v$ZcPc>c$h1{JPgmaP zb2swnN52Q0tdi?z&0MnthSaQx2|3WG51kmY0anGRdDmUC#W4v`ous%6`Gl#MbVv#J zKvoE9l5^IM_;+rs@o)djh08x7;!7SO{wKBM359pqjYI;O5x$Ybo0?ZVB5zU2c5L6# z(W`H3Rj#QaZ0$m>uT=nMY})e%RtBPpf%7_+WtP0Vtm3*Nhb24VM@eO$r$3|bABW#+ zd;pT8ntKRSpu8T`)IQZ@+MUEwJe4x%B1q691jLF}D>EEp;oF7ad>q z#HJ{B`ba24WN!fdg&`C7-DegwVu=n*tG|QX$LO*v@7aRBbQlbiSmhtz3?`wz#i#|a zSUTW3Drc#LzLME8TF;2(H}ts!4S{lOj%*u%NXYYeAuy5S{P}eyv9i;oa$~R9VaT7( zL!OAd5u?nsMHuU$yE~{=L|~Tw%#VFFeKbT^T2RmrIB)hG zFd7~EJoSMRC}GHc5(52>&EG9;vo{49#f92xrWJskth#I80>TyV70#r+h;NN)pr7Xs zMPf6?+&6xD;^C!xgd%Df{2fYypD)ZUhn7bK|DHyDJXaAVOt9h^DEXl*Cf=(Ysjga7 zldGe%scN%U|8ptn`N}=XZE~!P67f%O<6RRhRyd_uRf%c2Os(F6q1F87sZZ?0e^1`u zWPo~poMlvx?+x1#KoBUHJvL`&v9+~+2XZ!9FcsW?DCqZn0%8u{+SG?l z2rv-<>H=}kY#qRF>WfILb5&4s#xx69B5}*T;=rWoMP$-_dMJ4>Q}GVOKMn#uo-EaP z@(}QZW2un^tFKfVlgpj#IXJA+Td8gV()`QVV|uYSk72y|z58svx3XY=Wm2mvTzv@O z8*mqJD~j`Cv^ECdOT$3$fy=*yEXP0nCQydWdz)NB390eqjy<&vKv# zf#i-u4+Qc8RSVqmmLovBg1LK-r+F4k9LDy96ZA6@3UtKY!E{2hHR*5MfuymS&za4a zZ+VG`NO8draS;B*=6@5VPPYyE<ok3LJ2&EEp`63G@@cHdq z1fMr+fy(Q3^O#1lXn)2KQ1#4~JCP~dAs>N;W9y~&`^(MhKVX2PbQ}Eg2D(JD@F)X1 zHqkECI>oDW1vfpyI)?IQ8NlH}(o$jkO{-Q-i@!WK#a{MSS-uB-11NO5Kn+pxE3Qha zRSw8&uDQ^Ipm3XSnBI5v&K&>w`+fif1dhjX|31Gf@2uQfCsj5u0_`lzJ)8zLbJJv8i8c95eQZPd6(t%GS|11qt`(06kMvHS93uvm*QZ1czhIMw*CLP?>jj=Yzro6Nu^4W%0g)1FjB>vbe zvlmzcZ@qN-MQQ@u;n_!~LLtfNSo>7x`u)?7`rbEa3sB~YclAu%9I`=U=a#i5^xu*?j}3B6+wO2r)?lf+ z-O4aFV>YM;j(Kr7~jWq?wcC~45x3311IVJ!#BY5!vdcK zpDCUT24hJI3fl9dYSgeZ=$elfpn>|%P}(JyxSay@zWQ-`c|ZySx_1^*KK^BAYe(70 zx%=LlaO^qhfbk=c2Ep?a2OdMvy1x^+yY9=9Y61^eMp~N>(|Cz1dT_G96k3z8O#{r^ zS*L5tcH`TTY-{E|c};oRv(Fne6=Md27O_r^vv_HnZHf~{OquH-bKM>%bF?S?lpQ!U^%J4H`l11CTT~a5o!>^QytA2x3>r zf|CHjs_>wQq_|}JhKaHMOTZxaA4-*3JST8fP^^dbe9N-mgMv3Ixg3YUJ>ISDkiCit zU5%6&vrczFWR2ceNAF^QCt(ch@JxfdvG?(9LztEGURMLnhG18`Yt{1STMd01hq2D^ z_#>Vqh9WZ$X7Vae`LAy4xFRU@E>QZ}Je~6CuI@EUnd%?*ZzB1>MNT8*(i1yrxu2f=YFM?gYOYW$rCX!)lrjxZ^ySzJMPc)HEO2dRLhy@D$cSd2MNW=` zOGMf;yPZl=k$Q+(|2fk+iS9o1 zaU4KE_RpJSNQed2S zu~Ga$Xwe)=3<3?61~)!HE%+~P7}PkHklw8%u_~a;yl^I=x<*b%nw5&5_{!dp3>2;J z6C-(sQf>wceZoK6#Qi-!g8BufTDH^ws`Zo89^c+}$=oem-q8cKLmazW~mRTxGRDrwiL*%u*E&5J^CZ3kCWBjWU%8( zC#FY#2DI4~>16oJ?g$&^54N%~0IA2%+U$qa|12Q*VWk?NV&YSiIa5tYyRP4#nz|d+`TWNvjLvJ5;%#4hQG#oni(!(~bCD}} zFpY;LRR}QHrDuQTsrHHZA*tsP;)mt96{o|9`r+T`;mtdwut7Hb1k0zZZ(C=;!_rrC zJ{kK)7+OPsvb(lu1ymn^b03T(P$oC7y%|cC43bp)WZeIVlG{7huqLM?K(gUpt6b{) zq|Pi{K1HR7(6O;03ZT2fy4t)Gk6my!klcaVUL+)`@D&3i$eH3+Bi|=S^U&MpK}@h< zs)n0aPv!2gOLG86A?WJ(Ms#gFOw%437uudx2kW~L8H`!!&U_+O!;5ACL=_-=lWh9_ zb8-Y1#m!r#;b}fRnXL$-?owHcZW@`Lo1lkmsI0mo!4_HJp?2T8}%4GibkKV ztNEH7u)%uP(7dRm5=}7J$LUbO!ve`@ArNpCV9cbS5Lb5o+Z9P}STNX$2a|`SlvMw} zQmphiY?m0zEY~Z$MpO7t|7&jQbD8a*(U;?MfA+_@L|;7`l4$K`2H-f8*Qg+5-XrD+ zf{iUr1*RhZK4Sw`RL}0&wE&g4o148rLVMm{!T7 zy2FDqxRg4viTOON%XDqatSX9Nt81V^CyKbYOm*39=C!XfigECP(5Cwrg`YIn+F|Un z&8m3Wr-NY5LkYaW!ZO+ug8cQnsPuOx_9`%SQ7Bi`kAfI6zy&Z zErGd>Q>6(LfM-+Mb#led1QuqFgk}6-O01`rIS_yx{+E1Sh2g&i(iTJJR7ro?)ap3< z@ozR{5gHF;o7``542-I{{aZy ze;Xth^#cHpAGRo8TU^4|6maeM<;*H42bYoA$bQwCFr zS5^lm>6Oo*n*o%~OaSVV- zq{MEfSwZ6z-q-6e0S5^1lAg|_-g2@~D(cLXk*#5N*YZL`hB#*7fQ>;xiBAATHeI^U z+WUF`-ll)gH8L=otw_}!0xudRz`~={Jp@EI9J~^-4_79@ut)@nJ{#+gHu=QOtnh~0 z@X>CMax$_IbQ6+BT7>{pVqzc_(W{|;m!|}$>yfo*7G$?MS+r>hl3-4V7YBAIZ&=QH zmgC&}K8%@=Z*ao*kpqc3r>{I9bZQbyK_%h_4z;5E5_YJUfj|$Gi~$GP@7|z0%jb?m{r~^V<8%Q7-}bAxlLN`wZURY!9CpM;ld3a!EZ0 zsaktpq^ z<+WBl(1nZvo!{StMR_pYvQ_{-)H)+ejiR#!orFKbTycL%LuZ-V!!SbP(MSTS4Pci# zTyWc{83N$xJU^7HLHZC0#6!0%7;MYS?A!qot%l}21Js*L zlV?GGU3~hWap`)M{iJ@Y%@GknIGl zQ<&FweN_kKITty-K%KS8+I=w5^3ni;S6Tr-qFD#B#rVuvHR=`vXmx`vsQ&l_4{sDi zjf)VHiY7g6pu6A$kjO_!uyI{r7%e$B9&}@st-he$)^`2m--84g1qnDC*P1g-DmXbN zi?LciKlPa81lj0ja2XZk#R2ue({3Fx?1uVRg>SKvg_no`uKrMyF$$Khq{G>H%^bIM zx*Q;RdK&!Te8mF=z~$(17o)jm9gNk6VSqWk%w7!{@1sH0t(=)JyKCb|+d`)~j zmk9S;{w6uVXh`b$%E3)7R(U9Z9bPr-Sv5RIQE?c6Aks;U$pu3iSE;)YDF(kU&}vyv zS5yON%}V%wm2P$EN#*kfv1uTiNxLS}xlbwC7C80XMGnZm@UY6Wa!afdC~3>U0sIE% z0C*}yUbW_Z;AiyEc!xtJ+(7C6q4=UZX$ryu&jbe?ePirbK4-uF-PEt@QKHFCYS#U0 zH^Def-ytgGAw)3!-1phqy~13WN>g>**eK2zCn2}|5lyNzIU@|HLq&2EPIZ}MBz<|l`x zV6qIR9d{kT|D6C~8<(0~)c?8eDPS~%Ohz$L5KsyyCdC(l4j2fjWvLBwE}Wy>)9&XT zc1s3f9Df894XmyOY6+a~T48Y^6$_er@hPvw5AcEY`YfrZp4G_#-o=97ezF2c;Q$DH zo6Hs#GdT5s$olShEZg`0+YFhNtc;XRNJeBU$xPWRk?gH(Dnf;_vn6Ej?2*ju5h5$H zXCaxtxq_WgetTF!uxQ13J}Eu(qI9 zRCD)}HwNHxC}eL^l_091K9cYx(I7~h`2#m_06TW9G{AL8_O+5Dc^YUYM@0hmV#rZ|BjwS;v8HlS0_qp4%5``g(< zm$da#l?JN;pZ1`$j7$p4gPv2d?05RprZZ@3)q5c6`CCfiEIz?!eEUUUj3Ll!F3~Uyj6bIZ?9y!E zQJ!9TAU0|VUc(;S^8YH#C3@u*-+lx~rq3&|zq5cs$4I+I0XQO*`krckh&kF89a>jR8 z#PxhUrh$E|sfU>fNh-)z+`(JyYca(y?moMN<;Gq8IPkm$SbGvkpaH1UEwg`vMzcY_ zXA4J+DSU#mNrn!o=Y+(JJ2psmp)cG0q^P=duipY>S}B+qp_OP4=NbKHX`|)V-VA@d z*17aoe8;me6Nc(}E+?rd@GmOJPMi3xV}ZR7O*-vn)PDQ{Fc(@vtK&kleH!1F=67G_ zG(ew4%hvfIf#+#!?FCKay!8&A8OHZho$>s%qL#o;i^nTvrN1hD$4hQ4?7hg}^2 z@XUz8^*Z!&r$8GnVC!kA&YO76azQBXJ`HA{;IaL>6)a@c$cf~lSLYh)lPEE)1XEs~ z)@`@0;|7p7okTb1TlSZ5tF;3l*^!XcMV3ilHtP40fs~BXk?K zIR!pDMn46(u_nLgryIFx&M|&HSt_qFHg3JZW{V{BNJtF8mjysh>Lx$V(9vF+_7a+o zw^zvo%HY!GpM?ggB-%>RE0^1n@rTyZz^D`xd%mjEJv?wlC@!kgD0zt1a^4(jM-DR} z=SGGeFX8bL;xJl9uwd3`T&-J;l*o&r1}$xYUMx37Q>E;sRC3OaDGY<=z14rUs!w`= z0~Q9CNXjH`g-{S`LLA#p8?$xIs*!AMsCQ%r*|I;>2jGiOylTMNb+vx902 z=xU(rGq;5k20<@lCOQ?n47~M&w-sRH(ay60ya_2L;S6-X0(-NT8w`w8L*pHjj9MK{ zv?GtXRoa>TXpn>lHslf@t_{9m69K5~e)A(eGD70M^ad6%yA*B@4$XHq-*K$?rhQ7w z7DOZ96YFbkV2QGx2Klye2s5<87l!1%>B3i`fK4Bxbd2grN*sFxBrKS^eNwMid2{Vgix0MS#*K=zR$G zR|Lbyyg71$}V-a_j~ckp}@e2xN1F!_c~s?m=$88zoHahcLzz$*v?$gN*f->!h_1hu!a zpcc~5YMPC74fT4cYVqJvEirH6S4SS$m>hr&KvSZE4|kFdAkfABpG&6XO@a=U25`Uf zg}dShK%VhLDs0wN%hAXM#M2;>STvRAGL|BwxQ+UyUw8U=dKsWU2F6@BJ~201mA)S; zcZkBX_hmx(5>ADmFAwdCJ-ZlZ0J0cSmz3b+?;34<4w@ECyNJ*Ct$NI!wQPO>6Dx4* z{Oc`yB40m!RV%9)`C*l}iBS)5A1 zw&0*n9)?N5pM&PO*H{;Vvb`JkHSP?<85wG=%)+WW-Cylj1?+kLFC4qE8{E}!AdSHh z8F+8WhXJPI{-Hs;+g@5#=zu;*-6!5DhHW_@=&HkUyD-X9OWLxM`18GwC!sQpH`o?0 zIB^Mcvb;$6lHctAL;{WBtX<`Jd2N5&#nA)}oIU~07loU>KwpCCch_L_r21t55VMdI z(~6`NT1I_x@5Os}Y9tDsOVdW+a^JyJiH61#s8Endd^C-Oi5(=f!OF^uO(UsU*5ZnS zbmjPPl%r7)*)fxt8vXpOpc@1Ha9=b4L>+NN(dK{m@&1LzHhxb9fPccO{fA@w3jLke zVJcV%T(PsCZn&=drsg$Mp6@Z}2P(Izo0lhP%f%DR9!p8)5weNN>{b1bMugC#yIRrN zJmxU#ehonF9mF(}R~8(zcK5I5wiXT6=osI64v(<+6V%m?G^7%T^7ynI8$g7uj*VxQ zD<-L|le+QMJy}$ioL_}Or|RAH`Yt&BK$XG;{xm5GDKN{{)_T7T`6#pqgYoda!O**j zVkQ;XQkF{b?_^{I=kw(+z+K@R0zPY8bhUf3zK(3#xvF$&zyS(Oc*`a^fqmpZcsHNN z1F0||5|hQEbMD@-#x~Z+`pkD1luR(*xtAXL!GdW6u}|wFQ0((R?$w3yln95P=Kw%j zzAGW+8SL~J8-U4t3<{-D`?ql(#`%TJRJ*K)uCMugv%&9`0tHaiF;ALd`^&n=|DFaf zihh4ZV8sf{Pu({O`2b7JJ3kal(bfl86rlcsyK#V%up=mvj|z!IzB}<6vZcinjfq9!!e%U10p+ z)1ZebR*G{x6$W*5H5ZMu%J6$Z=_g0dn4DUtrK(vA}-G`AAJjvdLK`JI+#$>P^>B*<1On3RXB`%0;y?_H&F!pYrs)|5D%0Ky zv_MM$bMAxY<>`(0>E>! z1*X{#;1d>8IXBy?d=i>gm)ZLPFa+tQD??Xvd2_Hs5j|O1#QlOU64b+39YAt!-tsC{ z5=zC&(*|V*bfSI!-s$!-pzrIaPveT9rcj0<7P1iBf_`tBO>?Y(v<_U_>=HRJ$|+J} zK*dDKNYO;7h%P(=X+ld)S){Am5tnoISLNc{Uu61)F!hQXdE70X>)x2bN4AK;Caws( z!mYNb3jWg3((^urQ4eMpn!@Fgw7NStG;2-NuHpd(gc-*LGluZ_dn9=#A3Uf_eQbKO z?pi@WYPc`g3~aBuLY4eMt=|_Z5E{F?-=tfWe3LXTL8@Bc^yY_E4xC>5;5g?j?TUY37Jh@9;$+?7JXb=rDYV3G)o z*CT*{$m`K@L`m}-Pocd7=X68CYpDQPAYm-756Xxe>1Bdz!0*S;U3vKd@hi#iTg}@` zpv%98hw#Ysc9N54ffsCBb3%;H(&zll+U$gv*yY$>7d}HPs7UU8seZKwIWCN}nFA7B z4mBz1P_tL90LvA9JMwBay#(oF*q|j3AHXV*F z&aeG^2RWbj=5tLL%A%;>}F1l{~&sir3=zXIkW{;OFLq>$530qQ0PRtF@Z zCCpYS#GjeSC8oR06ng+f#s z1Uh7B`MndQfvIO0Eql4}60=SLSpcBznV)@!xN#=(YI(4kAgKaKn}CWc0HYOQ)5-Xy zg(4-a`qwB_1jNGs+`u1QeMERCaCdF?^xUhqULI7z9OTFk*^%s!!2Z100X65ruX+Y(Y4nL9aaed102rWx zWvI*V!vSOU>&4yJH_$dQXgyfc2_a0l0G22S8UpVhcQ3;>7WBB2w30EB&<0F=tOG_^ zb$Nm(W3;mga(phpz=wpnZi6!4wC6&tQ1gKHaAXDEh{F#)Rogk={*^w+t?3LcZob|9 zTZ9l5*z7Xsqk%X1`(Shw&a|Kd4`emp+nE+U0?jSa#x%?Qm_zANt)Yp$k>7Kho-4OW zUOD{evWD=Sq04x_pmU>n{^=FUH_k)ItnC-xt@e+PNemIeGWhpiyUm;o^K~+(A*?XpZqK#nW zWbpd^09qbL3dr4T{4Y&b#}|w($ac^v($|&>EX1j9$A{$@`-&m;l^~Lr@Hwz1B3nVC zdfPI6qO{7#S?=ht`6bNebIbr1`QzeRnt(*Ki>IUm-*}xKG%qLw1e{4|Riq`Vd&DKa zkyaK-h`L%UAjI9^m_dgM`U*f`JS^=8d1I%$IK&<9l|64pz`azMF*S;Gfy4d<0qJ@2 zj!Zx)c4wQ#pvb-lfRkge8`3JkJ2`YY!>!Tr90zPrMjLRW*Xa!{{3=KE!XoYR94G}8 zU^^n;9{<3Ala9FNcZ}Z}m41uZ ztTNeq%Z!f+19x|cTQ3BG&%Tg7n9K#n+S#McF}KwaI1L75kxfwwhmF@>0%5IipFI75 z==2uu{0&_tASQBiIO|qG;tkG4n;$fsy1M)b`-v(#a9PVn0@#E6q|CJ6SUWtj>N;k55PNc5X`ZNlQC2$6FOlse0oy{8 zg2YgYhim<18`!uSzGLSzMz6O3(7Qed8kHF9 z`1H@|U}!;i91d0IWW=N$VC4;h1o#GP3njzMo`4LALZR_glIxUVH_+WSzwt zgc=}~FmOepjJ^{nR{_Sp;w~TB3ULNO{be<8M_PH7uEN(K(g8gN>?m}4G%F_fIYxrW zi}TtiT16R?&&=7Y85A{@U{f+acg!&`}FHL%5ff5k2Dx zV{`~H2S2m!V_?|5Z;5{DCo}wqK&p(rHW^QGH*K%JO0<)x7a<0CEzG#g`M7-9g4E9{9i-SMJ z9uQcDPA0Eq0s{VBXv7AtA!KTbyeidpIlDz{r zh5U~6c2;2)vADmn@SAh)LKZC<)SAaT{ryLvhd|Z{QF>n^0+M5NMmJIqn1x$M3zPif z2={=YacF*~QU1`atR>Ye*acSO<|Csst!4$1_4*K9@HHc9A{ib$I`=@8=l81?&-eDp z8mh}UsGvRmu3j?0n|N4t&Gulo$56R4X8T0_2-N?mZlh%2J1%dz&>D1K{SC|u>QVw? z>73;kh(HELF@H`GmX{XjeA`0KqS?*+r1(Z+6n4Fc0NP~*@$jSoDcQNMmz1A50P`LE zhP1*}&s}(=3u)mkcSn02$BdTx)_p-2u#|g14Jfw0>qV^Y^Rnt7rh>kCYxiw9pl&x* zgfnmy`g(R^uBBT9eUmlrK>XDtk1*A4%g9k>mk_KK@KR9Yz(TOCd_5@LU)%x zpk?J_lJGroL0s|B`C(O;VRdpTuzYu?<(GdxO*~o2+~BcA*dVT}E@!T*Ti{CMn5x6oNj_%VXLAl#7EWOCtqz z34WPrR`@`-8PUl%Gc^EOGT%BP0Go^cx<%PNgi%Mu&^!&k!`8m2)cM#!VG_F;8jMKp zuklG$nG;mIdz-)~_rM8^Mte|QiJFnZsGs(>0tKlhR&s(_FKIiC34rE&URmsCdGj+! zZozG#q4ETKd9XI;IcsytvkONU?VC{H&|Lrsm;bh>J4izENA^1-?s^@@!~QN|4L!iB zmWJC2dO--~dV-|7URq*!7^8Da-^r8M-y;k#6NTTX&(Y~iJq5CSfcK+faC#4nqVcd>l`sGysnD=Ink zYw5abiSQBxEr`LWp^3gp-EV5{sRZbLR@O(>Br%%w(tJJ1vAuZ6nnB9x7sTmISE6D2!MTtFKo+uB z1AhFaWD?&=lhbxs2OGB5y8Jgn4lsy(bf$a!m42wFkvf5-o(-Iw|N1vt-`Mvz{;L3k z|L@noP`tvYe5Xa1P6PD*bW}wb8|nN`_|Jzc4w=IvgOO?wL^x5FN$n@Mn__CQF#>2= zdVgSMo9J6vqFo;Pl#I5*p9dAJ^E&8J>eKD|)Bc&|G$-Z@9*lsg+5(aw;96ng zdjM`&MfvW+fq4#gUiLZHJcgSf!TQRPGR&>jk1)ZRE$YK4%?QN7z634>Z=@Vcw zau&iQse?@px>v|yWO`-cXkjiTW)(8u(L~z*(czx;U6{dBQh6T!JCZo>pX0jOre^!& z8c-koU|Iy5hF7JyZD^z!hEEUw3=~o*WA_#=sD+d!YFHTw)05Oce1D_G68v-Ez6KB% zIBr)DgDZcW7mN)5J_9MvBFwF@Yi4C)WU)ZlG#CAWTR@(7fI-8>qu6un zR!QF}fSF;@@4q;20WC@UM>|M002;5q7vm{|e5hb+1?>&AmXbV&NA;1r`9YTUzY=%&~mwL6SMY z>on2$;(25Xe&Bx1ysE1(YNGQ2<~GF4dOcj4`SoOLODN98jQ#E93UUB|4$ng-2VUl& z7j{9$s$aKV5l($2{0`7`Uk1X50`B}{m4(vhv^8$q5ozh{-F^_gu$gL*0K9qqA;ypi zuvN%38+wuB4?rD1kjSoEOQm#!ZkD!b2T0Dmqn5Uy6J>B>7<53ucF&t)4B0L+y)GT@ z@3^9@Q7XLjH}+PrQpo96%3m=I$aF9g5>@smk^Ob&J<&~lNVfQ|&J4N14F8JSoQ)M) z`vt8zY~mmmnn7{K9XO_3cX8^oK~nc0pc7&f-?DZ_SC&A>J471c`3dMqw1dDDK6blO z=5L#Y-{lsRhqR*nI17MT#Ct$Qf#KHf^4XF15y!W@jvU5OXm+El^zetmTNFH zFk?EpDX?i8VpxF@cdz}Z4*V6msDZf^{zcAr89<+1FP7E4uErUo> zVc}L2_v+bFopek+&IKrQlI-oRZ#2ka+)Ha?SM=c>9RKkF99==X#IpE`ku$(Mz>bwX zlK#isdcjw1Rt?rJz@}-MW^+~#JB=Z9ugeRoz8Qjw;jTomyuBJ_J(QM$1@w0RC(P_! zFiArnT4dVOIQx8%c&{jnGhTsb# zLYCJSeIui}^k4ts7mJre_i)bHS@pqS`9R0{Z!&KiAo!1k#?oL(Zd!V6#mBpzIdd;T z=ln5D6ICVxQuUQZIvRE0*hH!8<53zVG{{k7Mh`AQ6ehGK#|Tef-qk^*gR9xD22-;$ z3}c{2CwOq_1V-q%6kM}G|6~XMw1H^+O zF@T-B|8#THzS6+`phE#vkzCNWGa1f6R{}~>Q2nv!CK-W|qU@a$2aKg~Q~;9&2Y%>> z(tHoiTDyX@D2)9Y1g#eozy#T(XRkH!Y2!A%mDT%aSRLah3jPP;6jF#|O@AK?lc$Ug z(wY-CDk2*J&>ld&xxhRVsq1QDZ1e^!Q~5T-??AliUby`MzvbcfTnncFMoA%Dg^h|F zeo1A{?&guyotp1=?Xfz-AhoSD?R~sOPyYwNLD7*~S{BFW**LlL!P{xZh5p}ugdt9f z-Kn)lFXI|zhS}nOA~poB)QDf~p~dqBuew<%%qra8{i1fYKSySMmAjPuKt|q1>g@z za}CBIFySdN^}k2QVOA*81@mz?gKp)2k3;K_1w3F`Hy_ijszC#0_#qdVp)K(%z$Z35 z%Y|1>I6FQ)3GXGkXMo4C5M^}-k}DFDnqLTE_HTPT#;&p(q%;PaLs5XFE(k3wpyhQr z^}Got|3%cCfI=VHEd)iQ)Mj5BQ==dXVDoDncl}7OB-GByKibY}l?2KSp`UYdG8X><-J(uQ-pT^{B+?mA{JHJ$#HOg#gC>0iLhv5+w$% zskac5r}#*w2P$Vw&+iS~Y>&Ehq&GK?O=_?SWXw+yz3HoO^ z=+Ux+w8A6q|BU>Q-*(sh9{H1<3YevLqqPo`q3{VxG&xv1Az2)hiOt;L$DCqQ&;A78 zA}CYAx@Ybg5fadCjE|8}H|)FCPXFmnQ@;;phzUdhkp2KBB8rC*-4uXILgEI}r$BV8 z%g%QiA^c4f+feyEx+O3zLH22M7PCi+HGX&5EJ`6mxrFefdx4`s33+x{Ow4_!R<3Lf zGO)m*pdIpc@F*?}6b}p97_E-iB^L#>APCYnlO)Ge2OTEh?||h}5}t~6Fpi`x)qL}_7JiG#Y4`)lIITHCE) zV)STk0^5Zi4N4z%P5Hkt0WLS6KTcF9_O@E%cr)1r?|>$n3xpMFvyREeWmbTGMRj%~ zzNJ#c_1op*TW~|3@!+;;r^Pwxb5W3?HlTSbn+PG$mSLpa%@k|`QU1p4s>nF znl%Wp^9K>b;GL6KtPGY=^MAu3?4>X%9Vzg1QA`~aU+#X^^dn&0xZ5mMk2=fjh(MeF zuhtoQXqqcKBg(-mxf#KbZidb(`PCbwR!(l;-4B#sFsR=|lm3qu@FF2(E~He*(#oPK zU{#Gw-{If3Pw^~<`{Qh6#t~**6{0FY>4sbbe#Ym)4h^PZJ+MvXJybon`*N&x%IFgD z<^mFNLt#NJiZ+o~dE&ogg68RaWqPZgOJE@tJzFmZoKg(!@(G~n5K(&&obinjBMJ(0 zuCAVFg~ROQ#aY*k)g zX568XPvJ8aynStez|l?Gk8p1A1;x)6Y&|si8%nsvXSjLifmOvDd>JrEqTnFNc zI2}Zvr)T(&_yyU{K>2G0C!X5=FpQnMZCqk8w{aDK`XrY}uN})_WBDSAhXF7Pq%WeB z1qGNY1C-}niT6^w_@#xhfHiWT07CR1}*1bWb$kQJM%ob;a|G&F?JctrPTf7%T{29$1jlWD6pD$G2oa+Zn1rN}fZ_L=>^)lO z>%lzPp)kYL4;A8Ke2^y_z9h;*wdFyGCFD+q!qCfkQ(*`)@PIq&A{6jmh57d2L)9Iq z1So+AbT+4n@X&PWsVL(bkv7u*NhcRl?*D(tu;OzvXoN^*|uT z)ap8HDVX%w2zIWFC#+NbxWEj*9p;jO+(cOGV z08BKhOlKQ2)nQCmEb7}mg4?#CgpWCV|Ik$pu#0r)KA{}}%nn@OtvVh3zNa7FATu< zjgYgQ?E{C+{b*`AZN9G$vHG-^5{I(lv5{dOSag{U2jKAh&~jzq;=!7qf0%j}bJz(p z-@gmX^p~oYR)TFbs3{iE7!30g@=+*1`$vj__#!}M00@y`_lBMjIckuZ7HkY9p5BQ- zpiwhkxgyd03cY_(ut|5`HTC7Q_^(9uJ|HVe1r!4br5Se~0x`K+N4BEzzb(Qi~pYZvezr!JB-H z-_inI6{2M-e|V{NZRroF8h-n)!SiW6J_M2NR*^jZkX54tF0-O%~kn&;qHh>pIF91E2V*C0(;$5X@crS~!6AS`0agQIb z;b!FRSwS|$=8v{iB*a2+z4R@7EY)WaRe+$7uve&lQ}5yIptN03UAjPOCMr$9_HLh8 zSBJU{MrkGjxapK9F)2WAk->uTo`gU`7_K!H*ES^+;2)qZb{n`ubo8s65y;Qb92EKHButsQ#i=O9`(6P;+)eM8?r-T!+KGEb5<7{99%L1*aZ>D z>zX5RIYS^Gp*Fx^p%*9|XPzWZccjaL6JEmbqb};Y;P8*-b(o2fj01@9H0J#IDOtBq$jh{<^e`x}8tUPErYl^m=6-G&}ZBE?m=v^c@o84`;R zDz4p8molK+k5wEZdXhtuqVJBp%=2Nqah?l{gp@p{2p!F#wtgQpi~(V&`;I>R(wrdu z6Ff*A0W~2!dz3f;teoLr+N)jGW@p};noFz4{=>Fx=oqYGt@Q)kePp%f^k3{?gpNn3 z)dgJmP#1q))6-yj#aVvUeK5{wM7`yDbfVn*Uy?Ws z$aNPsNUD0J1gmZ7kH6$9SphJ);0}HBx%m(yU~$h{&HxVU<6Hgw{c9~0T# z@1dM_FaveNh<1S-u;p-q%&#w*-h}6`?(JB~l24~!gJz4iL`lHkYazC*xWlolLI~Dhrm3RY`;D~tyOXt6_o%|Z#Lfw=? zVfI8p3WL1dy+G@6lpACKz&Gk(d%TWhe*c1I{@1Wb&2l?o|8h%EK$x!TNXyWV*FJpLrY`cnd9~eMRen7V%3hO|X z3^cFS_$N*n{%;}Of^`mFz0z>eY&ASVjlbwEc^ zXXkNkWJo&$oK9!H=Y0ZH3vezZRP)191a#`~F2blVN^ubPi@e|v=gokB#2ERt#}`x| zimK;^Q)_#T0onvh`R?);lHD&PagiMq4&G~_cx66b4^C8#8sUMY3n`|N7zj1l+Gv!3 z_fZIcL$7{dTyfWg(Vbw1Gail>*(&dR#7suCUuWvS2ru)Q772CD&NjWQQ7l zK3e*^YkAP$uIf}Wb_F!TNU~mA_tzHe)dG0u5Emv{vo8j~6i;ZI>WF+0DM>$-=7e>o zcrjqdXE5*@qdaNIhVic6BSR5sK)V5y&L<*~J^=)S&*)w}SQO5`wm1b8g(|l}uANP_ zB4`YtOJa?`gZ=>JH2l3u*^=9GLwRY z;REM2C-=qqI1uezcx@2|S-y2O8$w>TKb28%DY@hj!W&n;R3H{&K;(J{88WSbR{b=t z=h+MldjB4b!jSa%9%NdrKWAe~-IFV5YNX8U5?CtoVMq(f^n>Jl zXfS~$&w?M23QJk$F9vX&Y!7p(hr@Gt5`i=r*KRsV%%to%8w)aN1yp%wjJaqKA3ppB zq1fb66M`ho}{~w0ZI%t)C%dNz_y1@LLrUAWUPqeT#UQtiXXxq zuI;!*SFiR3od3w`fnq68;X;6E26?XVbWY)WVkfJ=e<*-fci(P2 zFJ7`lBUr#cR6+>K6sL{L2cKuFN}(HDCY`JUN$wVJ{&G*ywpqiD0Ha>fEpXeRA$R?r z92+!cz8D2L>AO6aLR~obU>Av=sn@8wawWNCd!-L`OB3^aPj-@#VE{s65=9E+fmwii z4ssV~sC#3Nr)_Qphp>=K3PR0Cd8iP}(c1Rv^;w^|0KGP z4-%;V^0r5fkbg}=og`@gbtCU2$Gwc=6!C3XcWwpMcA4;a8n~;Gmj(8?%!Vv#gd9E? zCFKq$m#^Q%eiLzyGL`40);#duepva<#F*;Ox8!SZL6}fa3ARR5&3rr;EI^%XvToOV zcrevo*AFUwp{fMd=f>vn5{X)mCAQLIQ*&APAquZP{257)h8Jo(J-8ZxtrM_1vc72qj8zWLsFqGGXNy1}gFL(>G2s`4nP8rTfnAM$9?*R6P|pg=ir z9mDNL@>i5DsAy$t7T_v5!>^1aG7w+PRMs;6#|;cYmXP^j9YdJk#7?*tQ_{nLIo6u^ z{sD#KxaeShZL@k@;*Z4`0NP@mi&8a^m2$e_l+bD{E3kZD6k{{MsR|w5G@NZrXCxhA zBCHI+-~6i~{P)018=NPg@Vf|z1#*cRT9)V`% z{yLdL7%1OXD>;vAF8rTmQa*8@q(SDjRa5roL;=mU6I*O3@uTkWX!+n_jH#B}CGUwU zM~%67r!EUor4VuH@H5iX?bLk3_e`Eq%*G!D{1G)8|Kn2-96W^)3OvVs!y$|{AaTG# z6#ha*!@!}A(d_+&PdCG}suf;rNs3nd zphj#=MUh7Kb#VINutfy+2#Y^CD&N0kn9pfa=IEY`*G~lh`PnD3CZNz?2mi-K{NS@K zj*9DKdm$Gj*dv~_wr>7n_I6(3er}dwn($0FvmxW;W2t)-ue32tS`SJ`S)9%=X<^9Q z4pO=ThqAw{Pg_0YyDa=!YCgrCwPk%RdX@5JR44b@tBU1znA)NxzS@G^Ggu6U#B!{f z9oakGMSps(@-r`;yN@GVaN%k=6>cF$Do>G9SezR^GyJPEF{r11Y6*+MXaqKTX z(9AbWCV8A58ln5v(-G9y@NOgb8Sf8QTSC>vH-s-cpBsIz^h=-e)|s>CE5@Wqcvmw8 z;$a+>)peMcGQT>sQND?1_>Q?ky!9igyDsQYY!-`44o9wJ_}8cK-y3$(K3R`C5%Hu#+Wr+Cj=PkV8oi&fyH_n>@=op_DV z_ofj3Lss<9VuUXV5Ie@UHMvzk`i(ss%tib;$a53lGu@o+@KN_|xxXj)$%C8%N%vE- zh|4NrL_?2{M(Px$mPp&Gl+$mmj=6X_vbRQTEC|; za`?=*nSCEGeYri}f2n za&o7_&YTLdi;#FZUBS|mDM&1bjTU~>iXxwGM-fdiX7Z*A1+I!Dd>x&QCOih_eRz<} z%we?uuEC^kPomNA%gN+B)IV2QspdA?N2864M;{2x#`xYdm2YzR6@-TwnZ)+>)5OTx z<6+<#n$oQPIkB_n)k48|=8M#K{fSKxmG3ni+5C)MoIeVE;TmmnU~RU&V(ICp(~XP` zhv#w8n4%WmhLrc&^}%n39hz%2fppn)%hEaz!>yZ_=B9#df)?Uk?_>E2b@}-bVV*KE zy$Z$z1qPa)7rRV4A+dQXWG-qQ&zH_4zmS&xvM7W7V@pzJOT&EhU9YcB7nz1&#D z$tLt#K8KuwqAfUd94Com+&_Osym@-?d(R6u%DQSVLd`1Wv(sa5;|ZVLX#eLgZ(7hv zd8)BzAHf5-O!<@1FMn0yl`7S$Z&_Ep)c4l;eeUtB3Z9pRivzUFH@kkkKYbFOTz&tq zfkld$pY3R!gmFld7jOs>qTjataHe>vk}i{G{)UTD26uBMEWAWrakd0)OmZ+grbEH< z+BI6(2!U5PDR1@vUSE7d^_qs_v()#-s;!?fy1K8MwkpH~<4&t^V|sS!5|Z8wxc)eP z$nW;BuT`&C@a(M*iIJV}XbF8%E&@etLd!5K(lEd0=z#G=21{iAw;hx-Lu z8**gths+(WmEj&~@19eaxj++m^3-*Te68qD=KPB8@o-`^ZE(cf!|E6u>d7e~!est) zg|fIFdq46&GS){wJ|`0>yoXaBdp(>YW0C8kWEXv#j()HVx*@cQaba*naAZ^NScw$E zw{5B^oS)jcu~00MsMoM}g6fVyPjJYFu|jCCyd5kVX0|xE?_0$smJQVo*Dp`s<~(zg zh;Xj4PnPhhFV)G9h3C&uR3yY1@DvSSs7d@oIvRF)eMOe{oyaA;r%Zfjs5Ue^ZDMRR z6+#`fZk^4)dVJNB%kSSehoAjogV{8HF?|R9`}+@xq9-Zd?8WHEx2W32f9AC_YKEf_ z4hPj-2435d=RU)a&pAA~rqfEr2u_^WoQE=^##+z$R^b`{xlx8inv_hg%t z(D2Ht=4Q9jP4`!Nt{0i0JaA*KUA0TVa(Hq+UfZ1;9_Y^gpt`3;i?pBX-eq!T$CE+< z^h08_8{KmgQZ7bpa<@&{Rl-hF2H4SiQtS!*O3}=sZpEj#PGL7*gID$W{5Sse=Qo(^ zKferDMo)p-C?@jzZLW&j8}RAOZRaU=S`NCW{GaBo_bgHqP*nJ*X`F^45_DAVc*?7P znz&J6;1&y7?2@E4=%BFonre>Gj&FghZVOQ*$Bnr7-r*foCS68mriwWKd~?Te2i;If}VfBASR_aO3@W@So4bv^@cW2V!QL8*MOFn|R!XE6kzH!|hZ?-#;=YjTVt%C5~4U1h(>MuRPMX zvTLj}bUg{D*1gA=IdXfuw5jY9hV^g?eK_N3Rb`m9E6R6S^1`sU z@p9Sf({FQRs@*5uOm8&uy>^)-zaF2H{o0zJtB;o)%J)ClK8I6kbze^1q%TwOCfRhM zZI@705pKY%Dy8f*x0Y2po6E>*{2Izl8LleG*{1rqV^7pM60v33-M9GKC>4LPzMl^L zMx${z0%)IzO@p_TLsKovRg0!a&%`wER!3e1kD-?6`|tUEn%^$&htsc^$=fxsCy1)}4U)l~TX6a!s(^Q9|8x3(Y1 z89HM}5J}WhK$RmEZ4O{5d(X*n5&Oya;uYr$`ZBvuZq`ZdudH6!Y51tVgYR@UYH_si#+&(2Z@hVOW|PAQ6! z8QbYz`mB8+T6gK*W08wjg=}%4J24+C301VCt4|-kcqz@XsQHa|oA-hQNvXPj-{v*X zy&gsOKn2_?9P&3+^Refe>Wth^Vsv~}DQ)MxT4`epbYwJ)GA_16 zojr@kn~)feE?D#orujLGFe`5Y1I^TO*OC(JOPaCpRN@~dJM$#273OTUm3sut2iP>Q zKk;s#xeav^7W!FRm(qfsrHlTBZ9CR&w(P@K1{d;5zJ4}~He@{MpFHU>hzeBbr*8_> zEUsN13NoB*Lv2}mVl)l1jrh+e*Zwek&JePB$dVNJ{dwE{=C)m;{n50?J^T_KQt?b& z%xC4DUeNf3^TcSXjgMYxEBtw#&HgFc=pLlE<(B4?XPP6a&xPApF(#b_+z28 z=bs;=A{s_dG_w7lT=T#1?K;8l4HI&eD|Y(Q2Wt5j*9?j;{1Ews?m6!f2oK|g>OHi1sx@QYguRk5dL=fRck6(Q&duAhGk*?tC zGVwG&3tqr9U0U~#ihUkF^Ach|xDiF){DiG+r#zxnf888rJF`F)Xrr(|+z`}!)~uJ~ zlQ(5A)+bN5>!?hdhfNA$Fzg|U{wldsxMICK4d*VE4)O=G{k1=PW;pEib2~BQAeJj1_otL?dNTOwcA-NA1cEBFb^hor(_K+<)hKYant zAr|3F3A({yu89Pb)-YoAUise5l=xaYwQ1w~sr~80x!31TeUb`nwYft22UHH#K_@!} zp}!`cp>SK+WS>0b|M>4aey(A*PJS5HKT4)sCS5mw#QIQ%92b8| zuB-~KF&!FT1{SnIc0bT9znLkoc6PT`o*AzyEyvo2#+v$VoH4a32M;&x#P_3XA*NIg z?L@FN@WLsM3^blI8j1&}eB;3XMP7@q+K7)UK){y8xEQH_!AhF^^(or6HWt{`D=x1> z?>T&BZ!1K1OeJ^rqS!ZRHYF>)@mEY_iKjU@D2bMp+8T~LXYULrMquGhoTBLUdiS!< zgfZrABUxU2gWZ?>`{S*Lm?XdUs)TmSvXn>3dXCe#9$@*R1wBbl|AFrHEGOpKjh8D5 zZ{ueK?-hPqZx@S(Ijf5=-Z__{o#*(F+DTT!mysi%+{Kfo__K?%zvN%$kd})jB&Pb( z?X{ASt5fBRaniP6j;j}+1|RQ2#;*qkVf3RRGfE6~A8#y^o*2)o2_CXFtbf|p3j4P~ z7-RI!h1zIXlgNjR7hmS0$ve80BH_^-kqJ+#qrLBRAB=r`C8w;`QK!rlZ*Fa@=_nqw zNy~E|`>9C9@umrCx=P%wtmtSBT}_pGkw}}>2NO@~qemMy-&fY2vj6(neOywZ3ASe{ z_U+^jGW|lYiP_#!RBktZkKz%s< ztI9QdRtV;+c%|=pQ`ft`@(r9QR@QCNDJDbn+)}!2!HGu!vSB9uAMT388?-7Io{%lR zv(x)kV8`pH3wMkrd;yf!9i?8C{guSjz+ZEHu=&ZLuwAzkt94o>`95zQwJhG8`fJeX zq;Ij#icrZb;+vLA#Q^VzWD;i8vl5eSM-l@ zek&xzBz8^^KWWLyrOO_B{*tG3r>o+$HPO$;rE(@#ilgZs#o?qkWRdD^YS5b~@$gJO zEW7lB?ZF&hEgxGQwy*Bzm-k4Vm0#6E&u*#YaNOaS81AOCT^uW6gJltSKU}1D$@-IN zjR5d3y+VjktYlaS~KFM z?#tb+b8>d%6zKdv{JT$AKHkf|m#)?oMt%lb^FQ2%?88K4xgl`Ldhk$004-TF5Di*w zyNxfS`u?%yxtG~D+Fr?H$f;UuHP9!YhMQ_h$Vfm?nCGdTcKnO$bo~%w>W9TB`#`fp&5`C4A zFXv;aQFB4HHV~Rfc^Uwt14! zan;LDS*C?FV0TA0*L3gZ|U=Nr|sF zsUwN-Bn-;wiKHj}s>oBDUID0teqYr7t%$Aa!JyX8^(J9Veb;?Hapuf10lB|;j_T+G zj2yM`$YFp_;P@7AO?9QT#5ZZ8GSKLIt)GREKQnWMu}$oJVToc6hJ1msQ32I%uhL-B z`}c3}27ewbEyV zmwcCf{o4mw-6orjbVjw-U)CihS89PW}~iM7PcsqpztQ` zElZL^$0dmmk(?^kaRnnQ<=-_!*W!I}C~H>8zcKm-zV~H(AgB6XRYni@S&f%S3amJr zSFuknDP8Jpzn?Qzi{)B)kBe=rlRNemDz~*hKhL1rOaRCZ@s^5W2JjJRmD*4PuA{D) zVBH+Y7#_$&Xc6x!eC3*OFr$I^GgJr6FGDBK%uKTot#(1GMis;Jg!~Nnm%MO-}%;7ijZEev6#houu z@n7{X>lOLlA_eQ};(bpCQaIO6nQRESKDAOqe`$Y`^+Mj`D_?BC1M={io~GrbluUXw z)kfT}Y}b`pJb0E+bD5ciA3hf0tEpxWD*O;}%XMM+HG+|;>}yg9Po`7q1nZFFBG5YY zL_{(mF#DrTkL|N+u~}cfML(^gaN#Fj+pDHfFSLgo@nHY232L_6e&6D+ZeSx_F<{096%OmclaCb<)R@+AP7tELdZ$4=fz7fQqPW z8xl18{u~xB5%qLyIgji1cU|Un!Jj=GL|HhL)tzMC!y)gb{Xv9zmmy%M|E7aT1CFHA zu*zRs6<%G29~WXhq2;lg(1(~@i0AEcG9b2(Je`9cZM74V~gg5UfH+lv`Xoc*XK9K)Yu zv3tuec?pH?x#@K+g3pCU%+JX<+k6!TSn}Uh%O%D3x}l62igS)8em*Gu9BceTEfT95 zyv!@^QrNo|9rP5omgXCO-TL(O?UL|pEuie37If|KJ@+%{gAMn_*w(WnYxk2ItNFVcPF=@X~ zm6Z6r95Scty$eu|Rok;@5fcO?n#sEJ0fCky*w)?o(g)&`tye=r0xuh-m;#m+?R?*++g2k?*4g74g zqp-~)V$;Xto!qPJoNkVXoSt)%b`6Uh##c$TuBte;Yc?h`4ja-#UAVvU_P67QIVegM zcB9^>&gEqnvF2FhsCDd%4R}7PvLa#z*avnTo~k^XF>R~UKAt5B>64>JfU(e%?hDI& zy21P579~5IBpWmjofTKYS8rRlPKk+Pqd7PAAuZD?ZS_v&muIK8Pw$=`s8Nqu*PzHD z^Pk@2kc-?F@H|Trf|$A~{toYL$P1so@IZdw^#q@Km5@eG{a_F`zYaNTc%Fw##r|@ZY?QdPl2&cU zX>OG2@G)`1-$b0QO%N!rh)mgz!Zw8dAAf9|js^v(eI0ta4x`^`er$dgO+R*qK7GvF zqu5}hpM)c(Mop=v4QtbB1C8pFLP<4O);}u%Ft$;;D1e&vu4mnoZ7JJmrAwBci0*;j2!R89a-hQ2^yqt;6^`xhf_*YD*o#ob6i zGC;mew55~RE`ol>I`h;>_dDAyUlHyjmAPgI6K!;#IiY(+EQHbdWF@>fCDX;ye9hlm ziPnQ}?}snGB7bUu0o8W@&^QNtwVlUg@ZzhLs530x&q#CDSvj)y41?*cZ@q~B@gIuR z8L+c_9Jtp@KYH@4<8l5}IUgZv!B3OmDUzbTEKwHWe+5tPsAJ*9yGlAcrb$V8wlhD0 zLns`dzfi_%P=Dy~X#dy42_hn-8QlE4Gm1SmpkPSWiSd-%lU!!w?3LkpjsBA&YUdx5 zDYiIQT0&DjpH@3A>H%|o4##i_`d!rt`5B2v=a%&yT2~wf&?WJU zQ*rul^WZ=L@BUwV&Tfu&7rt|0wNPDMEkSo_HD@OdUW*j@Ze!Zx&4cpi;^K6a2H*!n z!gd<1G5zWG;#X4<&uclWKfTC1{J6utC`Y7QeV$>pU&nNQztj)av{OIJSnAHj*ohsJ z)!4kE8)VV1T=9Orv8?1e^|sA%IF}ycm~jfCgjLZPS&hR{@ru7GIP$D%tOE%m7Lk!tSF}ar zG$?h)54hy$K`)>rY0FEmJ%b?##-|6|XHL0&j zq2+Z_>k~uXDRg#;DPUpF<-X0ycqhb8W@RB5+V$XNiehkoYsr(UxWGvOK$41Dly zW6V0|HJ^6Gh~gD65-#IVmpc=7Fb=3n3FW#YL8in!jwYR*nEI6Z@}c{c*LGlI)h=2F zmkwDPJ$-*yprKGIT7k!hVe64KFr?VQCO-J^aY%yvm*2X}7x!g#9iuI}Kii@c)~mV60ZE28Yw ztCz&j2!HnXfZBWiy{(q=xWC+_vY7UB=BD^ac=(z-QJtQQIV{5&dlL)$E7%t(7t9WXpN;bML(S5Ow>G>MrK39+zP~R~o`_;MP z?GpyW<3*5W0CBb1S4T433!8FkB`I~$ zF(~yCP*JFtQwR1G|72LYoZ@4|OP=8(XJf(qv6IS&&~4p|Y&+$;szb0aYujK9ud>Oz zz1NGggtvO0O<1v_-Yi87+JXnpT_HeRQtmz|YpY1-kO#D{u2k@u%1xnxsq&kwYJISpthgS`g5OnB+FhWr>p7Mx~Y{M z{IeD_uzN`n!y3o;hblhjC|_SM$zJWgilZ$Cyh72x0W{(3MDrI8VU7l|cOd$RLWOGM ztc1^L?QC-~z0T_Euo&2;TxoH(8D(avx7tTDW$EaR`gSG=3q-ukIa&DeBSXZnThYA9 zP2F-|Z|QFzj3y`PDN*+*3LW7{o-Qbb{@dOzLC7FUC7pU%g}JtNWp zZZ7 zj%x)%`;>C@Ud6W;t>J$QLZ_#C_qieRHz!aJGrPtt2=)uejRr`P}V!unZ zv+Pf&dKl1!v}yZ67vpLC5bKd8xVl9}rOM3S#m8lZRsI)&24O50(la4 zWAHp*9~6f_5-0@c#!Q&t-`-}kXj(bf#IsJfpdBWf1lZ`iCC-1N6WyQsz!cF+}uZtt$Ly`3pDokb!M2 zWeOAOgg&l&UW&n8`oQaE;XT1!0mfHElYC0g`l9*!Ve;u8V2aHWjjKMgw_ex;(`)2| z5%u6(y_zX5w;@uPz7z0D+tgL)#fMNl6~i`a9_P1DlIcIJc*)?LD3)Us%T!8X=&k7b zVSA7xIdtdG<-@5f4$CU3uHO_!_=?%fRG~)s;7cY=W@+fRAh|h;KEJCaH2XW-!}jlS zf4?5twHlpi&B%FY%<&Ay)I2V!o3s=N^RO~oFvK|Pe_AQwzhv~nfe5_WNbj$!RUVyH zKfZYZKE0~{XS(b&)#)ZPYJ+Ud_L}LzXV_O~254znl&Dp-fhU+L6N{rJPqpWCX@?=p zS$$hKx)&Q)xaVYY@+QZo*IlmmdZ0zHSnw_4$`aw}YX8pMto5f?Qx%=HbNRV6;%aGo zgTdx9Y^COXN`Gs3x8<`$G6ioBw?q;1WAmufMP0n4^}-GvC?n- zd&@K3dE*d|VflhI`K?T(*r zke%^3!eDvEY%qVQ;6%%*9_8w159L-Z!D#>f##!~EOZV${5PmaWG&N9Ceaq+@5A{E< z&9U7K4fGD~+I;`y`V3UHWN!0ZRk=%BZ*y^e=9{Q&3D?1jh6kdnlJsWBFB~dO+tn3Z-alNoZ`OlT-YsgvsQ3qWSYr&JnOO@ zRSn}@1UVHu+S?Iu<@CO#v??+;`Z^d7Re{4Fv01q`dAm>kATJml!%34^f>in0x^r#Z z@f|Cxpr5Y_prtiD}((zpQyq8o^IZ0q|* za6HSldPGZ|tWj1s?PwFjU1Z2ayN%yuklOi`y;)N;RO60%+m#f0a8lMx{VbkpZ_R?R#Pud^u?8cK)% za7;Js!4)m`XK^+hEn9Cy)EYQ#2DHD=eu*~OZTe0ZEGz?; z;iE$UrGhBGAss-;Rl8~#3|uw5&yh-bjG4S+AJKy?5zk;8eHP-vXd*$!k+%u(69Kub=N^&VePt=c zOl1IOD#bEP&vS}M7U?M$&0j;2FdYAV-h`%SM4Qiv@#&b=9B&mvsGEoCK3y~Zl9C_$ z-z@tz`du6YUeBJrEchEcuBJuEMIFW5$j~3myG=iBT!$Jbt+i6eykBvD14L>=RpeUG zFyBaH?RS(DWb{Qn4amybDCL;57joI7x zL77F;2F%M2%gR?c74-XUl_Ux$rvgO|3BO0D3{73D48Bzx&o|If6QoI(C^elfm%5yi zWIREcbCnsd={-Y)Sod*RU-(8XNdS$6**O!ExU3bcTQnCMFK3%&TB|liG(_?X)yvyz zC9=I!coUHyyZds#p$K*I@^~h-L3lb!`l>uTg&dXf$E|_~Q<@ z+?%|+Pp7IS9*F#Q+vnk?vKr<^QgG|cl!D3oy=TlGiBCI;2x!l=DLj!mYz=kOqtznD zPt)`V4-=4|kX9j)BFPjnt(7}G`oE;`_YN#98-!kTQR^ElA6sa8#Z4Ex3zX&*hTm>< z#EeU1>@oo%Hz6!M8lVPE(L#?txEp;K5hs2S-0}8()M=c^#LJD2X~!ClCwTvYS?!~1kbBSDT2=$%=h9w%WYuCf4ezC*%TW7h7KWBN zT!(6sB$~?f+(Pn>qB@oHfHTDaFMgNdQTnos`YGys*T2)cDm_8%;?5Y1f(Q8p*Fpqi zSk774@-_x!1?CpkEqxNRv~JMyx(6ZuI%?Y<7Wv0-`b#n!p`={cz&!=qT*@Cm#vrTU~@HVWw2_GMSwA-P8`q*rT^J{LB-uDEJw$U2O zp0q#j!2&D}s6XcP3|H{b&Ma}30$l<8ZHv1u>*uLDV zY60N~DY_@lTtsoa+J5!&%6j(=ag&RmUVhc{PX~P}me5p$wGCkhE(nun5H%GcaCe#8FvC6?K*Txx+VbbkM;dsJTp{u8l>N87{4Cq}D) zh*`UNG0S{?p{Ta0+RQ3ajEU68gcJ$G4MHdBNh1XC;>@oqeD){m;=2=L6Zy93vyN#7 zW82psddTG~csOt0yYIg(tTy!JT@3K?+pVN9SuLN9N%=Fc9IpXTE}-l386WUix5xXNj%+`wwTFjYG4xyX-4;13hCJ{-Nid#*|F zQp+ZdMk1g!_#!&MEGv~4aXPa*5*i{a=Q~@r2k0t9wSD zPxO0TxY>m+Vd`h<8Ur{5ayxB9r`_f!^o^IsR%v0{#hE8$`Xim}EjMIeXfY9BhMS`S zD}>$(1$FhQj@}-&Rh&hXuLCtnz!pPF(!_^uu-!^gMHaTc3Rk z9Fc(5@rjHBVWBQresz2HjBQ!MUz)V@5RxS+yc_Ur2)bKhlHz*5JlYq1X~Ij{Xk-0{ zmmWyfswk<3KvZU;gqp8ZxKH|#>HFo$&!aLTuLijQ^tOeS1PshL>m-}w|6wNw4n_SM zvq76he(S=7LUY1t!xHxl%yTLCfj7~*>PFQ)UXY75UHCTT#Q03T9!INw!1lr$X3G21 z$;a|6MuF~;TZ({$Ham)^RQ5qEQ&RZ1?D?S6&kL9LAGDWcCr}5$`{IY^nqrln7uPvn zpboS`kyyUWu-d|YEy57ZIOhgS#?vg zdsuC@hS}{n(Q}{91L{q&QER#THhRtRlZEZo{i~zuPWm1>*>)vSu6^vJNsKi_*->Q6 zh)@l(iq3zGUE%Qf+_DVl?V#~|xK1w4_>SryJK6Ct_?C$O*=8B}H0w;gU1#&e}Ek$TN{tdG?6Vu8l<8i=;4^NUmU zg(rT7zZscECu@}VClirGy|)C^r**LsXss^1-bx;%M*&h(WtA72FN$dPV}4Y5g)hXDyP3K z_!5i-TI$>liU+t(71C44Z%a8q2hlk9H>#wkGO5g9*U&JytO5r6OuBPg)Otb-Yh!O@ zWJ$Sk;zsWby5i!4yTe~}c@Yd8WX!q`Y`joem4cGq{WrC+*{c8IflfQxVB-4OF{hJa zCSzf-p%>8XuHWA7^@UXr87cLzJf|(Cp09SscyfSSa>0Bsu$5mtm3Iz*=s$xvLyFpP()B)Ab7p z$WOg0SHGKmgqpRd-@uC#NG`!)z++pDm+rh{_HUAZm=&4?nR1`~Y4w%7LjvJdS^-f5 zWqR3_W5rys7#&f}biBUciHY}b7g}~(dQ|9W^AQKdL%hiZNc{1e(fYmD-ha9Yo&QXH zHjNH*9T-8$a?ObxOp%qjYGG0KIov2sbUQV1+<%VO$LZ$t7o(tzG0YMJli0M9WlpoP z^>p#UoC|M@x362*r}}9xu*)Ez8BAlpK2;Z&1GpXgxqu*?BM5>;gW#`j!sU=*pB=(a zwFKz%tKV&euEy{S&+2!9 z9il%O!OhW)QJh53gFYfA9fc4AwO_tVbeD*gL^PfirsVcrOLW+j^#n#9@%hQsJ z7}kc07O#VFwbf&H{HHobkL@7f4Q_(+JK@X_lHC9NHCF`Ln7<0 z9Q^QT`}jHz>W(Vx4HFey696{@v-YfeNn17p>H!kx5TMayD}x?bH_FEQr9T2PmC%bV zGz5Wd7|(be5Qm-*e*;&}x+UHjkOZY1zpeY)K&w(rqJDLh=@xyTn1R}MrHzqyZql2m z{reqp2MlXDfXi<1`mW-~d_x-S>!&lXf z1KVz&?=&t+fZfe2%TW?s*g%<9=)S@Im5hUMUF4VFd4 zzw-I<%X{ohJj&9a8;oTNqDMDRhWX5lFPUHZb6ae$mVD`1P~SpzvVjqMYR&47L%7=c z`Do?Mix!vfk%2nz0`64dRr~V<9)SH0ySTz+GdVyJwA%5P*kvYHsZlvGc-{2*1Jp5$fWq=+8a(X zxFhHlSs*I&CTbB7zZB2Q81@}+k^ z2Btc1_6*R9`m;nx;3ov^B5@Uk`iI^__x%oVtxs3#KU^a%2&GK=o^iYQl&x@Pk^%7T zK7||w4v7rL&9hpE9xg{$nI|-lH-Z*vLU&=&YT?%gzaXV}5w5t`I*?07_7*$A+?*Pb#ICQ1 zDW^^)1mx@HIl^K1abx%F{ZBs;2<7eJ~))U0C*=ioHRg{OyfAzU((9LHay)l0rKAU$lo^&J?uR0nH=${JwFqqbz#($1ro0xAKJNm?L`ipwLWmEJ`Gee|6u4+3}&Z(s=N~4}_iUo;@=K zG~tdjI?f`4|Irhpf|P;2CN^Xq0cDE@An9kv)4bHEyk8(dQs82s7R3- z%fn@Ry@W6Rtt`cZiQau#SdnDKycZ-^Vyhv(R(-{aFhE=>`}j^X6@!cg<@3$7sq$jg zdRe-6rZ?{&_Fx5ctMEkOC00#j2X25lrx_Xq9XMR8zWHurOyk6+P`m?==p9iX&)3q? zRbFoym&<2S-oIcSc~P>Alu&awHNAxES3Ye4$F4h3N2wG8Z7lggD^iC;BN#fv*-sZw zHy?YH*JO)(3UH_I4k9UO%(FdM-SC17UVkY?kuWha>GfPN45wJ}sg@{2Tsxnt=SXEe zH^5^&xZ?aKVD@W{|14~8rv=ZYZ7&Z$E`cr(C!i21qJv$9W{7Pyy=imqhwmixq97Jp zS8C%s)eZ7@A|5yTt%od0ir~V!guc_JeH@B21spldPe`oc!x8h^|g5%+0uS z=1-PP+fRbITC4%OoH!#9yOc?{dwtxJ6RQ9J?xC-OciS2t#7SVO{Oyd0)CL6z<>cw# zef!Sb_{r5P7}#{Yol%QjW#-g1gmJ*OJ-}Queu`Bm|LG))B4uCxC>WYW!f0TqVEWBwE&CM)v3`$* z=HFur+k#@p!L~qhPayT3WK`^c?lrc8VDYDKr2ikY&IQ zekffeCM>>M%b}{s8_bl#`RbP#!>`=q#p~7fH5CLyBQ6)?x;L!`KND3p{kU_y4F{R| zpynZoMj^wBzF%2=O02U7MzT|m``avYecxrnK`tEqBZ9(Jo|um|+=?0H_i_5UPbFEc zoGZZX?{tna3||$wDYitob-va*&qA|ps7X$lXRtpGuf%|9nH@hh&JdcoYH2dncK^{L z$ukdLJ}7eFE(CPD_3gPR0+Kw#fh;(@2I}! zWbyPLm~S&6M?wqx@X-s2E1d%CE%0seHpaFaaW82E0i54_sgypK#yN3X7GqUqj^o1T zKPD`EeiuAQz=+*4Goxx>)P*ii>bRdKYzDbO(i3%pe)|c-Us!(#=l%)VmWcap171DT zI{r{unwvT3?-7w|NcmBV7HZ6qOu(hKt`_HR)bKza)KAYL8LlyQQe%{D0@Bj8O zfkhV_NZIXo6Ri|;Nf!5GrVZ>IrUN?`T+mgfEwTf%T;qmr2eRM^Ye-Fs_TBB_8f3)P z3Yoy2glU1udG39Ao_8QQhv0^@gNH4dv$7Vp6&hn zp`1m&Py6J8#CC)ES_*D$XTxokMJwgila#YRo(br-VMk+uen+QO)eY{|e=0(gk_HrV zjMaesny|-B%Wz+o5S@XH=e2omP(M@cIcNPj^-x`kG8&_7P|NF|3uE%FMz6Iejre^? z12l4?px5W%Qltty00&wdaxaQ&lTV@9KsmzoaWiiyd6T< zpxmj~P78#|edfhi=ZzpFIg0M?&R(vu(~e9RZwe91p;Emvy*Mj2X&WVQ?#cov65s0u%vN>&aD3ovPk}^1A-}lJ@Pc}d z(f4=n^N#UQ3e8z5bOIwD?2swLI1PFE#8B;0sG;36^RMWTEByX_RQ9H!;|W%8H$gpn zg;Vj!ijg6y*IS|0CMvbN=nt@0^b1cFZxBATh|h07=fU-9?%_%%^k$)YS4K*&I%MW} z(3d?Iv=Z15y^U#E<*ystZbWR+;b`k>5A6Bnh_G4;VGGEbikt=ib;91i5h~k<}TuVU{C$7AiVY}qt6#GB>5H>N@bu$UY zxu(2<_R{B+5%|`>e65-uT!AbW^&Lt>nW{aD$fU2-l_Ugp*}QeK;fNn$4isC5et4zb zPG_#YFYg7-eO?MlyF;6hS2(%eijtn>io@%J?w~&Q_#r=$t6Tq+KV7f!&E{D~fiPa$ zB6j_TO=Ip3rY&f-6mr#?>J!w#WI+>*vHMlyfQgEV)=Q3&okmC4i=o%`vR{kj9$Zu} z>JLbUv zu|r?~%$Nd-+omUN(Y9s(FFHz5%Tl1LOxS%(_Add<$=dr@&J@8z)ADVkLnpplAF~!8M9MkorcF?(S}-uuy`?}M+Wqz#bEkcapB9-01eL5JNrSUW8`GNWX81% z$cdDLt*OPbN2@n1+0VFK<2!4w-lUV9-gVRUFyf*Et}J#Bvmr}oPF!=(c6v&++kAjh z8YxkLbef`W$w)*?T;0mhyjh6?nIND%xHKf;I{?8idde>lsKamttNxH9l5#?@x7H?4 z{|X(ckB+HM_$Gn;7R8v8N-zXM(#0?)ZthIGtr0qj!1>jiBIvm>UC>h`>Q9$>Z;ufJ z)STGg0g*LMwETh0EXT(kTCxoOqx9*!bRWFae(+BB4u|!leQ*VivT13U0aGC~j<{Nk z&Aoh#ADi=M_2^(k;iU|hLx?u^T5xE8A^4lf8(&PklkHh378h3B{5%cgpNh=Ylt#w_ zyLuPfpeW6R|3O$!&wX`)#R2D$wNLNFitphfr;P4nuD!}Ok3L9W+x)$Xifp@MASE8m z6oLaDe(-gXp*E>bxq!n)D=}TFw@@G5B3`1f<1=IUg9NooZI$s;IR#6AKnqkY@wZyCGcoI8 zi_YwqUk+(kAt#7x@NL^bOG_nU?0V6Me*o0*xw^w|elQ&V}R1aGS zn4$+uUU=`r7O438yqCW({4vix%4FmbDS^wl50=!*1-{4$JU6b<$Z__>Z~SqP;Xu;? z5s8T!r^bcQ9tEgcdVfjqnYVPD^LBbk#AYG%lt28KqDvnXhvT8bbtWmDwAy(RKmR5o zLMkGk84EI51(j-XL!Uyq zTWX_OSj+LoFqA2=^4Y*hl$pPDZ-*eVO!({U#+7}>s6tnYTH0f9Sv$uVl1?(D{hQbM zlPbMOOmc73UV%EIc$f|@JGa&-*dp1|{;8ET*A~U&tP&-AC-Wr*tvf`Zc8LYEvFb>d zZl&3}g;zJ6w0rW29ij>_4;aQxz)(G$EK-X~l4L?9R*8$}&q4hMFF$M57655IyH3;l zWz`7O>|~yB=r>YFN@^`hY4Nu?XTw3jG&j6d)u&h8Wj&K_)ZRfN18@~`i$q$j*eYd7 z8;Fm(Icf1KaOZsK$W1hfcON8OYcb*a^1YTr>OLB4*SDR0yaEz9@ghwy5Pmai#IC+D zsg|TC0lJnCc#7I*suD@~0q+sX!fL}WUjeIIaTXh&g%e~A3LG-bL(G)=Jh+1~`yz7) zDgwOIIM=sM)sTIDGj2+n-DmuILP2d)7#IVS%?aClzOw$q^yz{&{XMYdeU+@qyGwSq z?rAn^Gq?7nQ?F;Shs0m^?Poq?>Arl4auPsljDa%V-~&36l%-4g_HfX_kh-M%*`z#} zLHx|~rESPrF?dl0-hX7mTb%ps1VN%f8HMNSBMK8a3H+f|07FTU!9^afLtgG{MT-X6 zuSbYQuRiYW&g@#qNcw8uH{l80#-pT&l?>6c96jYG!}lwoXSUcX>2gA4BHueUY}#$Q z^gIbvbIPgyd2Z#eI&wDae9@bmab06}eXcWZ2e6<9jxM#=`>La4660}?6G#Rcz)CmH zWi3HKoFJt5l>G81V&~^e?U9|=1J@DE?R5%~q{ESi;)X?TgU`{|Ui)Lbw;J(=58m>1 zkx!uWIdXE*WXL01*wpQC!XyS;MS3N#FSXq-n$0@X*!wWDGjeY(a}bVo8_gl+V(PI^ zE&+Tn5J)s^{Zq@hlyXqMGsw4JDfu%;(JB;Tq#fXuL>z?WOWyW>FzS2CxV?w~zPF}^ zZ*bIaw*b_3i*NYYOQe`S$Ynm%c}81AYsyGkv%o?0jN2z3T*k#{Vhqd;)DW^M7CMyr zj1`ZP*SON^__4rOHiyLo#a?JdvQa*smyISq1k~=?X>qLIk-xCbXCAZVL1UB0|KO5I zT$5`@91I0)`LABE1lCp4BcE}fi6V(~3}?|O-1XDD&wnQy5o_fI70z~RY+u{hANx$T zNFsr3m{@QeT!*@U-*awkST-?MNo;fQmzIm?ZQ78qruEpPw$#K};rc87m7jGP4rjUL z-4{Y1##%{VMW09MF#*Vt@sU(>b`F(i2fPeqWwsRR^z$5>@n^<$$tLuvm7+* z*?#vz;MTqGsqC+6x8sXQuUfZNWttu-pGCKh3C9Ae!5J*LS94nG8M#}?&@3Tlv329) z6{lW%8iO#)$R& zUBH!7+awhDfBq1xRz`g!Y<0K4eGQb2W~~Z4y4$IW&SSnb`wD_A!!BBM8Ixi+pt(^- zAKesDLf|KgGm*@r%WEA^Y(F=yD`p`Hbs(YfU`q+_mB4SpIqh{iwS{ zuL~^(fqIb)qPB0dBss4iiS!a?qV=nN|K0{r?|;T})fwLzCHyWQaSrta;?&4f5!YJD zN!#xx03)$a!F^i7npMW$2zQ?@U8AtSq3~TxBv4}KL~>sw%v@EK@5hi134Wc+H$czV zy7xqPUp$1inzD{TLS}Z`abu%egy0<6?ZnV0@ju$tO14~@o|?Q(LbpeL{2N%15QnWd z^22W{H?$P!QzT2-nZme;ORam4)s_jSvlObSE`1}tez__#P=Sh!i zrOC__V-eTNlXRS$Lju63$Uk{!+f`VhP3lYHvgFEhTD!W-x<@o=b>h2&51S8k=j=SEK#6>p_6+9>(5?bZ-DC-KWpoH1?8ws z8pjD!@N#U;$hBpZz%7)FtvxxaJ@CF_!zjXrOGp<+zIq-?AAiNh{f{k3r=+^c@}aW| z1j(fN{DBxF&^??zpXE9v%CgRSNdQ)cn!y*i^?wDGvVkVAPS4%9g;n^U3|T>nSbKw% z{%RgHT{HOh6#Lu(IlLhlM$s@&Km2gqClekGzaizk)0r}4*a^W4#tj&*cVe_c?CHAy z)cf9Q1*@u=)OyzwDwQKWLl@2ucudbhi540|M=9SD>P{U zcw^5I6Gdp5NgewSg;{;vKq*mJfKg*_*Jj=bSz9+pE>!6SGnNQ>L&Juc;b))Bt|lf- z=*552Q;BWrCapc}7YxGhi*p9zU-g{kmyyVR3xtMbgWQF9!$$WLY5cEKEH$ zS87(TU*`ENL5Tj;w1kSnc^&`YmT3X>kr`)h^G(z^fRe`RQn!TO1b15kAx}molzsYK ze+!it-FgOgg*71|UeFNH3b`pRr>lq z>(QLRe*_yY(k6nVu8HT(ne14dyGkWWhXO&*Fu$mNM;ix}oN-?ISbL;g zuwKxu*VdF$m!h37oL46;zlG0cz9O+$qc9>qNWJ>%+95tAqS1h1@LHNRKMCSRHR6y0(HR_i&#@o{E9{X0wgs=VNPO3?C*ZU; z;829?eywThiK=YhQWq6%$1i_l(T$`~P;vj$WESL_h8|X^cvz9>-u9zyLRJD>7w%_i z==~0Lm4rUHr1`SHQZt-Fl8FU+6@9WsmO<75{(RMcK_|Ayi8HeYsu9vfH{55Sq0xwLS(BoZbGKqH=ywO<^~2jM#xT0qyp z*zL6S1h6IIGgv)YE4LJvHqGO1DVT58qxYSLt80%(KNrn<)_l|j91O!owAgfh)7RDH z!)!K(>fa=0cd#?0X1-|8VIDax!PUgZAM zG%mlJe&LCCBZ4WYG=dKpu|SO^5mXL6`KH%2!2ch&b+cs4-8Yc6R-c}ecl@6lW;h}2 z&y@Hk^Q*5meq}hNR!+cygk7MBNR63uY1%<(k@&6Wk*)FIlE~KGhh#v=+u_bN8!kU& zZzTO>z4RBMjAZaJ_O5~Zl%F`J`IU8ON_7S5|G#Dsb>E*y)L{#*N)j*rq>G@K*_~&{ ztIRehqAz%WI0q|h&fGr&%G7ha_l`}?Yzgl1Nf&MnmG8_(;OFX@jcWA^+qW}{0-T2} z)glDV2}2(hZ9X1X7EDW7gB1Q+vl>!KU%ha%LMk$JoLh8GNaSVqUEh62Aetqw&6x}y zINAHYcMh30@_`j2-VNbv^|t!pkz}rtav)I#)es=9(IM$m@vB-q<5Vr+yn<+D%&N-~ z>=U^LzxP)@9J6uMLkIwAxS_0b{xVdtXx~F2p-)0o;2}igUaL}<~O;y{+9mIlq4F38yA3uhiIKVZD^C>V=HIT7evCF`1r!B`43l9YBt@L?0;8+Xp(65b}?m~a1QZb_*{ z2$Ujd%<%O(JiVH89CT+g3zPqYcD+!lynZqX5hJt1bohn>$VhM#rZ`J@jKyD2t)&__sQLXyet)?(djuUw|ZifWqqADB; zkew>~@#KHTq>y(P_S~#tnYM&>S1{Fo#*`{=f$)j767TK2)keE_JAmJRs4gCh@f1nw zAihLX+K@Ysm@jKY_GeBg^Iy4EUf0PQgP=ie_^UBk5KMmaXv7SIcGjTcX>*Jry+9T2 z{@ElRUA*M_PjBR-oDoS&6zMN^r-!$OJl%8Jz}p_$jkm?BqV{34AV!;Bz{HMwHRd8NzvL!UGtuOkayh@X1qT=`zcNDO8vA zyAQY_bt6JyGNHi0tF$OP=XP7&UQlNHjhz#+)2QlIU{>aHgXnu z(P*c0#B64WtouvyW|6Bk*53CKf<#9#s?vt%#gVASBneZY?j}=kU=z>x^V>_4EI-OA zxPM~fEb^l%bMaogn#YP(d*B@4i!&#Ol+Jy+Xno9f;}Y@2gx%TnmpZ=SJ`J0ht(X38 z{Bn!MzVps!L|na8JX@pcezH)4UnsIiBpL$OgXR{q6B4a@k=JClW_n_ql*9kXDG+Ns zkeEntUJX-~{^uXM>PqnVA}B|C%Ihi`r6N1602!?09VB1)LKpz;NU0;lWcPz_Hqz?C zwQ}xja_w@-lE?VA>%*MVTg9DliifgC=xmkcX)q-cl~bMC^z=%U8yVjWR42zo8T}IVejDXPOo+h>0Bf*r!mXBU z!%;+XQ5Q3lDA}pmKkFVtaPDu@aRx8H&anYrWkig6_i(gFghX0hla1Cg`#AsAmy#Y6 zYOn&1d3^fT+(6 zbRTJ8BJHQiM{9PZt{`dmBhD6Hql@)|Y;#SsmPWZk-Eq(jTXtCG-K*(DY&10dCYqc@ zhiE8eQh}^BI#L>lvL}*MQegpKm+NUoS-lRf$2K4q|L{7sy4Zm&GPv!7?$xY~mVi{p z0}G*nHyOE9b2*3MB`8^j?0Dzvdabm&M&EYeAXjkZ=$(r1 zdCy|+efd$vVcIVyQ6NWQy4=&jAn_Tw7!{=l{1~sT`VfT_DF)p~<;2y1=9z@-hjg0Y zF4io4%(FVod{4g$1cdKTT;ii}7P-=B^C*=645yAG`<5hg!}S?WL`b)Hv4$N{q$+yxIILgsAIiB|N%mDO4M-duTVqnILo!1|L1Ot9MxyV=kj?iy!96 z!cL0_WS~I@*CqX%2jQLwL}d!mU-K+CZe0WP7pZ(SoJGDg6p2GR9QDm;S?BV0F`78KtxzQL#O{>2K>*LVo3nYtC{f*!!DNIK-AkQAi6Fgl8wAs8CcA)9xKJ1)dDX z;WQzVn2xk?Mb^X^Xp6|(9e(4~?g%cqFXux?F@L0iAHKe;uP4Hbj)Rkig05En$(xL$ zh3s2BjSz0vXcjq=eDMFN>&v65T;KO!LpULJh|)nKbtEA|MA_z|Gzf)4gd!zFhFuD$ zl5CYqNR#6TAxVT%vJ)jmGK9>TWytuw9(6uz{r>o^)mqx`e&1(5&;35bJzV#7+rGry z#i^mp$Gi+x7a0LDJ?3G4>B;l4t=kIHWuD_G?G)jRH{L=QP=q7TLPY^g67Xma!4z}dFJzQz!z&n;9LreS<#!?bVU6RN*K7GG0@f`~@RnwJvDtsR z-&O7UIs00;L|o;85=aps)RLJW0np}jmpv5J{os&OM-Vb$!Az1e9-Qkfd3!2EjEk^g z?Huz~=8hk5+VxSDNwhPBdPd>XNvlZ0Wa7EvooH160e|F$a zyEdSsXaMD^zCIgQ%NZAplKK1gI7eI9Y{}J_i#ohg=PCs&qmhyT6xe3y<*-js>}t@R z#=MO14s5POC`0~c_{t~F+Hac3=(^i^Qpr}#M1Ak9L?D36Tls@I^OOnRI8Gx zwEq%B2Ed_DRA0Dez%wo7sZSZ7LEa*)1EAC|&M|J}+}Zu_K-Y_2z?#ZFSxb7s>q(;Q zoHSMv^{{P+VKgVt|`C|%qLP$vA)e*fj9uyEAAtw$OJBE5|SIT0(+-xX%*t*GKFz3WuV~9+?dt2)WmeBRyxl;k*JY?mr zU8}-c8*a2{9wRdCm56@xr}aUPDaO71U}*+&9V#lkl6_zMthbZ9+s3cdL32%QBafZ^_c8GK(25D$rOoW3Tb zW;-ngn$W45h+}gATN=ywQ-Uz1R_Lo`A?SIgR0H*OdHleE$pE(7o0=$)jY^C<7{`dw8IqDBc%l)+g zG#A@=+>h(0r6Xj3L+Lp@p2fH1P-B5OvXIbC*kJuQ<8VUOmY>(UhrFzP)V7VCv!5rD z9b(xWRZt4j3FL4XCA{1EyFBC$MwD&iVGkIQ*!J+dYVJxb};LHe!V9QMKY6IBJ_&J1iuw1K0=1 z*lSd7!E_&;$KXD~Hl8GuE~3FOY1gA$2m&Jf@!?7^Rsb<}O>X|Bvg`1T6Ye(g?zW6m zKjdIyfM@1;`vuRwO{ELTtt;EJmnz!oM3-5G({W3pe&z-xkw$N`#j%!E#D#2TOpA|lo!HDfo*DqEW8pWrS! zSVE_Jt>nR5mj2~T8K@K&<2(FMF5bRxmc%WF~E7RD=de0q}BpAU_OnA-#T_9TkGR8-FF0rBB4gpD_WY05%mg8S! zk8I~3Ydgbz*a$^9P(h_A)DAA%pE0 zE~l3Y#%3hM1a2oBQMb9ZJA&(H2S;*dQ^CfD4 zLMMe29L#)N?3QKf`jejpgZw&_kr;{m*NJbF`R3ig&!)%wri$yb-vQlPfPXeukc90( zwRltVCn$emNxKEi<0NdyW_uDpZBDV!OR>%iELc#<7X6C-&MQ9rtD4qH-}4rwZ(#tu zJbh>$Z;1%(wYZ>f`H%pJ1@onDPR_e{6*&E|M~Mgs1hUtMnTk=8GhZLP4 zRpjq6UIlqrJz;rytSYEIc(#0h7?#k#-VQMr?A(*jV%mYg%U0M-nui_K!pNx!0j3+kmqH&wLurm%e^G4!B;%fA*da7?+dw=lLY})xIf|Cm>#lMoWE$bl+1a zyY3N85$tFjsz-0fy?s|a9I|WCzUVu^$kGv@b`KEz;t9kbSbK#)w!e6i9s}-Vm-v`$zHX zcbmw<)+GEgZ^N&tHZoh?L;NV^4|Os_=Js zd}rQt)NZO?UTE*>QiOwP8q?=_JZkDgk&6j3M6Q<2oD`A-c!q{H9oad>9UOenk9LPQ z>zb`~(Z>(cD`MJ}vL7|6m1TIls%{RPqJeR4t>mo0%ngsReKyDg3j%Y#8h7lTg*5F5 zLwQPFSX4^g)``5oAJP;9&KFF?&#@)eSt+~&KMWX2V+m8!ur}e4%CNV74zn7lrbSyy zPR`anA?rNraBs}v6k(HbF|8(#finpCOlfVLaQ28h72SD|q-#Xv<)FA3ri_dBd@BBQ zM}*VrHEaV19O?8&iz?QCJ^Sj&D}cE8iuplv0{894!GxpX(pwg(Y}sAL9c=ro@Sd(P zTlC0mnlxS!qx?vib@CZ&zy1^YNxSs~IdP1^i7Q6Da*rgZ8UeSo7RehlWwkx_-|L=s zs&pmhQcINh(}k`TV@PC$l$n(IKziqVxpGetnZ;8?|(9j=y14a^30^X_2Z_KNgH8yj{@nB_Zr zQu|JjMTjQh5R)O*bGT@g2BH+DE9`kL3dMc>t<+*k@fkh1N{XeJ53#hS5>lMkVlzj( zd+$+FJa5)7UW~0s4j$pzwET;}{P2Ys9iUT)-wY1d#cWikfpBy0U1~s4F{pr7SH)qu z^zD%#BLdl3-`{we0LSPHk@+%^cP@n_R^KiSnZW~TlxP2%Edl2<&oW5lVQ$pwESi=>8@gA%r$`E*nu= z^dlB=aN+nGAdrZNxlXpIMw3%cLU+M(8EI)tq~nAAhbLC3>N!6fUA%u~mJlh%-WH3u#gEU4WOM*6&%Qq=s&K#D)mjV8eNjVSuSi=V^cXi)Cp(^+Qvt$MFId z<0c>5F9)L;DN zi88?XK)Cmjo-y~t4z2RS9>IKb>Y4*-{@?b9vT@^D4Z_qwtW!aaN;tGZ>D~;K4S{!; z@~=#2w@dT=#$N|rR$otd*&QM#HGmA@h&wYm5B%kDT*jZ~xplvgmlWS75Wh31gSK;3 z!l>ovp`ptC;V&$&$)Y^aQ|u#squvJ&I{kqyaL&ussYD7ZA#&w;Cu{NUyf~B*%H7UZ zw8~Jn5KGpTioGU>2YI2TAvqcDvH7Qt3Tj{0JKkjGLnuIhF?LC>AO5(N(iuN1HM5gZ zM7GRaeguCB&fvr?Zg?b7#Ya+a*@PGZsIVk1LivP(-db{V=)<=ZxuDKNj1$5P(d8)e z?Q>`6N|GfDpg0M?@l*yPWCIr_+7XwA&(F*4_R5)}Ln#t=+JjX!RP*@@S5Q{-3UIiITd9&~rxjPL?(xP$1ekD;T2IX>o+@KV&D z;3dV4wi%s3HiPH=#DywzoDoI`Zhjf-{3MkAiLKP>0jfZqRYWaOb*<>^KadH<15gmH$WYC1o zcEOEh;eUr4b;I6s-@4^B)V9t~4+5jV69cC_?O?&69HPzkhv!r21wX6Y)zA2==f1`~ zh)Pk$!63{IONAqmpJZ2m|1$#S-C2SNkVY^$=;1+u&aaw-Uz}*4%dX)U%>EbV7AHWA zMDH3M?NfkkB4N|fG8pyJjo9qV)f6;2oAXYu%!Exs&pZI25RlV8{$DPEbOZ#HFu+vA ztal)V4GtGXZ^J=m1_Tma;L!=wANt#UMIa@KDJ*ecLzr({Rlx3~|hZC|e1alZiqFjrh{*Nse z6X62}V59!4Ikw~N)cBW^Uu#@r_yegIV(YQbYO^z5Uh;&u&CuUhSorkm#P@pTs}*l& zrVIH@Zpa{Y7%@Aok*74?E*UgB%X4~s)~O!Fxq{#9NHH|qxpe5Z5MhMV?OYD0p0xqj zwuY}~<5}C)MwUxU*Q}uedUFa#s$F+aQsXLK#9HZa8$c~*Eoj5bK9|LuD*ZTVI_1Xo zlqBuI^x1|D3pxSf5#s67=HcVBO5`C!p_bk-z?Q&X_QK}%H%=$d9ii}t5X}^DdYD$x@m+CYFg%DgQ?|*Udtm&7NmOiwI znyFC?O0*e$=*_X2^A0Zg`-8W8)iRn9Z=`{%iwvfi-ccnu%d!6<9=@sLB@ZyqQs>;; z4C(ZRil`Em(>PvRL*G8Nkv#3S1|5cy37#_&@^{ze`LUYk!ECt*16~+}B5u1K;KX(n zP=+@-wECA_Zn~#Okg=x(S00@JGz&gFK;vkj&v|l7P)%qr2PPa*HsN{#t^mb?a$~TD z_E5fGQ#|rVYi4Ih`*f=No)&x?|9-6ES&qWksHiYKRq%?_eA9LNHIrKCm0R|euk2lw znR>tXu=u_Ux*puCkJ&~maQWK^uNQlCHPNiN*WO^X*j;n>bLMp7^@DnMs8T}!f`O}t*8)t?wJ#vK`49Nb@gvPzPVkAp!Ce62k`TwZ)W=0u@w zw5SFfwNxk0BJ;=P3@zuu53B8-t}cs-zpAoGq5RMtUh|2=6Cs;ME0&f%6X-AJ;FhT1 z;2!PBo0NF-mKOX}0F7PV(o>teCcEbZJEcB&p&~Y+LqS9Joz(!; zL%;lt*v2$mQ11Bk?VZ{U$D~d=FTj6KX?fZQk5*_gPp$vXaVvxJ+&iPV@o~?jWP+c| z&uSS(Z!StbW2u%GNPLIlsb?ywe zJ3TphfPVV=^2oNz;;`Y;#OqrAtr=Qgo%RyiUh0zqk>J-(TeKd4&@#SMKzN=<`OYc-X1lHSH9R7Od@Iu(_eczi>g3~Q=6>iC;)g|b#_ zr|ficn+AF+KWfd$4H~u|ObBS4$+%;9%y-mKM^otSg@4u!9Qy#&p?kUo8%D#XIx-}a_BPO zM(_nnvGj=TMe%bp1oq`02~KVEiDSp-B?~Cyp@vLPXJ+t;1^DcuPW5z+OvG8Q@%jBx zhUM+17LX{DaAM)F?`4d+rvH`+iz8jY<8^BqraX+NwVl!Y+|ONzo0)ct4yZkZ?{76z zYyFyA_x{PJCfBt=09V#6p_q=7_hJk7m>ltx_}wC_b84pla_iSPo?mT7%d1KLn=Br^ z(;0na7+?%rM$~2wGtJe7NE1uZgs;o^xw~4OJMsCwCpF&m#;4D;Tf~fX3S*SH-W?H~ zd4DSR7<#2!%qC_0=6xlnvw8--QzMy7P?rPTl4vzo&v`;h0C)qDy_`lzHJfh}qK4fV|MuA5z zTWpwCj(1E~!60-~*rZtA{hvMUQfoUe;Cpo1h}r8_q7!#RJdQ|~ya_M+;MpOW;QpJx zZg}D}++NG<>y{bQScNNdqO66b*Kx}gwf!&2m2P>8>28zV7n^Jq>)7-bmv|`t zSZkFaOOv00&Rl4Na;g9L??}HnOYY_pe9d;t>E6eTr!IP13!3VG-`+EFaRGCeaY1wI zuM2qv>t{ml7Ras=(A_60I4z0>9`T6UH98?$g&c3YkLl#XisP|9KmKFH;G4lczq}c^_AAF z0%2Sdq^vJe&l)Q;=1rS2r{WaJyW?bBU0!sqJnU&#y3vrV+phfD3qOlJAXviCjW%pvdJce%T^%l_PCV4iWR&E^8ljQUo%!x zcx6-LO~-`aEvb2TjW?*q)x46&DA1=bkDuktxW!%Ojjng&#}!US=)Rh|fru~VSSDpe zppbW65Nljpwt<&ffB5%3hrg%h>F8y7Y#9>y@5f1hZi@HWUTc+1Mca_b!@1SGATmE$ zCLsr}iXwupPSaL@dTVx6CL#Oxr4^R$8;?8oyiZ^8^DgP7dX$Ke7Qd^4P*q-If<>bT zAFi3@d)Rz8%x7=v+GY}Gopm(x?gLY0H$n2vI`*O}7aNaaNdc2areooM5_3T9cNC3u zi>`P0Z(Mn9d*W{Dw;>6T>Nc#6WI+9Jx;PICJ zi3q0uF^fe+unY&*Yf3_|?&LQ~$>VR_m;rU<;iYcuMM{qxK8?qOg@xKhwWj}13TXiy z1t&8*Qa^SLofz2biLg|Dh&d_jpT?B?Y2 zPKK>Xz3yn&{ougWhPGE6Bgy!D@B4B#(YL!@zt%Vsf7$CW^CuT+wQKTf)pAPiqDA+| z8xiY29?uso8YHEI-VsXryxqNQW!DY*-cNUgg`ZbfH>n)hPL_S5c zcdI98Y)!R+&oiCgrA5d(*)a9z29q?8!kH3##Uf`+tx>tAw@`)^_v?!w-b1HPY^g7B z(>HmxYSp{BnWfVzLPcE1wop?)@c!ME%QnoN=gG+RY}wxbBR|&T?~v3UD$_x_-PGDH zf+?NhKQ-)-^mQ`x##0TJ9_gTZuHU>Oef-4`#$ksjh%OFogR@%+Vkt;{+QX?RMV$f$DT2V`eYQda5NFA z2KDS>i;-RY`(tt1jRL*h_rj9w~#XJV&B$3XOu^_LGV+NsR-!01YRYP)Q+kWoG z)Zv8O9~ZtTtJdCNx7&1VBsru;w(Yb`86V~w5B1(x@JaW@xQ>cX6^d6jtuaDxZ#sz) zxiCubvPRxoPo^7n|I9vKp_rT=v0eny;iO#Zy1TmihWg&tHsn6{(>cfP=VbBjA@m+8 zi0E;B#`m6zz1rzlEBsVP>X}})7Irrr-)fRUQHN*e|7FuR)oJCFHmssLa`Qv7;u_Ts znUPnj8gi?6FQ9dF=}Br;PP~<7NL$Dz+ig4E{l&6c_ZnY>Gj#Q|pcl zRoiq(Ub8co>|PLWMP}H<%Y<2Zs3_i;q*WYv8asP2AO$RS0{GpWBDyt~0RZ&n<->Iam vsjQ@_q9MO_ttKM#y$x;u&jW`&91k7z`~N?%`Js~)9-xf%&FE>H?N9$73FK7j literal 0 HcmV?d00001 diff --git a/mica-chatbot/src/assets/images/mica_logo.png b/mica-chatbot/src/assets/images/mica_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4513d1496ff1477a75cd099c60d456fd62b918fb GIT binary patch literal 3735 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 TiOpNN4*<}8XrNuKX&doBsM#3R literal 0 HcmV?d00001 diff --git a/mica-chatbot/src/assets/images/stanford_home.webp b/mica-chatbot/src/assets/images/stanford_home.webp new file mode 100644 index 0000000000000000000000000000000000000000..82cdc36cf7b8349d0f25934320489fa3dc0daa51 GIT binary patch literal 20362 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 literal 0 HcmV?d00001 diff --git a/mica-chatbot/src/assets/images/top_level_drill_down.webp b/mica-chatbot/src/assets/images/top_level_drill_down.webp new file mode 100644 index 0000000000000000000000000000000000000000..84aae476ef228eb7b182bf79b95b706d00b8a8f5 GIT binary patch literal 9530 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

&`ZhyO)aYbx=Gbn+z{s2c1jM4@uIjc8nj&a$ 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 Y$!wYTv2s=*Yz!U-MkS{J000000C~^lFaQ7m literal 0 HcmV?d00001 diff --git a/mica-chatbot/src/assets/react.svg b/mica-chatbot/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/mica-chatbot/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mica-chatbot/src/assets/styles/global.css b/mica-chatbot/src/assets/styles/global.css new file mode 100644 index 0000000..ba7f7b8 --- /dev/null +++ b/mica-chatbot/src/assets/styles/global.css @@ -0,0 +1,34 @@ + +.body { + /*box-shadow: 1px 1px 2px 2px #ccc;*/ + background: #2C2C2C; /* Assuming you want the same background */ +} + +.history { + text-align: left; + margin-bottom:8px; +} + +.history.header { + font-weight:bold; + border-bottom: 1px solid #444; + padding-bottom: 5px; + margin-bottom: 10px; + +} + +.history.session { + font-size:77%; +} + +.history_query{ + cursor:pointer; + padding-left: 0 !important; +} + +.trashit { + text-align:center; + padding-left:0 !important; + cursor:pointer; +} + diff --git a/mica-chatbot/src/components/ResizableContainer.jsx b/mica-chatbot/src/components/ResizableContainer.jsx new file mode 100644 index 0000000..f1832fd --- /dev/null +++ b/mica-chatbot/src/components/ResizableContainer.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { ResizableBox } from 'react-resizable'; +import 'react-resizable/css/styles.css'; + +const ResizableContainer = ({ children, width, height, minConstraints, maxConstraints, onResizeStop }) => { + return ( + +

{/* Ensure padding for footer */} + {children} +
+ + ); +}; + +export default ResizableContainer; diff --git a/mica-chatbot/src/components/database/dexie.js b/mica-chatbot/src/components/database/dexie.js new file mode 100644 index 0000000..3bd935b --- /dev/null +++ b/mica-chatbot/src/components/database/dexie.js @@ -0,0 +1,71 @@ +import Dexie from 'dexie'; + +export const db_cached_chats = new Dexie('cached_chats'); +db_cached_chats.version(1).stores({ + chats : 'session_id, timestamp, queries' +}); + +export async function deleteAllData(){ + await db_cached_chats.chats.clear(); + console.log(await db_cached_chats.chats.toArray()); // Output: [] +}; + +export async function saveNewSession(session_id, timestamp, queries) { + try { + const id = await db_cached_chats.chats.add({session_id, timestamp, queries }); + console.log("Saved document with id:", id); + } catch (error) { + console.error("Error saving document:", error); + } +} + +export async function addSessionQuery(id, newQueries) { + try { + const document = await db_cached_chats.chats.get(id); + const query_set = document.queries; + query_set.push(newQueries); + + await db_cached_chats.chats.update(id, { queries: query_set }); + // console.log("Updated queries for document with id:", id); + } catch (error) { + console.error("Error updating queries:", error); + } +} + +export async function updateSession(id, updatedQueries) { + try { + await db_cached_chats.chats.update(id, { queries: updatedQueries }); + console.log("Updated queries for document with id:", id); + } catch (error) { + console.error("Error updating queries:", error); + } +} + +export async function getAllSessions() { + const allDocuments = await db_cached_chats.chats.toArray(); + // console.log("Retrieved all documents:", allDocuments); + return allDocuments; +} + +export async function getSession(id) { + try { + const document = await db_cached_chats.chats.get(id); + if (document) { + // console.log("Retrieved document:", document); + } else { + console.log("Document not found"); + } + return document; + } catch (error) { + console.error("Error retrieving document:", error); + } +} + +export async function deleteSession(id) { + try { + await db_cached_chats.chats.delete(id); + console.log("Deleted document with id:", id); + } catch (error) { + console.error("Error deleting document:", error); + } +} diff --git a/mica-chatbot/src/components/footer/footer.css b/mica-chatbot/src/components/footer/footer.css new file mode 100644 index 0000000..4f20a30 --- /dev/null +++ b/mica-chatbot/src/components/footer/footer.css @@ -0,0 +1,58 @@ +.footer { + background: #fff; + border-radius: 0; + position: absolute; + bottom: 0; + width: 100vw; /* Ensure it covers the entire viewport width */ + display: flex; + align-items: center; + justify-content: space-between; /* Distribute space between input and buttons */ + padding: 10px; + box-sizing: border-box; /* Include padding and border in the element's total width and height */ +} + +.footer button { + background: none; + border: none; +} + +.footer .user_input { + border: none; + flex: 1; /* Take up remaining space */ + padding: 10px 0; + text-align: left; /* Ensure text is left-aligned */ +} + +.footer .user_input:focus { + outline: none; +} + +.footer .send-container { + display: flex; + align-items: center; +} + +.footer button .sendfill.rotate { + display: initial; + animation: rotate 2s linear infinite; +} + +.footer button.clear_chat { + padding-left: 0; + margin-right: 5px; + border-right: 1px dotted #ccc; +} + +.footer button .sendfill, +.footer button .send.off { + display: none; +} + +@keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/mica-chatbot/src/components/footer/footer.jsx b/mica-chatbot/src/components/footer/footer.jsx new file mode 100644 index 0000000..32b4fe1 --- /dev/null +++ b/mica-chatbot/src/components/footer/footer.jsx @@ -0,0 +1,44 @@ +import React, { useState, useEffect, useContext } from "react"; +import { ChatContext } from "../../contexts/Chat"; +import { Container } from 'react-bootstrap'; +import { Send, ArrowClockwise, EraserFill } from 'react-bootstrap-icons'; +import "./footer.css"; + +export function Footer({ changeView }) { + const chat_context = useContext(ChatContext); + const [inputPH, setInputPH] = useState("Ask a question..."); + const [input, setInput] = useState(""); + const [loading, setLoading] = useState(false); + + const handleSubmit = () => { + if (input.trim() === "") return; + setLoading(true); + chat_context.callAjax({ role: 'user', content: input }, () => setLoading(false)); + setInput(""); // Clear input field + }; + + const handleKeyDown = (e) => { + if (e.key === 'Enter') { + e.preventDefault(); + handleSubmit(); + } + }; + + useEffect(() => { + if (!loading) { + setLoading(false); + } + }, [chat_context.chatContext]); + + return ( + + + setInput(e.target.value)} onKeyDown={handleKeyDown} /> +
+ +
+
+ ); +} + +export default Footer; diff --git a/mica-chatbot/src/components/header/header.css b/mica-chatbot/src/components/header/header.css new file mode 100644 index 0000000..c19dc3b --- /dev/null +++ b/mica-chatbot/src/components/header/header.css @@ -0,0 +1,44 @@ +.rcchat_header { + position: relative; + background: #2C2C2C; + padding: 10px; + width: 100vw; /* Ensure it covers the entire viewport width */ + display: flex; + justify-content: space-between; + align-items: center; + box-sizing: border-box; /* Include padding and border in the element's total width and height */ +} + +.rcchat_header h1 { + font-size: 122%; + margin: 0; + height: 30px; + line-height: 30px; + color: #fff; + display: flex; + align-items: center; +} + +.rcchat_header .logo { + background: url("../../assets/images/mica_logo.png") 0 50% no-repeat; + background-size: 30px; + display: inline-block; + width: 29px; + height: 29px; + cursor: pointer; + margin-right: 6px; + vertical-align: bottom; + border-radius: 30px; +} + +.rcchat_header .buttons { + display: flex; + gap: 10px; +} + +.rcchat_header button { + border: none; + background: none; + color: #fff; + cursor: pointer; +} diff --git a/mica-chatbot/src/components/header/header.jsx b/mica-chatbot/src/components/header/header.jsx new file mode 100644 index 0000000..aa6ae94 --- /dev/null +++ b/mica-chatbot/src/components/header/header.jsx @@ -0,0 +1,24 @@ +import React from "react"; +import { Container } from 'react-bootstrap'; +import { Archive, ChatDots } from 'react-bootstrap-icons'; +import "./header.css"; + +export default function Header({ changeView }) { + return ( + +

+ changeView('splash')}> + MICA AI Chatbot +

+
+ + +
+
+ ); +} + diff --git a/mica-chatbot/src/components/messages/messages.css b/mica-chatbot/src/components/messages/messages.css new file mode 100644 index 0000000..7e63727 --- /dev/null +++ b/mica-chatbot/src/components/messages/messages.css @@ -0,0 +1,108 @@ +.messages { + padding: 30px 0 10px; + overflow: hidden; +} + +.messages .empty { + color: cyan; +} + +.messages dl { + overflow: hidden; +} + +.messages dt:before { + content: "Visitor"; + position: absolute; + right: 0; + top: -20px; + height: 20px; + color: #9DA5B1; + font-size: 77%; +} + +.messages dd:before { + content: "Powered by chatGPT"; + position: absolute; + left: -25px; + top: -20px; + padding-left: 25px; + height: 20px; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAZlBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLZRe2AAAAInRSTlMASPATMqv2+ukHlSZaav6i1rrBi8/fslKRHH+eCz1Vdm3Hv/0XbQAAAVdJREFUKM9dUtuWgyAQi9xvioCWaq3a///JHbR7zp6dNyZMJiQAd4loBj31G/7VPrPk4qiiEP4v+DZTZwGfB8ZMCva3vz2MaPBDjc/jOWp3D21V6kLXHTPrQufF6bX1+UupoSLM6iVgBb8IPGCdLofqIKeOyCT77Bad7oGqHHZNwAlfpnKOWgpvnoCksdAm1n7SkWMpxkRGO+e83YDJYc+JVAuph5OAZBEa1YtfQiIpCCxx5HlBpWWybxL7jxtXjoMavT7A19F9bkBSo2KZM3hiZIGI6qaSpDXAphk4BxII26W8h2y+QCagsGhMWcAj2b7egKcLeBpPAseTXudxNmCHU5X2kVZbP0y+gW4iQB1FuxaCeZDLXJCCl5oD6qAuIcCq3eX2apgjV4uW9ZuH01c+6vFu4V8Ed9mQDGNDbiF0k3n/yXzzgp44RpfYvP//KBvZPpgovscfi/EU6a8d7jkAAAAASUVORK5CYII=') 0 50% no-repeat; + background-size: 20px; + color: #9DA5B1; + font-size: 77%; +} + +.messages dt { + float: right; + width: 85%; + border-radius: 10px 10px 3px 10px; + background: #2846E4; + color: #fff; + padding: 10px 15px; + text-align: left; + min-height: 50px; + font-weight: normal; + margin-bottom: 30px; + margin-right: 12px; + position: relative; +} + +.messages dd { + float: left; + width: 90%; + border-radius: 3px 10px 10px 10px; + background: #E9EEF3; + color: #000; + padding: 10px 15px; + text-align: left; + min-height: 50px; + margin-bottom: 0px; + margin-left: 25px; + position: relative; +} + +.soft_text { + color: #9DA5B1; +} + +.msg_meta { + display: flex; + justify-content: space-between; + align-items: flex-end; /* Align items at the bottom */ + overflow: hidden; + margin-top: 10px; +} + +.votes { + display: flex; + align-items: center; /* Align votes at the bottom */ +} + +.vote { + display: inline-block; + cursor: pointer; + margin-left: 3px; +} + +.token_usage { + font-size: 77%; + margin-top: 5px; +} + +.divider { + border: 0; + height: 1px; + background: #ccc; + margin: 15px 0; +} + +.delete-icon { + cursor: pointer; + color: red; + position:absolute; + top:0; + right:0; +} + diff --git a/mica-chatbot/src/components/messages/messages.jsx b/mica-chatbot/src/components/messages/messages.jsx new file mode 100644 index 0000000..1a7ac7e --- /dev/null +++ b/mica-chatbot/src/components/messages/messages.jsx @@ -0,0 +1,87 @@ +import React, { useContext, useRef, useEffect } from "react"; +import { Overlay, Popover } from 'react-bootstrap'; +import ReactMarkdown from "react-markdown"; +import { HandThumbsUp, HandThumbsDown, HandThumbsUpFill, HandThumbsDownFill, XCircleFill } from 'react-bootstrap-icons'; +import { ChatContext } from "../../contexts/Chat"; +import "./messages.css"; + +export const Messages = () => { + const chat_context = useContext(ChatContext); + const newQaRef = useRef(null); + + const handleClick = (vote, index) => { + chat_context.updateVote(index, vote); + }; + + const handleDelete = (index) => { + chat_context.deleteInteraction(index); + }; + + const getVotesElement = () => { + if (newQaRef.current) { + return newQaRef.current.querySelector('.votes'); + } + return null; + }; + + const popoverOverlay = ( + + + Please Rate The Response + + The feedback helps us tune our support bot. + + + + ); + + useEffect(() => { + if (newQaRef.current) { + newQaRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }, [chat_context.chatContext]); + + return ( +
+ { + chat_context && chat_context.chatContext && chat_context.chatContext.length > 0 + ? ( + chat_context.chatContext.map((message, index) => ( + +
+
+ {message.user_content} + handleDelete(index)} /> +
+ {message.assistant_content && ( +
+ {message.assistant_content} +
+
+
Input Tokens: {message.input_tokens}
+
Output Tokens: {message.output_tokens}
+
+
+ {chat_context.showRatingPO ? popoverOverlay : ""} +
{ handleClick(1, index) }}> + {message.rating === 1 ? () : ()} +
+
{ handleClick(0, index) }}> + {message.rating === 0 ? () : ()} +
+
+
+
+ )} +
+ {index < chat_context.chatContext.length - 1 &&
} +
+ )) + ) + : (

Hi, I'm Mica, an AI trained to help with alcohol choices. Let's explore if you'd like to change your health habits and how I can assist. To start, can you share what you enjoy about drinking?

) + } +
+ ); +}; + +export default Messages; diff --git a/mica-chatbot/src/components/utils/utils.js b/mica-chatbot/src/components/utils/utils.js new file mode 100644 index 0000000..a43b628 --- /dev/null +++ b/mica-chatbot/src/components/utils/utils.js @@ -0,0 +1,19 @@ + +export function formatTimestamp(timestamp) { + const date = new Date(timestamp); + const year = date.getFullYear().toString().slice(-2); + const month = `0${date.getMonth() + 1}`.slice(-2); + const day = `0${date.getDate()}`.slice(-2); + const hours = `0${date.getHours()}`.slice(-2); + const minutes = `0${date.getMinutes()}`.slice(-2); + return `${month}/${day}/${year} ${hours}:${minutes}`; +} + +export function truncateString(str, limit) { + + if (str.length <= limit) { + return str; + } + const subString = str.substring(0, limit - 1); + return `${subString.substring(0, subString.lastIndexOf(' '))}...`; +} diff --git a/mica-chatbot/src/contexts/Chat.jsx b/mica-chatbot/src/contexts/Chat.jsx new file mode 100644 index 0000000..5b02aa7 --- /dev/null +++ b/mica-chatbot/src/contexts/Chat.jsx @@ -0,0 +1,168 @@ +import React, { createContext, useState, useRef, useEffect } from 'react'; +import { saveNewSession, updateSession, getSession, deleteSession } from '../components/database/dexie'; + +export const ChatContext = createContext(); + +export const ChatContextProvider = ({ children }) => { + const [apiContext, setApiContext] = useState([]); + const [chatContext, setChatContext] = useState([]); + const [showRatingPO, setShowRatingPO] = useState(false); + const [sessionId, setSessionId] = useState(Date.now().toString()); + const [messages, setMessages] = useState([]); + const [msgCount, setMsgCount] = useState(0); + + const apiContextRef = useRef(apiContext); + const chatContextRef = useRef(chatContext); + + useEffect(() => { + console.log("apiContext updated: ", apiContext); + }, [apiContext]); + + const updateApiContext = (newContext) => { + apiContextRef.current = newContext; + setApiContext(newContext); + }; + + const saveChatContext = async () => { + if (sessionId && chatContextRef.current.length > 0) { + const currentSession = await getSession(sessionId); + if (currentSession) { + await updateSession(sessionId, chatContextRef.current); + } else { + await saveNewSession(sessionId, Date.now(), chatContextRef.current); + } + } + }; + + const updateChatContext = async (newContext, shouldSave = true) => { + chatContextRef.current = newContext; + setChatContext(newContext); + // console.log("Updated chatContext:", newContext); + if (shouldSave) { + await saveChatContext(); // Save chat session after each update + } + }; + + const addMessage = (message) => { + const index = chatContextRef.current.length; + const updatedApiContext = [ + ...apiContextRef.current, + { role: message.role, content: message.content, index }, + ]; + updateApiContext(updatedApiContext); + + if(message.role == "system"){ + return; + } + + const newChatContext = [ + ...chatContextRef.current, + { + user_content: message.role === 'user' ? message.content : null, + assistant_content: message.role === 'assistant' ? message.content : null, + timestamp: new Date().getTime(), + }, + ]; + updateChatContext(newChatContext); + }; + + const updateMessage = async (response, index) => { + const { response: assistantResponse, usage, id, model } = response; + const updatedState = [...chatContextRef.current]; + updatedState[index] = { + ...updatedState[index], + assistant_content: assistantResponse.content, + input_tokens: usage ? usage.prompt_tokens : null, + output_tokens: usage ? usage.completion_tokens : null, + input_cost: usage ? usage.input_cost : null, + output_cost: usage ? usage.output_cost : null, + id: id || null, + model: model || null, + }; + await updateChatContext(updatedState); + + const updatedApiContext = [ + ...apiContextRef.current, + { role: 'assistant', content: assistantResponse.content, index }, + ]; + updateApiContext(updatedApiContext); + }; + + const clearMessages = async () => { + const newSessionId = Date.now().toString(); // Generate a new session ID + setMsgCount(0); + setMessages([]); + setSessionId(newSessionId); + // Clear chatContext and apiContext without saving + chatContextRef.current = []; + apiContextRef.current = []; + setChatContext([]); + setApiContext([]); + }; + + const replaceSession = async (session) => { + setSessionId(session.session_id); + setMessages(session.queries); + setMsgCount(session.queries.length); + updateChatContext(session.queries, false); + }; + + const callAjax = (payload, callback) => { + if(apiContextRef.current.length === 0){ + const initial_system_context = window.mica_jsmo_module.getInitialSystemContext().pop(); + console.log("initial apiContext, if empty , inject system context before first query", initial_system_context); + addMessage(initial_system_context); + } + + addMessage({ role: 'user', content: payload.content }); + + const userMessageIndex = chatContextRef.current.length - 1; + const wrappedPayload = [...apiContextRef.current]; + console.log("calling callAI with ", wrappedPayload); + + window.mica_jsmo_module.callAI(wrappedPayload, (res) => { + if (res && res.response) { + updateMessage(res, userMessageIndex); + if (callback) callback(); + } else { + console.log("Unexpected response format:", res); + } + }, (err) => { + console.log("callAI error", err); + if (callback) callback(); + }); + }; + + const updateVote = async (index, vote) => { + const updatedState = [...chatContextRef.current]; + updatedState[index] = { + ...updatedState[index], + rating: vote + }; + await updateChatContext(updatedState); + // console.log("Updated chatContext after vote:", updatedState); + }; + + const deleteInteraction = async (index) => { + const updatedChatContext = [...chatContextRef.current]; + updatedChatContext.splice(index, 1); + + const updatedApiContext = apiContextRef.current.filter(entry => entry.index !== index); + + // Update the index of remaining entries + updatedApiContext.forEach((entry, i) => { + if (entry.index > index) { + entry.index -= 1; + } + }); + + updateChatContext(updatedChatContext); + updateApiContext(updatedApiContext); + }; + + return ( + + {children} + + ); +}; diff --git a/mica-chatbot/src/index.css b/mica-chatbot/src/index.css new file mode 100644 index 0000000..da92873 --- /dev/null +++ b/mica-chatbot/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/mica-chatbot/src/main.jsx b/mica-chatbot/src/main.jsx new file mode 100644 index 0000000..7a4e8fc --- /dev/null +++ b/mica-chatbot/src/main.jsx @@ -0,0 +1,15 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' +import './index.css' +import {ChatContextProvider} from "./contexts/Chat.jsx"; + +ReactDOM.createRoot(document.getElementById('root')).render( + + + + + , +) + +window.REDCap_Chatbot = App; diff --git a/mica-chatbot/src/views/History/history.jsx b/mica-chatbot/src/views/History/history.jsx new file mode 100644 index 0000000..03a7156 --- /dev/null +++ b/mica-chatbot/src/views/History/history.jsx @@ -0,0 +1,81 @@ +import React, { useState, useContext, useEffect } from "react"; +import { Container, Row, Col } from 'react-bootstrap'; +import { Trash } from 'react-bootstrap-icons'; + +import { confirmAlert } from 'react-confirm-alert'; +import 'react-confirm-alert/src/react-confirm-alert.css'; + +import { ChatContext } from "../../contexts/Chat"; + +import { getAllSessions, deleteSession, deleteAllData } from "../../components/database/dexie"; +import { formatTimestamp, truncateString } from "../../components/utils/utils"; + +export function History({ changeView }) { + const [sessions, setSessions] = useState([]); + const chat_context = useContext(ChatContext); + + useEffect(() => { + getAllSessions().then((sessions) => { + setSessions(sessions.sort((a, b) => b.timestamp - a.timestamp)); // Sort by timestamp in reverse chronological order + }); + }, []); + + const handleDelete = async (sessionId) => { + await deleteSession(sessionId); + const updatedSessions = sessions.filter(session => session.session_id !== sessionId); + setSessions(updatedSessions); + } + + const handleDeleteAll = async () => { + confirmAlert({ + title: 'Confirm deletion', + message: 'Are you sure you want to delete all chat history?', + buttons: [ + { + label: 'Yes', + onClick: async () => { + await deleteAllData(); + setSessions([]); + chat_context.clearMessages(); + } + }, + { + label: 'No', + onClick: () => { } + } + ] + }); + } + + const handleDisplaySession = (sessionId) => { + const selectedSession = sessions.find(session => session.session_id === sessionId); + chat_context.replaceSession(selectedSession); + changeView("home"); + } + + const displayChats = (sessions) => { + return sessions.map((session, index) => { + const firstQuery = session.queries.length > 0 ? session.queries[0].user_content : ""; + return ( + + {formatTimestamp(session.timestamp)} + { handleDisplaySession(session.session_id) }}>{truncateString(firstQuery, 38)} + { handleDelete(session.session_id) }}> + + ); + }); + } + + return ( + +
+ + Date + Starting Query + + + {displayChats(sessions)} +
+
+ ); +} diff --git a/mica-chatbot/src/views/History/index.js b/mica-chatbot/src/views/History/index.js new file mode 100644 index 0000000..532e896 --- /dev/null +++ b/mica-chatbot/src/views/History/index.js @@ -0,0 +1,3 @@ +// import { History } from './history.js'; +// +// export default History; diff --git a/mica-chatbot/src/views/Home/home.jsx b/mica-chatbot/src/views/Home/home.jsx new file mode 100644 index 0000000..e48e759 --- /dev/null +++ b/mica-chatbot/src/views/Home/home.jsx @@ -0,0 +1,11 @@ +import React from "react"; +import { Container } from 'react-bootstrap'; +import { Messages } from "../../components/messages/messages"; + +export function Home(){ + return ( + + + + ); +} \ No newline at end of file diff --git a/mica-chatbot/src/views/Home/index.js b/mica-chatbot/src/views/Home/index.js new file mode 100644 index 0000000..0b7f00e --- /dev/null +++ b/mica-chatbot/src/views/Home/index.js @@ -0,0 +1,3 @@ +// import { Home } from './home.js'; +// +// export default Home; diff --git a/mica-chatbot/src/views/Splash/index.js b/mica-chatbot/src/views/Splash/index.js new file mode 100644 index 0000000..efa3495 --- /dev/null +++ b/mica-chatbot/src/views/Splash/index.js @@ -0,0 +1,3 @@ +// import { Splash } from './splash.js'; +// +// export default Splash; diff --git a/mica-chatbot/src/views/Splash/splash.css b/mica-chatbot/src/views/Splash/splash.css new file mode 100644 index 0000000..2a953df --- /dev/null +++ b/mica-chatbot/src/views/Splash/splash.css @@ -0,0 +1,8 @@ +.Splash{ + width: 256px; /* Adjust size as needed */ + height:256px;; + background:#E6E7ED url('data:image/webp;base64,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') center center no-repeat; + background-size: cover; + cursor: pointer; + z-index: 10000; /* Ensure it's above other elements */ +} diff --git a/mica-chatbot/src/views/Splash/splash.jsx b/mica-chatbot/src/views/Splash/splash.jsx new file mode 100644 index 0000000..ce62198 --- /dev/null +++ b/mica-chatbot/src/views/Splash/splash.jsx @@ -0,0 +1,11 @@ +import React from 'react'; +import "./splash.css"; + +export function Splash({ changeView }) { + return ( +
changeView('home')}> + {/* Splash content here */} +
+ ); +} + diff --git a/mica-chatbot/vite.config.js b/mica-chatbot/vite.config.js new file mode 100644 index 0000000..5a33944 --- /dev/null +++ b/mica-chatbot/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 310fb16e99c78d92d29df5d05c1f7875de3a921f Mon Sep 17 00:00:00 2001 From: Irvin Szeto Date: Mon, 17 Jun 2024 11:12:22 -0700 Subject: [PATCH 2/3] need to adjust api call to match SecureChatAI expected parameter format --- MICA.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MICA.php b/MICA.php index cdff0b4..083872f 100644 --- a/MICA.php +++ b/MICA.php @@ -178,7 +178,7 @@ public function redcap_module_ajax($action, $payload, $project_id, $record, $ins // } //CALL API ENDPOINT WITH AUGMENTED CHATML - $response = $this->getSecureChatInstance()->callAI("gpt-4o",$messages); + $response = $this->getSecureChatInstance()->callAI("gpt-4o",array("messages" =>$messages) ); $result = $this->formatResponse($response); $this->emDebug("calling SecureChatAI.callAI()", $result); @@ -191,7 +191,7 @@ public function redcap_module_ajax($action, $payload, $project_id, $record, $ins private function getEmbedding($text) { try { - $result = $this->getSecureChatInstance()->callAI("ada-002", $text); + $result = $this->getSecureChatInstance()->callAI("ada-002", array("input" => $text) ); return $result['data'][0]['embedding']; } catch (GuzzleException $e) { $this->emError("Embedding error: " . $e->getMessage()); From 92c78760a1e1e61f143acbdefec4bc82bf106697 Mon Sep 17 00:00:00 2001 From: Irvin Szeto Date: Mon, 17 Jun 2024 15:52:32 -0700 Subject: [PATCH 3/3] fixing the new session bug --- chatbot_ui/build/asset-manifest.json | 6 +++--- chatbot_ui/build/index.html | 2 +- chatbot_ui/build/service-worker.js | 2 +- chatbot_ui/build/static/js/main.05320a56.js.map | 1 - .../static/js/{main.05320a56.js => main.0a989e88.js} | 6 +++--- ...20a56.js.LICENSE.txt => main.0a989e88.js.LICENSE.txt} | 0 chatbot_ui/build/static/js/main.0a989e88.js.map | 1 + chatbot_ui/src/contexts/Chat.js | 9 ++++++--- mica-chatbot/src/contexts/Chat.jsx | 9 ++++++--- 9 files changed, 21 insertions(+), 15 deletions(-) delete mode 100644 chatbot_ui/build/static/js/main.05320a56.js.map rename chatbot_ui/build/static/js/{main.05320a56.js => main.0a989e88.js} (59%) rename chatbot_ui/build/static/js/{main.05320a56.js.LICENSE.txt => main.0a989e88.js.LICENSE.txt} (100%) create mode 100644 chatbot_ui/build/static/js/main.0a989e88.js.map diff --git a/chatbot_ui/build/asset-manifest.json b/chatbot_ui/build/asset-manifest.json index 389f4c1..d59ebd5 100644 --- a/chatbot_ui/build/asset-manifest.json +++ b/chatbot_ui/build/asset-manifest.json @@ -1,16 +1,16 @@ { "files": { "main.css": "/static/css/main.da89d019.css", - "main.js": "/static/js/main.05320a56.js", + "main.js": "/static/js/main.0a989e88.js", "static/js/488.5c64e536.chunk.js": "/static/js/488.5c64e536.chunk.js", "service-worker.js": "/service-worker.js", "index.html": "/index.html", "main.da89d019.css.map": "/static/css/main.da89d019.css.map", - "main.05320a56.js.map": "/static/js/main.05320a56.js.map", + "main.0a989e88.js.map": "/static/js/main.0a989e88.js.map", "488.5c64e536.chunk.js.map": "/static/js/488.5c64e536.chunk.js.map" }, "entrypoints": [ "static/css/main.da89d019.css", - "static/js/main.05320a56.js" + "static/js/main.0a989e88.js" ] } \ No newline at end of file diff --git a/chatbot_ui/build/index.html b/chatbot_ui/build/index.html index e34bc45..55703e8 100644 --- a/chatbot_ui/build/index.html +++ b/chatbot_ui/build/index.html @@ -1 +1 @@ -REDCap Chat GPT Powered Support Chatbot
\ No newline at end of file +REDCap Chat GPT Powered Support Chatbot
\ No newline at end of file diff --git a/chatbot_ui/build/service-worker.js b/chatbot_ui/build/service-worker.js index c87554a..764bc44 100644 --- a/chatbot_ui/build/service-worker.js +++ b/chatbot_ui/build/service-worker.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e={295:()=>{try{self["workbox:core:7.0.0"]&&_()}catch(e){}},229:()=>{try{self["workbox:expiration:7.0.0"]&&_()}catch(e){}},740:()=>{try{self["workbox:precaching:7.0.0"]&&_()}catch(e){}},130:()=>{try{self["workbox:routing:7.0.0"]&&_()}catch(e){}},205:()=>{try{self["workbox:strategies:7.0.0"]&&_()}catch(e){}}},t={};function s(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,s),r.exports}(()=>{s(295);const e=function(e){let t=e;for(var s=arguments.length,n=new Array(s>1?s-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(n))),t};class t extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}const n=new Set;const a={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},r=e=>[a.prefix,e,a.suffix].filter((e=>e&&e.length>0)).join("-"),i=e=>e||r(a.precache),o=e=>e||r(a.runtime);function c(e,t){const s=new URL(e);for(const n of t)s.searchParams.delete(n);return s.href}let h;function l(e){e.then((()=>{}))}class u{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const d=e=>new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"");function f(e){return new Promise((t=>setTimeout(t,e)))}function p(e,t){const s=t();return e.waitUntil(s),s}async function g(e,s){let n=null;if(e.url){n=new URL(e.url).origin}if(n!==self.location.origin)throw new t("cross-origin-copy-response",{origin:n});const a=e.clone(),r={headers:new Headers(a.headers),status:a.status,statusText:a.statusText},i=s?s(r):r,o=function(){if(void 0===h){const t=new Response("");if("body"in t)try{new Response(t.body),h=!0}catch(e){h=!1}h=!1}return h}()?a.body:await a.blob();return new Response(o,i)}const w=(e,t)=>t.some((t=>e instanceof t));let m,y;const _=new WeakMap,v=new WeakMap,b=new WeakMap,R=new WeakMap,x=new WeakMap;let C={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return v.get(e);if("objectStoreNames"===t)return e.objectStoreNames||b.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return q(e[t])},set:(e,t,s)=>(e[t]=s,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function L(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(y||(y=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(){for(var t=arguments.length,s=new Array(t),n=0;n1?s-1:0),a=1;a{const n=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",r),e.removeEventListener("abort",r)},a=()=>{t(),n()},r=()=>{s(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",a),e.addEventListener("error",r),e.addEventListener("abort",r)}));v.set(e,t)}(e),w(e,m||(m=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,C):e)}function q(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,s)=>{const n=()=>{e.removeEventListener("success",a),e.removeEventListener("error",r)},a=()=>{t(q(e.result)),n()},r=()=>{s(e.error),n()};e.addEventListener("success",a),e.addEventListener("error",r)}));return t.then((t=>{t instanceof IDBCursor&&_.set(t,e)})).catch((()=>{})),x.set(t,e),t}(e);if(R.has(e))return R.get(e);const t=E(e);return t!==e&&(R.set(e,t),x.set(t,e)),t}const D=e=>x.get(e);const U=["get","getKey","getAll","getAllKeys","count"],T=["put","add","delete","clear"],k=new Map;function N(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!==typeof t)return;if(k.get(t))return k.get(t);const s=t.replace(/FromIndex$/,""),n=t!==s,a=T.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!a&&!U.includes(s))return;const r=async function(e){const t=this.transaction(e,a?"readwrite":"readonly");let r=t.store;for(var i=arguments.length,o=new Array(i>1?i-1:0),c=1;c({...e,get:(t,s,n)=>N(t,s)||e.get(t,s,n),has:(t,s)=>!!N(t,s)||e.has(t,s)}))(C);s(229);const I="cache-entries",K=e=>{const t=new URL(e,location.href);return t.hash="",t.href};class M{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(I,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&function(e){let{blocked:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=indexedDB.deleteDatabase(e);t&&s.addEventListener("blocked",(e=>t(e.oldVersion,e))),q(s).then((()=>{}))}(this._cacheName)}async setTimestamp(e,t){const s={url:e=K(e),timestamp:t,cacheName:this._cacheName,id:this._getId(e)},n=(await this.getDb()).transaction(I,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(e){const t=await this.getDb(),s=await t.get(I,this._getId(e));return null===s||void 0===s?void 0:s.timestamp}async expireEntries(e,t){const s=await this.getDb();let n=await s.transaction(I).store.index("timestamp").openCursor(null,"prev");const a=[];let r=0;for(;n;){const s=n.value;s.cacheName===this._cacheName&&(e&&s.timestamp=t?a.push(n.value):r++),n=await n.continue()}const i=[];for(const o of a)await s.delete(I,o.id),i.push(o.url);return i}_getId(e){return this._cacheName+"|"+K(e)}async getDb(){return this._db||(this._db=await function(e,t){let{blocked:s,upgrade:n,blocking:a,terminated:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=indexedDB.open(e,t),o=q(i);return n&&i.addEventListener("upgradeneeded",(e=>{n(q(i.result),e.oldVersion,e.newVersion,q(i.transaction),e)})),s&&i.addEventListener("blocked",(e=>s(e.oldVersion,e.newVersion,e))),o.then((e=>{r&&e.addEventListener("close",(()=>r())),a&&e.addEventListener("versionchange",(e=>a(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),o}("workbox-expiration",1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class A{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new M(e)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),s=await self.caches.open(this._cacheName);for(const n of t)await s.delete(n,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,l(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-1e3*this._maxAgeSeconds;return void 0===t||t{let{request:t,state:s}=e;s&&(s.originalRequest=t)},this.cachedResponseWillBeUsed=async e=>{let{event:t,state:s,cachedResponse:n}=e;if("install"===t.type&&s&&s.originalRequest&&s.originalRequest instanceof Request){const e=s.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}}class O{constructor(e){let{precacheController:t}=e;this.cacheKeyWillBeUsed=async e=>{let{request:t,params:s}=e;const n=(null===s||void 0===s?void 0:s.cacheKey)||this._precacheController.getCacheKeyForURL(t.url);return n?new Request(n,{headers:t.headers}):t},this._precacheController=t}}s(205);function W(e){return"string"===typeof e?new Request(e):e}class B{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new u,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const s of this._plugins)this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:s}=this;let n=W(e);if("navigate"===n.mode&&s instanceof FetchEvent&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}const a=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const e of this.iterateCallbacks("requestWillFetch"))n=await e({request:n.clone(),event:s})}catch(i){if(i instanceof Error)throw new t("plugin-error-request-will-fetch",{thrownErrorMessage:i.message})}const r=n.clone();try{let e;e=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const t of this.iterateCallbacks("fetchDidSucceed"))e=await t({event:s,request:r,response:e});return e}catch(o){throw a&&await this.runCallbacks("fetchDidFail",{error:o,event:s,originalRequest:a.clone(),request:r.clone()}),o}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=W(e);let s;const{cacheName:n,matchOptions:a}=this._strategy,r=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},a),{cacheName:n});s=await caches.match(r,i);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await o({cacheName:n,matchOptions:a,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(e,s){const a=W(e);await f(0);const r=await this.getCacheKey(a,"write");if(!s)throw new t("cache-put-with-no-response",{url:d(r.url)});const i=await this._ensureResponseSafeToCache(s);if(!i)return!1;const{cacheName:o,matchOptions:h}=this._strategy,l=await self.caches.open(o),u=this.hasCallback("cacheDidUpdate"),p=u?await async function(e,t,s,n){const a=c(t.url,s);if(t.url===a)return e.match(t,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),i=await e.keys(t,r);for(const o of i)if(a===c(o.url,s))return e.match(o,n)}(l,r.clone(),["__WB_REVISION__"],h):null;try{await l.put(r,u?i.clone():i)}catch(g){if(g instanceof Error)throw"QuotaExceededError"===g.name&&await async function(){for(const e of n)await e()}(),g}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:o,oldResponse:p,newResponse:i.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){const s="".concat(e.url," | ").concat(t);if(!this._cacheKeys[s]){let n=e;for(const e of this.iterateCallbacks("cacheKeyWillBeUsed"))n=W(await e({mode:t,request:n,event:this.event,params:this.params}));this._cacheKeys[s]=n}return this._cacheKeys[s]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if("function"===typeof t[e]){const s=this._pluginStateMap.get(t),n=n=>{const a=Object.assign(Object.assign({},n),{state:s});return t[e](a)};yield n}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const n of this.iterateCallbacks("cacheWillUpdate"))if(t=await n({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&200!==t.status&&(t=void 0),t}}class j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cacheName=o(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s="string"===typeof e.request?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new B(this,{event:t,request:s,params:n}),r=this._getResponse(a,s,t);return[r,this._awaitComplete(r,a,s,t)]}async _getResponse(e,s,n){let a;await e.runCallbacks("handlerWillStart",{event:n,request:s});try{if(a=await this._handle(s,e),!a||"error"===a.type)throw new t("no-response",{url:s.url})}catch(r){if(r instanceof Error)for(const t of e.iterateCallbacks("handlerDidError"))if(a=await t({error:r,event:n,request:s}),a)break;if(!a)throw r}for(const t of e.iterateCallbacks("handlerWillRespond"))a=await t({event:n,request:s,response:a});return a}async _awaitComplete(e,t,s,n){let a,r;try{a=await e}catch(r){}try{await t.runCallbacks("handlerDidRespond",{event:n,request:s,response:a}),await t.doneWaiting()}catch(i){i instanceof Error&&(r=i)}if(await t.runCallbacks("handlerDidComplete",{event:n,request:s,response:a,error:r}),t.destroy(),r)throw r}}class F extends j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.cacheName=i(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(F.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,s){let n;const a=s.params||{};if(!this._fallbackToNetwork)throw new t("missing-precache-entry",{cacheName:this.cacheName,url:e.url});{0;const t=a.integrity,r=e.integrity,i=!r||r===t;if(n=await s.fetch(new Request(e,{integrity:"no-cors"!==e.mode?r||t:void 0})),t&&i&&"no-cors"!==e.mode){this._useDefaultCacheabilityPluginIfNeeded();await s.cachePut(e,n.clone());0}}return n}async _handleInstall(e,s){this._useDefaultCacheabilityPluginIfNeeded();const n=await s.fetch(e);if(!await s.cachePut(e,n.clone()))throw new t("bad-precaching-response",{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,n]of this.plugins.entries())n!==F.copyRedirectedCacheableResponsesPlugin&&(n===F.defaultPrecacheCacheabilityPlugin&&(e=s),n.cacheWillUpdate&&t++);0===t?this.plugins.push(F.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}F.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate(e){let{response:t}=e;return!t||t.status>=400?null:t}},F.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate(e){let{response:t}=e;return t.redirected?await g(t):t}};class H{constructor(){let{cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new F({cacheName:i(e),plugins:[...t,new O({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const s=[];for(const n of e){"string"===typeof n?s.push(n):n&&void 0===n.revision&&s.push(n.url);const{cacheKey:e,url:a}=P(n),r="string"!==typeof n&&n.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new t("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!==typeof n&&n.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==n.integrity)throw new t("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,n.integrity)}if(this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),s.length>0){const e="Workbox is precaching URLs without revision "+"info: ".concat(s.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(e)}}}install(e){return p(e,(async()=>{const t=new S;this.strategy.plugins.push(t);for(const[a,r]of this._urlsToCacheKeys){const t=this._cacheKeysToIntegrities.get(r),s=this._urlsToCacheModes.get(a),n=new Request(a,{integrity:t,cache:s,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:r},request:n,event:e}))}const{updatedURLs:s,notUpdatedURLs:n}=t;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(e){return p(e,(async()=>{const e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),n=[];for(const a of t)s.has(a.url)||(await e.delete(a),n.push(a.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(e){const s=this.getCacheKeyForURL(e);if(!s)throw new t("non-precached-url",{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:s},t.params),this.strategy.handle(t))}}let V;const G=()=>(V||(V=new H),V);s(130);const $=e=>e&&"object"===typeof e?e:{handle:e};class Q{constructor(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";this.handler=$(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=$(e)}}class J extends Q{constructor(e,t,s){super((t=>{let{url:s}=t;const n=e.exec(s.href);if(n&&(s.origin===location.origin||0===n.index))return n.slice(1)}),t,s)}}class z{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(e=>{if(e.data&&"CACHE_URLS"===e.data.type){const{payload:t}=e.data;0;const s=Promise.all(t.urlsToCache.map((t=>{"string"===typeof t&&(t=[t]);const s=new Request(...t);return this.handleRequest({request:s,event:e})})));e.waitUntil(s),e.ports&&e.ports[0]&&s.then((()=>e.ports[0].postMessage(!0)))}}))}handleRequest(e){let{request:t,event:s}=e;const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const a=n.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:s,request:t,sameOrigin:a,url:n});let o=i&&i.handler;const c=t.method;if(!o&&this._defaultHandlerMap.has(c)&&(o=this._defaultHandlerMap.get(c)),!o)return void 0;let h;try{h=o.handle({url:n,request:t,event:s,params:r})}catch(u){h=Promise.reject(u)}const l=i&&i.catchHandler;return h instanceof Promise&&(this._catchHandler||l)&&(h=h.catch((async e=>{if(l){0;try{return await l.handle({url:n,request:t,event:s,params:r})}catch(a){a instanceof Error&&(e=a)}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:s});throw e}))),h}findMatchingRoute(e){let{url:t,sameOrigin:s,request:n,event:a}=e;const r=this._routes.get(n.method)||[];for(const i of r){let e;const r=i.match({url:t,sameOrigin:s,request:n,event:a});if(r)return e=r,(Array.isArray(e)&&0===e.length||r.constructor===Object&&0===Object.keys(r).length||"boolean"===typeof r)&&(e=void 0),{route:i,params:e}}return{}}setDefaultHandler(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET";this._defaultHandlerMap.set(t,$(e))}setCatchHandler(e){this._catchHandler=$(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t("unregister-route-but-not-found-with-method",{method:e.method});const s=this._routes.get(e.method).indexOf(e);if(!(s>-1))throw new t("unregister-route-route-not-registered");this._routes.get(e.method).splice(s,1)}}let X;const Y=()=>(X||(X=new z,X.addFetchListener(),X.addCacheListener()),X);function Z(e,s,n){let a;if("string"===typeof e){const t=new URL(e,location.href);0;a=new Q((e=>{let{url:s}=e;return s.href===t.href}),s,n)}else if(e instanceof RegExp)a=new J(e,s,n);else if("function"===typeof e)a=new Q(e,s,n);else{if(!(e instanceof Q))throw new t("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=e}return Y().registerRoute(a),a}class ee extends Q{constructor(e,t){super((s=>{let{request:n}=s;const a=e.getURLsToCacheKeys();for(const r of function(e){let{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:a}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){const r=new URL(e,location.href);r.hash="",yield r.href;const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];for(const s of[...e.searchParams.keys()])t.some((e=>e.test(s)))&&e.searchParams.delete(s);return e}(r,t);if(yield i.href,s&&i.pathname.endsWith("/")){const e=new URL(i.href);e.pathname+=s,yield e.href}if(n){const e=new URL(i.href);e.pathname+=".html",yield e.href}if(a){const e=a({url:r});for(const t of e)yield t.href}}()}(n.url,t)){const t=a.get(r);if(t){return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}}}),e.strategy)}}const te={cacheWillUpdate:async e=>{let{response:t}=e;return 200===t.status||0===t.status?t:null}};var se;self.addEventListener("activate",(()=>self.clients.claim())),function(e){G().precache(e)}([{'revision':'b91e2609eb692cb53a7d1dc07f4098b5','url':'/index.html'},{'revision':null,'url':'/static/css/main.da89d019.css'},{'revision':null,'url':'/static/js/488.5c64e536.chunk.js'},{'revision':null,'url':'/static/js/main.05320a56.js'}]),function(e){const t=G();Z(new ee(t,e))}(se);const ne=new RegExp("/[^/?]+\\.[^/]+$");var ae;Z((e=>{let{request:t,url:s}=e;return"navigate"===t.mode&&(!s.pathname.startsWith("/_")&&!s.pathname.match(ne))}),(ae="/index.html",G().createHandlerBoundToURL(ae))),Z((e=>{let{url:t}=e;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new class extends j{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),this.plugins.some((e=>"cacheWillUpdate"in e))||this.plugins.unshift(te)}async _handle(e,s){const n=s.fetchAndCachePut(e).catch((()=>{}));s.waitUntil(n);let a,r=await s.cacheMatch(e);if(r)0;else{0;try{r=await n}catch(i){i instanceof Error&&(a=i)}}if(!r)throw new t("no-response",{url:e.url,error:a});return r}}({cacheName:"images",plugins:[new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cachedResponseWillBeUsed=async e=>{let{event:t,request:s,cacheName:n,cachedResponse:a}=e;if(!a)return null;const r=this._isResponseDateFresh(a),i=this._getCacheExpiration(n);l(i.expireEntries());const o=i.updateTimestamp(s.url);if(t)try{t.waitUntil(o)}catch(c){0}return r?a:null},this.cacheDidUpdate=async e=>{let{cacheName:t,request:s}=e;const n=this._getCacheExpiration(t);await n.updateTimestamp(s.url),await n.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&function(e){n.add(e)}((()=>this.deleteCacheAndMetadata()))}_getCacheExpiration(e){if(e===o())throw new t("expire-custom-caches-only");let s=this._cacheExpirations.get(e);return s||(s=new A(e,this._config),this._cacheExpirations.set(e,s)),s}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(null===t)return!0;return t>=Date.now()-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),s=new Date(t).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}({maxEntries:50})]})),self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))})()})(); +(()=>{"use strict";var e={295:()=>{try{self["workbox:core:7.0.0"]&&_()}catch(e){}},229:()=>{try{self["workbox:expiration:7.0.0"]&&_()}catch(e){}},740:()=>{try{self["workbox:precaching:7.0.0"]&&_()}catch(e){}},130:()=>{try{self["workbox:routing:7.0.0"]&&_()}catch(e){}},205:()=>{try{self["workbox:strategies:7.0.0"]&&_()}catch(e){}}},t={};function s(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,s),r.exports}(()=>{s(295);const e=function(e){let t=e;for(var s=arguments.length,n=new Array(s>1?s-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(n))),t};class t extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}const n=new Set;const a={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},r=e=>[a.prefix,e,a.suffix].filter((e=>e&&e.length>0)).join("-"),i=e=>e||r(a.precache),o=e=>e||r(a.runtime);function c(e,t){const s=new URL(e);for(const n of t)s.searchParams.delete(n);return s.href}let h;function l(e){e.then((()=>{}))}class u{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const d=e=>new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"");function f(e){return new Promise((t=>setTimeout(t,e)))}function p(e,t){const s=t();return e.waitUntil(s),s}async function g(e,s){let n=null;if(e.url){n=new URL(e.url).origin}if(n!==self.location.origin)throw new t("cross-origin-copy-response",{origin:n});const a=e.clone(),r={headers:new Headers(a.headers),status:a.status,statusText:a.statusText},i=s?s(r):r,o=function(){if(void 0===h){const t=new Response("");if("body"in t)try{new Response(t.body),h=!0}catch(e){h=!1}h=!1}return h}()?a.body:await a.blob();return new Response(o,i)}const w=(e,t)=>t.some((t=>e instanceof t));let m,y;const _=new WeakMap,v=new WeakMap,b=new WeakMap,R=new WeakMap,x=new WeakMap;let C={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return v.get(e);if("objectStoreNames"===t)return e.objectStoreNames||b.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return q(e[t])},set:(e,t,s)=>(e[t]=s,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function L(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(y||(y=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(){for(var t=arguments.length,s=new Array(t),n=0;n1?s-1:0),a=1;a{const n=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",r),e.removeEventListener("abort",r)},a=()=>{t(),n()},r=()=>{s(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",a),e.addEventListener("error",r),e.addEventListener("abort",r)}));v.set(e,t)}(e),w(e,m||(m=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,C):e)}function q(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,s)=>{const n=()=>{e.removeEventListener("success",a),e.removeEventListener("error",r)},a=()=>{t(q(e.result)),n()},r=()=>{s(e.error),n()};e.addEventListener("success",a),e.addEventListener("error",r)}));return t.then((t=>{t instanceof IDBCursor&&_.set(t,e)})).catch((()=>{})),x.set(t,e),t}(e);if(R.has(e))return R.get(e);const t=E(e);return t!==e&&(R.set(e,t),x.set(t,e)),t}const D=e=>x.get(e);const U=["get","getKey","getAll","getAllKeys","count"],T=["put","add","delete","clear"],k=new Map;function N(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!==typeof t)return;if(k.get(t))return k.get(t);const s=t.replace(/FromIndex$/,""),n=t!==s,a=T.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!a&&!U.includes(s))return;const r=async function(e){const t=this.transaction(e,a?"readwrite":"readonly");let r=t.store;for(var i=arguments.length,o=new Array(i>1?i-1:0),c=1;c({...e,get:(t,s,n)=>N(t,s)||e.get(t,s,n),has:(t,s)=>!!N(t,s)||e.has(t,s)}))(C);s(229);const I="cache-entries",K=e=>{const t=new URL(e,location.href);return t.hash="",t.href};class M{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(I,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&function(e){let{blocked:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=indexedDB.deleteDatabase(e);t&&s.addEventListener("blocked",(e=>t(e.oldVersion,e))),q(s).then((()=>{}))}(this._cacheName)}async setTimestamp(e,t){const s={url:e=K(e),timestamp:t,cacheName:this._cacheName,id:this._getId(e)},n=(await this.getDb()).transaction(I,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(e){const t=await this.getDb(),s=await t.get(I,this._getId(e));return null===s||void 0===s?void 0:s.timestamp}async expireEntries(e,t){const s=await this.getDb();let n=await s.transaction(I).store.index("timestamp").openCursor(null,"prev");const a=[];let r=0;for(;n;){const s=n.value;s.cacheName===this._cacheName&&(e&&s.timestamp=t?a.push(n.value):r++),n=await n.continue()}const i=[];for(const o of a)await s.delete(I,o.id),i.push(o.url);return i}_getId(e){return this._cacheName+"|"+K(e)}async getDb(){return this._db||(this._db=await function(e,t){let{blocked:s,upgrade:n,blocking:a,terminated:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=indexedDB.open(e,t),o=q(i);return n&&i.addEventListener("upgradeneeded",(e=>{n(q(i.result),e.oldVersion,e.newVersion,q(i.transaction),e)})),s&&i.addEventListener("blocked",(e=>s(e.oldVersion,e.newVersion,e))),o.then((e=>{r&&e.addEventListener("close",(()=>r())),a&&e.addEventListener("versionchange",(e=>a(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),o}("workbox-expiration",1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class A{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new M(e)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),s=await self.caches.open(this._cacheName);for(const n of t)await s.delete(n,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,l(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-1e3*this._maxAgeSeconds;return void 0===t||t{let{request:t,state:s}=e;s&&(s.originalRequest=t)},this.cachedResponseWillBeUsed=async e=>{let{event:t,state:s,cachedResponse:n}=e;if("install"===t.type&&s&&s.originalRequest&&s.originalRequest instanceof Request){const e=s.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}}class O{constructor(e){let{precacheController:t}=e;this.cacheKeyWillBeUsed=async e=>{let{request:t,params:s}=e;const n=(null===s||void 0===s?void 0:s.cacheKey)||this._precacheController.getCacheKeyForURL(t.url);return n?new Request(n,{headers:t.headers}):t},this._precacheController=t}}s(205);function W(e){return"string"===typeof e?new Request(e):e}class B{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new u,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const s of this._plugins)this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:s}=this;let n=W(e);if("navigate"===n.mode&&s instanceof FetchEvent&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}const a=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const e of this.iterateCallbacks("requestWillFetch"))n=await e({request:n.clone(),event:s})}catch(i){if(i instanceof Error)throw new t("plugin-error-request-will-fetch",{thrownErrorMessage:i.message})}const r=n.clone();try{let e;e=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const t of this.iterateCallbacks("fetchDidSucceed"))e=await t({event:s,request:r,response:e});return e}catch(o){throw a&&await this.runCallbacks("fetchDidFail",{error:o,event:s,originalRequest:a.clone(),request:r.clone()}),o}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=W(e);let s;const{cacheName:n,matchOptions:a}=this._strategy,r=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},a),{cacheName:n});s=await caches.match(r,i);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await o({cacheName:n,matchOptions:a,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(e,s){const a=W(e);await f(0);const r=await this.getCacheKey(a,"write");if(!s)throw new t("cache-put-with-no-response",{url:d(r.url)});const i=await this._ensureResponseSafeToCache(s);if(!i)return!1;const{cacheName:o,matchOptions:h}=this._strategy,l=await self.caches.open(o),u=this.hasCallback("cacheDidUpdate"),p=u?await async function(e,t,s,n){const a=c(t.url,s);if(t.url===a)return e.match(t,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),i=await e.keys(t,r);for(const o of i)if(a===c(o.url,s))return e.match(o,n)}(l,r.clone(),["__WB_REVISION__"],h):null;try{await l.put(r,u?i.clone():i)}catch(g){if(g instanceof Error)throw"QuotaExceededError"===g.name&&await async function(){for(const e of n)await e()}(),g}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:o,oldResponse:p,newResponse:i.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){const s="".concat(e.url," | ").concat(t);if(!this._cacheKeys[s]){let n=e;for(const e of this.iterateCallbacks("cacheKeyWillBeUsed"))n=W(await e({mode:t,request:n,event:this.event,params:this.params}));this._cacheKeys[s]=n}return this._cacheKeys[s]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if("function"===typeof t[e]){const s=this._pluginStateMap.get(t),n=n=>{const a=Object.assign(Object.assign({},n),{state:s});return t[e](a)};yield n}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const n of this.iterateCallbacks("cacheWillUpdate"))if(t=await n({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&200!==t.status&&(t=void 0),t}}class j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cacheName=o(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s="string"===typeof e.request?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new B(this,{event:t,request:s,params:n}),r=this._getResponse(a,s,t);return[r,this._awaitComplete(r,a,s,t)]}async _getResponse(e,s,n){let a;await e.runCallbacks("handlerWillStart",{event:n,request:s});try{if(a=await this._handle(s,e),!a||"error"===a.type)throw new t("no-response",{url:s.url})}catch(r){if(r instanceof Error)for(const t of e.iterateCallbacks("handlerDidError"))if(a=await t({error:r,event:n,request:s}),a)break;if(!a)throw r}for(const t of e.iterateCallbacks("handlerWillRespond"))a=await t({event:n,request:s,response:a});return a}async _awaitComplete(e,t,s,n){let a,r;try{a=await e}catch(r){}try{await t.runCallbacks("handlerDidRespond",{event:n,request:s,response:a}),await t.doneWaiting()}catch(i){i instanceof Error&&(r=i)}if(await t.runCallbacks("handlerDidComplete",{event:n,request:s,response:a,error:r}),t.destroy(),r)throw r}}class F extends j{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.cacheName=i(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(F.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,s){let n;const a=s.params||{};if(!this._fallbackToNetwork)throw new t("missing-precache-entry",{cacheName:this.cacheName,url:e.url});{0;const t=a.integrity,r=e.integrity,i=!r||r===t;if(n=await s.fetch(new Request(e,{integrity:"no-cors"!==e.mode?r||t:void 0})),t&&i&&"no-cors"!==e.mode){this._useDefaultCacheabilityPluginIfNeeded();await s.cachePut(e,n.clone());0}}return n}async _handleInstall(e,s){this._useDefaultCacheabilityPluginIfNeeded();const n=await s.fetch(e);if(!await s.cachePut(e,n.clone()))throw new t("bad-precaching-response",{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,n]of this.plugins.entries())n!==F.copyRedirectedCacheableResponsesPlugin&&(n===F.defaultPrecacheCacheabilityPlugin&&(e=s),n.cacheWillUpdate&&t++);0===t?this.plugins.push(F.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}F.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate(e){let{response:t}=e;return!t||t.status>=400?null:t}},F.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate(e){let{response:t}=e;return t.redirected?await g(t):t}};class H{constructor(){let{cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new F({cacheName:i(e),plugins:[...t,new O({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const s=[];for(const n of e){"string"===typeof n?s.push(n):n&&void 0===n.revision&&s.push(n.url);const{cacheKey:e,url:a}=P(n),r="string"!==typeof n&&n.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new t("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!==typeof n&&n.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==n.integrity)throw new t("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,n.integrity)}if(this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),s.length>0){const e="Workbox is precaching URLs without revision "+"info: ".concat(s.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(e)}}}install(e){return p(e,(async()=>{const t=new S;this.strategy.plugins.push(t);for(const[a,r]of this._urlsToCacheKeys){const t=this._cacheKeysToIntegrities.get(r),s=this._urlsToCacheModes.get(a),n=new Request(a,{integrity:t,cache:s,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:r},request:n,event:e}))}const{updatedURLs:s,notUpdatedURLs:n}=t;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(e){return p(e,(async()=>{const e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),n=[];for(const a of t)s.has(a.url)||(await e.delete(a),n.push(a.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(e){const s=this.getCacheKeyForURL(e);if(!s)throw new t("non-precached-url",{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:s},t.params),this.strategy.handle(t))}}let V;const G=()=>(V||(V=new H),V);s(130);const $=e=>e&&"object"===typeof e?e:{handle:e};class Q{constructor(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";this.handler=$(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=$(e)}}class J extends Q{constructor(e,t,s){super((t=>{let{url:s}=t;const n=e.exec(s.href);if(n&&(s.origin===location.origin||0===n.index))return n.slice(1)}),t,s)}}class z{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(e=>{if(e.data&&"CACHE_URLS"===e.data.type){const{payload:t}=e.data;0;const s=Promise.all(t.urlsToCache.map((t=>{"string"===typeof t&&(t=[t]);const s=new Request(...t);return this.handleRequest({request:s,event:e})})));e.waitUntil(s),e.ports&&e.ports[0]&&s.then((()=>e.ports[0].postMessage(!0)))}}))}handleRequest(e){let{request:t,event:s}=e;const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const a=n.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:s,request:t,sameOrigin:a,url:n});let o=i&&i.handler;const c=t.method;if(!o&&this._defaultHandlerMap.has(c)&&(o=this._defaultHandlerMap.get(c)),!o)return void 0;let h;try{h=o.handle({url:n,request:t,event:s,params:r})}catch(u){h=Promise.reject(u)}const l=i&&i.catchHandler;return h instanceof Promise&&(this._catchHandler||l)&&(h=h.catch((async e=>{if(l){0;try{return await l.handle({url:n,request:t,event:s,params:r})}catch(a){a instanceof Error&&(e=a)}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:s});throw e}))),h}findMatchingRoute(e){let{url:t,sameOrigin:s,request:n,event:a}=e;const r=this._routes.get(n.method)||[];for(const i of r){let e;const r=i.match({url:t,sameOrigin:s,request:n,event:a});if(r)return e=r,(Array.isArray(e)&&0===e.length||r.constructor===Object&&0===Object.keys(r).length||"boolean"===typeof r)&&(e=void 0),{route:i,params:e}}return{}}setDefaultHandler(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET";this._defaultHandlerMap.set(t,$(e))}setCatchHandler(e){this._catchHandler=$(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t("unregister-route-but-not-found-with-method",{method:e.method});const s=this._routes.get(e.method).indexOf(e);if(!(s>-1))throw new t("unregister-route-route-not-registered");this._routes.get(e.method).splice(s,1)}}let X;const Y=()=>(X||(X=new z,X.addFetchListener(),X.addCacheListener()),X);function Z(e,s,n){let a;if("string"===typeof e){const t=new URL(e,location.href);0;a=new Q((e=>{let{url:s}=e;return s.href===t.href}),s,n)}else if(e instanceof RegExp)a=new J(e,s,n);else if("function"===typeof e)a=new Q(e,s,n);else{if(!(e instanceof Q))throw new t("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=e}return Y().registerRoute(a),a}class ee extends Q{constructor(e,t){super((s=>{let{request:n}=s;const a=e.getURLsToCacheKeys();for(const r of function(e){let{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:a}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){const r=new URL(e,location.href);r.hash="",yield r.href;const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];for(const s of[...e.searchParams.keys()])t.some((e=>e.test(s)))&&e.searchParams.delete(s);return e}(r,t);if(yield i.href,s&&i.pathname.endsWith("/")){const e=new URL(i.href);e.pathname+=s,yield e.href}if(n){const e=new URL(i.href);e.pathname+=".html",yield e.href}if(a){const e=a({url:r});for(const t of e)yield t.href}}()}(n.url,t)){const t=a.get(r);if(t){return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}}}),e.strategy)}}const te={cacheWillUpdate:async e=>{let{response:t}=e;return 200===t.status||0===t.status?t:null}};var se;self.addEventListener("activate",(()=>self.clients.claim())),function(e){G().precache(e)}([{'revision':'56bbbf29beaffd9e80e20f13d190bc08','url':'/index.html'},{'revision':null,'url':'/static/css/main.da89d019.css'},{'revision':null,'url':'/static/js/488.5c64e536.chunk.js'},{'revision':null,'url':'/static/js/main.0a989e88.js'}]),function(e){const t=G();Z(new ee(t,e))}(se);const ne=new RegExp("/[^/?]+\\.[^/]+$");var ae;Z((e=>{let{request:t,url:s}=e;return"navigate"===t.mode&&(!s.pathname.startsWith("/_")&&!s.pathname.match(ne))}),(ae="/index.html",G().createHandlerBoundToURL(ae))),Z((e=>{let{url:t}=e;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new class extends j{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),this.plugins.some((e=>"cacheWillUpdate"in e))||this.plugins.unshift(te)}async _handle(e,s){const n=s.fetchAndCachePut(e).catch((()=>{}));s.waitUntil(n);let a,r=await s.cacheMatch(e);if(r)0;else{0;try{r=await n}catch(i){i instanceof Error&&(a=i)}}if(!r)throw new t("no-response",{url:e.url,error:a});return r}}({cacheName:"images",plugins:[new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.cachedResponseWillBeUsed=async e=>{let{event:t,request:s,cacheName:n,cachedResponse:a}=e;if(!a)return null;const r=this._isResponseDateFresh(a),i=this._getCacheExpiration(n);l(i.expireEntries());const o=i.updateTimestamp(s.url);if(t)try{t.waitUntil(o)}catch(c){0}return r?a:null},this.cacheDidUpdate=async e=>{let{cacheName:t,request:s}=e;const n=this._getCacheExpiration(t);await n.updateTimestamp(s.url),await n.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&function(e){n.add(e)}((()=>this.deleteCacheAndMetadata()))}_getCacheExpiration(e){if(e===o())throw new t("expire-custom-caches-only");let s=this._cacheExpirations.get(e);return s||(s=new A(e,this._config),this._cacheExpirations.set(e,s)),s}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(null===t)return!0;return t>=Date.now()-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),s=new Date(t).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}({maxEntries:50})]})),self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))})()})(); //# sourceMappingURL=service-worker.js.map \ No newline at end of file diff --git a/chatbot_ui/build/static/js/main.05320a56.js.map b/chatbot_ui/build/static/js/main.05320a56.js.map deleted file mode 100644 index 6f03280..0000000 --- a/chatbot_ui/build/static/js/main.05320a56.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.05320a56.js","mappings":"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","sources":["../node_modules/dexie/dist/dexie.js","../node_modules/extend/index.js","../node_modules/inline-style-parser/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-confirm-alert/lib/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/src/index.ts","../node_modules/warning/warning.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/dexie/import-wrapper-prod.mjs","components/database/dexie.js","contexts/Chat.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/react-bootstrap-icons/dist/icons/archive.js","../node_modules/react-bootstrap-icons/dist/icons/chat-dots.js","components/header/header.js","../node_modules/react-bootstrap-icons/dist/icons/eraser-fill.js","../node_modules/react-bootstrap-icons/dist/icons/send.js","../node_modules/react-bootstrap-icons/dist/icons/arrow-clockwise.js","components/footer/footer.js","views/Splash/index.js","views/Splash/splash.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@restart/ui/esm/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/useRootClose.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/@restart/ui/esm/useRTGTransitionProps.js","../node_modules/@restart/ui/esm/RTGTransition.js","../node_modules/@restart/ui/esm/ImperativeTransition.js","../node_modules/@restart/ui/esm/Overlay.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-bootstrap/esm/PopoverHeader.js","../node_modules/react-bootstrap/esm/PopoverBody.js","../node_modules/react-bootstrap/esm/helpers.js","../node_modules/react-bootstrap/esm/getInitialPopperStyles.js","../node_modules/react-bootstrap/esm/Popover.js","../node_modules/react-bootstrap/esm/Tooltip.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/useOverlayOffset.js","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/esm/index.mjs","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/remark-parse/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","../node_modules/react-bootstrap-icons/dist/icons/x-circle-fill.js","../node_modules/react-bootstrap-icons/dist/icons/hand-thumbs-up-fill.js","../node_modules/react-bootstrap-icons/dist/icons/hand-thumbs-up.js","../node_modules/react-bootstrap-icons/dist/icons/hand-thumbs-down-fill.js","../node_modules/react-bootstrap-icons/dist/icons/hand-thumbs-down.js","components/messages/messages.js","views/Home/index.js","views/Home/home.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap-icons/dist/icons/trash.js","components/utils/utils.js","views/History/index.js","views/History/history.js","App.js","serviceWorkerRegistration.js","reportWebVitals.js","index.js"],"sourcesContent":["/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 4.0.7, Sun May 26 2024\n *\n * https://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\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.Dexie = factory());\n})(this, (function () { 'use strict';\n\n /*! *****************************************************************************\n Copyright (c) Microsoft Corporation.\n Permission to use, copy, modify, and/or distribute this software for any\n purpose with or without fee is hereby granted.\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n PERFORMANCE OF THIS SOFTWARE.\n ***************************************************************************** */\n var extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\n function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n }\n\n var _global = typeof globalThis !== 'undefined' ? globalThis :\n typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\n\n var keys = Object.keys;\n var isArray = Array.isArray;\n if (typeof Promise !== 'undefined' && !_global.Promise) {\n _global.Promise = Promise;\n }\n function extend(obj, extension) {\n if (typeof extension !== 'object')\n return obj;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj;\n }\n var getProto = Object.getPrototypeOf;\n var _hasOwn = {}.hasOwnProperty;\n function hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n }\n function props(proto, extension) {\n if (typeof extension === 'function')\n extension = extension(getProto(proto));\n (typeof Reflect === \"undefined\" ? keys : Reflect.ownKeys)(extension).forEach(function (key) {\n setProp(proto, key, extension[key]);\n });\n }\n var defineProperty = Object.defineProperty;\n function setProp(obj, prop, functionOrGetSet, options) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } :\n { value: functionOrGetSet, configurable: true, writable: true }, options));\n }\n function derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n }\n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n function getPropertyDescriptor(obj, prop) {\n var pd = getOwnPropertyDescriptor(obj, prop);\n var proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n }\n var _slice = [].slice;\n function slice(args, start, end) {\n return _slice.call(args, start, end);\n }\n function override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n }\n function assert(b) {\n if (!b)\n throw new Error(\"Assertion Failed\");\n }\n function asap$1(fn) {\n if (_global.setImmediate)\n setImmediate(fn);\n else\n setTimeout(fn, 0);\n }\n function arrayToObject(array, extractor) {\n return array.reduce(function (result, item, i) {\n var nameAndValue = extractor(item, i);\n if (nameAndValue)\n result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n }\n function getByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string' && hasOwn(obj, keyPath))\n return obj[keyPath];\n if (!keyPath)\n return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj == null ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n }\n function setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined)\n return;\n if ('isFrozen' in Object && Object.isFrozen(obj))\n return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n }\n else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))\n obj.splice(currentKeyPath, 1);\n else\n delete obj[currentKeyPath];\n }\n else\n obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj || !hasOwn(obj, currentKeyPath))\n innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n }\n else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath)))\n obj.splice(keyPath, 1);\n else\n delete obj[keyPath];\n }\n else\n obj[keyPath] = value;\n }\n }\n }\n function delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function (kp) {\n setByKeyPath(obj, kp, undefined);\n });\n }\n function shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m))\n rv[m] = obj[m];\n }\n return rv;\n }\n var concat = [].concat;\n function flatten(a) {\n return concat.apply([], a);\n }\n var intrinsicTypeNames = \"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\"\n .split(',').concat(flatten([8, 16, 32, 64].map(function (num) { return [\"Int\", \"Uint\", \"Float\"].map(function (t) { return t + num + \"Array\"; }); }))).filter(function (t) { return _global[t]; });\n var intrinsicTypes = new Set(intrinsicTypeNames.map(function (t) { return _global[t]; }));\n function cloneSimpleObjectTree(o) {\n var rv = {};\n for (var k in o)\n if (hasOwn(o, k)) {\n var v = o[k];\n rv[k] = !v || typeof v !== 'object' || intrinsicTypes.has(v.constructor) ? v : cloneSimpleObjectTree(v);\n }\n return rv;\n }\n function objectIsEmpty(o) {\n for (var k in o)\n if (hasOwn(o, k))\n return false;\n return true;\n }\n var circularRefs = null;\n function deepClone(any) {\n circularRefs = new WeakMap();\n var rv = innerDeepClone(any);\n circularRefs = null;\n return rv;\n }\n function innerDeepClone(x) {\n if (!x || typeof x !== 'object')\n return x;\n var rv = circularRefs.get(x);\n if (rv)\n return rv;\n if (isArray(x)) {\n rv = [];\n circularRefs.set(x, rv);\n for (var i = 0, l = x.length; i < l; ++i) {\n rv.push(innerDeepClone(x[i]));\n }\n }\n else if (intrinsicTypes.has(x.constructor)) {\n rv = x;\n }\n else {\n var proto = getProto(x);\n rv = proto === Object.prototype ? {} : Object.create(proto);\n circularRefs.set(x, rv);\n for (var prop in x) {\n if (hasOwn(x, prop)) {\n rv[prop] = innerDeepClone(x[prop]);\n }\n }\n }\n return rv;\n }\n var toString = {}.toString;\n function toStringTag(o) {\n return toString.call(o).slice(8, -1);\n }\n var iteratorSymbol = typeof Symbol !== 'undefined' ?\n Symbol.iterator :\n '@@iterator';\n var getIteratorOf = typeof iteratorSymbol === \"symbol\" ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n } : function () { return null; };\n function delArrayItem(a, x) {\n var i = a.indexOf(x);\n if (i >= 0)\n a.splice(i, 1);\n return i >= 0;\n }\n var NO_CHAR_ARRAY = {};\n function getArrayOf(arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike))\n return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string')\n return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while ((x = it.next()), !x.done)\n a.push(x.value);\n return a;\n }\n if (arrayLike == null)\n return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--)\n a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--)\n a[i] = arguments[i];\n return a;\n }\n var isAsyncFunction = typeof Symbol !== 'undefined'\n ? function (fn) { return fn[Symbol.toStringTag] === 'AsyncFunction'; }\n : function () { return false; };\n\n var dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n ];\n var idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n ];\n var errorList = dexieErrorNames.concat(idbDomErrorNames);\n var defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\",\n MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"\n };\n function DexieError(name, msg) {\n this.name = name;\n this.message = msg;\n }\n derive(DexieError).from(Error).extend({\n toString: function () { return this.name + \": \" + this.message; }\n });\n function getMultiErrorMessage(msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(function (key) { return failures[key].toString(); })\n .filter(function (v, i, s) { return s.indexOf(v) === i; })\n .join('\\n');\n }\n function ModifyError(msg, failures, successCount, failedKeys) {\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n }\n derive(ModifyError).from(DexieError);\n function BulkError(msg, failures) {\n this.name = \"BulkError\";\n this.failures = Object.keys(failures).map(function (pos) { return failures[pos]; });\n this.failuresByPos = failures;\n this.message = getMultiErrorMessage(msg, this.failures);\n }\n derive(BulkError).from(DexieError);\n var errnames = errorList.reduce(function (obj, name) { return (obj[name] = name + \"Error\", obj); }, {});\n var BaseException = DexieError;\n var exceptions = errorList.reduce(function (obj, name) {\n var fullName = name + \"Error\";\n function DexieError(msgOrInner, inner) {\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n }\n else if (typeof msgOrInner === 'string') {\n this.message = \"\".concat(msgOrInner).concat(!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n }\n else if (typeof msgOrInner === 'object') {\n this.message = \"\".concat(msgOrInner.name, \" \").concat(msgOrInner.message);\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name] = DexieError;\n return obj;\n }, {});\n exceptions.Syntax = SyntaxError;\n exceptions.Type = TypeError;\n exceptions.Range = RangeError;\n var exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n }, {});\n function mapError(domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n setProp(rv, \"stack\", { get: function () {\n return this.inner.stack;\n } });\n }\n return rv;\n }\n var fullNameExceptions = errorList.reduce(function (obj, name) {\n if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n }, {});\n fullNameExceptions.ModifyError = ModifyError;\n fullNameExceptions.DexieError = DexieError;\n fullNameExceptions.BulkError = BulkError;\n\n function nop() { }\n function mirror(val) { return val; }\n function pureFunctionChain(f1, f2) {\n if (f1 == null || f1 === mirror)\n return f2;\n return function (val) {\n return f2(f1(val));\n };\n }\n function callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n }\n function hookCreatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined)\n arguments[0] = res;\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n }\n function hookDeletingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n }\n function hookUpdatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n }\n function reverseStoppableEventChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n if (f2.apply(this, arguments) === false)\n return false;\n return f1.apply(this, arguments);\n };\n }\n function promisableChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this, i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n }\n\n var debug = typeof location !== 'undefined' &&\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\n function setDebug(value, filter) {\n debug = value;\n }\n\n var INTERNAL = {};\n var ZONE_ECHO_LIMIT = 100, _a$1 = typeof Promise === 'undefined' ?\n [] :\n (function () {\n var globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, getProto(globalP), globalP];\n var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n getProto(nativeP),\n globalP\n ];\n })(), resolvedNativePromise = _a$1[0], nativePromiseProto = _a$1[1], resolvedGlobalPromise = _a$1[2], nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\n var NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\n var patchGlobalPromise = !!resolvedGlobalPromise;\n function schedulePhysicalTick() {\n queueMicrotask(physicalTick);\n }\n var asap = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n };\n var isOutsideMicroTick = true,\n needsNewPhysicalTick = true,\n unhandledErrors = [],\n rejectingErrors = [],\n rejectionMapper = mirror;\n var globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: nop,\n pgp: false,\n env: {},\n finalize: nop\n };\n var PSD = globalPSD;\n var microtickQueue = [];\n var numScheduledCalls = 0;\n var tickFinalizers = [];\n function DexiePromise(fn) {\n if (typeof this !== 'object')\n throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this._lib = false;\n var psd = (this._PSD = PSD);\n if (typeof fn !== 'function') {\n if (fn !== INTERNAL)\n throw new TypeError('Not a function');\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value);\n return;\n }\n this._state = null;\n this._value = null;\n ++psd.ref;\n executePromiseTask(this, fn);\n }\n var thenProp = {\n get: function () {\n var psd = PSD, microTaskId = totalEchoes;\n function then(onFulfilled, onRejected) {\n var _this = this;\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n var cleanup = possibleAwait && !decrementExpectedAwaits();\n var rv = new DexiePromise(function (resolve, reject) {\n propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd));\n });\n if (this._consoleTask)\n rv._consoleTask = this._consoleTask;\n return rv;\n }\n then.prototype = INTERNAL;\n return then;\n },\n set: function (value) {\n setProp(this, 'then', value && value.prototype === INTERNAL ?\n thenProp :\n {\n get: function () {\n return value;\n },\n set: thenProp.set\n });\n }\n };\n props(DexiePromise.prototype, {\n then: thenProp,\n _then: function (onFulfilled, onRejected) {\n propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD));\n },\n catch: function (onRejected) {\n if (arguments.length === 1)\n return this.then(null, onRejected);\n var type = arguments[0], handler = arguments[1];\n return typeof type === 'function' ? this.then(null, function (err) {\n return err instanceof type ? handler(err) : PromiseReject(err);\n })\n : this.then(null, function (err) {\n return err && err.name === type ? handler(err) : PromiseReject(err);\n });\n },\n finally: function (onFinally) {\n return this.then(function (value) {\n return DexiePromise.resolve(onFinally()).then(function () { return value; });\n }, function (err) {\n return DexiePromise.resolve(onFinally()).then(function () { return PromiseReject(err); });\n });\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ?\n new DexiePromise(function (resolve, reject) {\n var handle = setTimeout(function () { return reject(new exceptions.Timeout(msg)); }, ms);\n _this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n }) : this;\n }\n });\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag)\n setProp(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.Promise');\n globalPSD.env = snapShot();\n function Listener(onFulfilled, onRejected, resolve, reject, zone) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n this.psd = zone;\n }\n props(DexiePromise, {\n all: function () {\n var values = getArrayOf.apply(null, arguments)\n .map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (values.length === 0)\n resolve([]);\n var remaining = values.length;\n values.forEach(function (a, i) { return DexiePromise.resolve(a).then(function (x) {\n values[i] = x;\n if (!--remaining)\n resolve(values);\n }, reject); });\n });\n },\n resolve: function (value) {\n if (value instanceof DexiePromise)\n return value;\n if (value && typeof value.then === 'function')\n return new DexiePromise(function (resolve, reject) {\n value.then(resolve, reject);\n });\n var rv = new DexiePromise(INTERNAL, true, value);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n values.map(function (value) { return DexiePromise.resolve(value).then(resolve, reject); });\n });\n },\n PSD: {\n get: function () { return PSD; },\n set: function (value) { return PSD = value; }\n },\n totalEchoes: { get: function () { return totalEchoes; } },\n newPSD: newScope,\n usePSD: usePSD,\n scheduler: {\n get: function () { return asap; },\n set: function (value) { asap = value; }\n },\n rejectionMapper: {\n get: function () { return rejectionMapper; },\n set: function (value) { rejectionMapper = value; }\n },\n follow: function (fn, zoneProps) {\n return new DexiePromise(function (resolve, reject) {\n return newScope(function (resolve, reject) {\n var psd = PSD;\n psd.unhandleds = [];\n psd.onunhandled = reject;\n psd.finalize = callBoth(function () {\n var _this = this;\n run_at_end_of_this_or_next_physical_tick(function () {\n _this.unhandleds.length === 0 ? resolve() : reject(_this.unhandleds[0]);\n });\n }, psd.finalize);\n fn();\n }, zoneProps, resolve, reject);\n });\n }\n });\n if (NativePromise) {\n if (NativePromise.allSettled)\n setProp(DexiePromise, \"allSettled\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve) {\n if (possiblePromises.length === 0)\n resolve([]);\n var remaining = possiblePromises.length;\n var results = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return results[i] = { status: \"fulfilled\", value: value }; }, function (reason) { return results[i] = { status: \"rejected\", reason: reason }; })\n .then(function () { return --remaining || resolve(results); }); });\n });\n });\n if (NativePromise.any && typeof AggregateError !== 'undefined')\n setProp(DexiePromise, \"any\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (possiblePromises.length === 0)\n reject(new AggregateError([]));\n var remaining = possiblePromises.length;\n var failures = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return resolve(value); }, function (failure) {\n failures[i] = failure;\n if (!--remaining)\n reject(new AggregateError(failures));\n }); });\n });\n });\n }\n function executePromiseTask(promise, fn) {\n try {\n fn(function (value) {\n if (promise._state !== null)\n return;\n if (value === promise)\n throw new TypeError('A promise cannot be resolved with itself.');\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n if (value && typeof value.then === 'function') {\n executePromiseTask(promise, function (resolve, reject) {\n value instanceof DexiePromise ?\n value._then(resolve, reject) :\n value.then(resolve, reject);\n });\n }\n else {\n promise._state = true;\n promise._value = value;\n propagateAllListeners(promise);\n }\n if (shouldExecuteTick)\n endMicroTickScope();\n }, handleRejection.bind(null, promise));\n }\n catch (ex) {\n handleRejection(promise, ex);\n }\n }\n function handleRejection(promise, reason) {\n rejectingErrors.push(reason);\n if (promise._state !== null)\n return;\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n reason = rejectionMapper(reason);\n promise._state = false;\n promise._value = reason;\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick)\n endMicroTickScope();\n }\n function propagateAllListeners(promise) {\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize();\n if (numScheduledCalls === 0) {\n ++numScheduledCalls;\n asap(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n }\n }\n function propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n return (promise._state ? listener.resolve : listener.reject)(promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap(callListener, [cb, promise, listener]);\n }\n function callListener(cb, promise, listener) {\n try {\n var ret, value = promise._value;\n if (!promise._state && rejectingErrors.length)\n rejectingErrors = [];\n ret = debug && promise._consoleTask ? promise._consoleTask.run(function () { return cb(value); }) : cb(value);\n if (!promise._state && rejectingErrors.indexOf(value) === -1) {\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n }\n catch (e) {\n listener.reject(e);\n }\n finally {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n }\n function physicalTick() {\n usePSD(globalPSD, function () {\n beginMicroTickScope() && endMicroTickScope();\n });\n }\n function beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n }\n function endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n }\n function finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(function (p) {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0);\n var i = finalizers.length;\n while (i)\n finalizers[--i]();\n }\n function run_at_end_of_this_or_next_physical_tick(fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n }\n function addPossiblyUnhandledError(promise) {\n if (!unhandledErrors.some(function (p) { return p._value === promise._value; }))\n unhandledErrors.push(promise);\n }\n function markErrorAsHandled(promise) {\n var i = unhandledErrors.length;\n while (i)\n if (unhandledErrors[--i]._value === promise._value) {\n unhandledErrors.splice(i, 1);\n return;\n }\n }\n function PromiseReject(reason) {\n return new DexiePromise(INTERNAL, false, reason);\n }\n function wrap(fn, errorCatcher) {\n var psd = PSD;\n return function () {\n var wasRootExec = beginMicroTickScope(), outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn.apply(this, arguments);\n }\n catch (e) {\n errorCatcher && errorCatcher(e);\n }\n finally {\n switchToZone(outerScope, false);\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n }\n var task = { awaits: 0, echoes: 0, id: 0 };\n var taskCounter = 0;\n var zoneStack = [];\n var zoneEchoes = 0;\n var totalEchoes = 0;\n var zone_id_counter = 0;\n function newScope(fn, props, a1, a2) {\n var parent = PSD, psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: DexiePromise,\n PromiseProp: { value: DexiePromise, configurable: true, writable: true },\n all: DexiePromise.all,\n race: DexiePromise.race,\n allSettled: DexiePromise.allSettled,\n any: DexiePromise.any,\n resolve: DexiePromise.resolve,\n reject: DexiePromise.reject,\n } : {};\n if (props)\n extend(psd, props);\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n };\n var rv = usePSD(psd, fn, a1, a2);\n if (psd.ref === 0)\n psd.finalize();\n return rv;\n }\n function incrementExpectedAwaits() {\n if (!task.id)\n task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n }\n function decrementExpectedAwaits() {\n if (!task.awaits)\n return false;\n if (--task.awaits === 0)\n task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT;\n return true;\n }\n if (('' + nativePromiseThen).indexOf('[native code]') === -1) {\n incrementExpectedAwaits = decrementExpectedAwaits = nop;\n }\n function onPossibleParallellAsync(possiblePromise) {\n if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n incrementExpectedAwaits();\n return possiblePromise.then(function (x) {\n decrementExpectedAwaits();\n return x;\n }, function (e) {\n decrementExpectedAwaits();\n return rejection(e);\n });\n }\n return possiblePromise;\n }\n function zoneEnterEcho(targetZone) {\n ++totalEchoes;\n if (!task.echoes || --task.echoes === 0) {\n task.echoes = task.awaits = task.id = 0;\n }\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n }\n function zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length - 1];\n zoneStack.pop();\n switchToZone(zone, false);\n }\n function switchToZone(targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n queueMicrotask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD)\n return;\n PSD = targetZone;\n if (currentZone === globalPSD)\n globalPSD.env = snapShot();\n if (patchGlobalPromise) {\n var GlobalPromise = globalPSD.env.Promise;\n var targetEnv = targetZone.env;\n if (currentZone.global || targetZone.global) {\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n GlobalPromise.all = targetEnv.all;\n GlobalPromise.race = targetEnv.race;\n GlobalPromise.resolve = targetEnv.resolve;\n GlobalPromise.reject = targetEnv.reject;\n if (targetEnv.allSettled)\n GlobalPromise.allSettled = targetEnv.allSettled;\n if (targetEnv.any)\n GlobalPromise.any = targetEnv.any;\n }\n }\n }\n function snapShot() {\n var GlobalPromise = _global.Promise;\n return patchGlobalPromise ? {\n Promise: GlobalPromise,\n PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n all: GlobalPromise.all,\n race: GlobalPromise.race,\n allSettled: GlobalPromise.allSettled,\n any: GlobalPromise.any,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject,\n } : {};\n }\n function usePSD(psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n }\n finally {\n switchToZone(outerScope, false);\n }\n }\n function nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\n return typeof fn !== 'function' ? fn : function () {\n var outerZone = PSD;\n if (possibleAwait)\n incrementExpectedAwaits();\n switchToZone(zone, true);\n try {\n return fn.apply(this, arguments);\n }\n finally {\n switchToZone(outerZone, false);\n if (cleanup)\n queueMicrotask(decrementExpectedAwaits);\n }\n };\n }\n function execInGlobalContext(cb) {\n if (Promise === NativePromise && task.echoes === 0) {\n if (zoneEchoes === 0) {\n cb();\n }\n else {\n enqueueNativeMicroTask(cb);\n }\n }\n else {\n setTimeout(cb, 0);\n }\n }\n var rejection = DexiePromise.reject;\n\n function tempTransaction(db, mode, storeNames, fn) {\n if (!db.idbdb || (!db._state.openComplete && (!PSD.letThrough && !db._vip))) {\n if (db._state.openComplete) {\n return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));\n }\n if (!db._state.isBeingOpened) {\n if (!db._state.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop);\n }\n return db._state.dbReadyPromise.then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n db._state.PR1398_maxLoop = 3;\n }\n catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({ disableAutoOpen: false });\n return db.open().then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n return rejection(ex);\n }\n return trans._promise(mode, function (resolve, reject) {\n return newScope(function () {\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(function (result) {\n if (mode === 'readwrite')\n try {\n trans.idbtrans.commit();\n }\n catch (_a) { }\n return mode === 'readonly' ? result : trans._completion.then(function () { return result; });\n });\n }\n }\n\n var DEXIE_VERSION = '4.0.7';\n var maxString = String.fromCharCode(65535);\n var minKey = -Infinity;\n var INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array.\";\n var STRING_EXPECTED = \"String expected.\";\n var connections = [];\n var DBNAMES_DB = '__dbnames';\n var READONLY = 'readonly';\n var READWRITE = 'readwrite';\n\n function combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n }\n\n var AnyRange = {\n type: 3 ,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n };\n\n function workaroundForUndefinedPrimKey(keyPath) {\n return typeof keyPath === \"string\" && !/\\./.test(keyPath)\n ? function (obj) {\n if (obj[keyPath] === undefined && (keyPath in obj)) {\n obj = deepClone(obj);\n delete obj[keyPath];\n }\n return obj;\n }\n : function (obj) { return obj; };\n }\n\n function Entity() {\n throw exceptions.Type();\n }\n\n function cmp(a, b) {\n try {\n var ta = type(a);\n var tb = type(b);\n if (ta !== tb) {\n if (ta === 'Array')\n return 1;\n if (tb === 'Array')\n return -1;\n if (ta === 'binary')\n return 1;\n if (tb === 'binary')\n return -1;\n if (ta === 'string')\n return 1;\n if (tb === 'string')\n return -1;\n if (ta === 'Date')\n return 1;\n if (tb !== 'Date')\n return NaN;\n return -1;\n }\n switch (ta) {\n case 'number':\n case 'Date':\n case 'string':\n return a > b ? 1 : a < b ? -1 : 0;\n case 'binary': {\n return compareUint8Arrays(getUint8Array(a), getUint8Array(b));\n }\n case 'Array':\n return compareArrays(a, b);\n }\n }\n catch (_a) { }\n return NaN;\n }\n function compareArrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n var res = cmp(a[i], b[i]);\n if (res !== 0)\n return res;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n }\n function compareUint8Arrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n if (a[i] !== b[i])\n return a[i] < b[i] ? -1 : 1;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n }\n function type(x) {\n var t = typeof x;\n if (t !== 'object')\n return t;\n if (ArrayBuffer.isView(x))\n return 'binary';\n var tsTag = toStringTag(x);\n return tsTag === 'ArrayBuffer' ? 'binary' : tsTag;\n }\n function getUint8Array(a) {\n if (a instanceof Uint8Array)\n return a;\n if (ArrayBuffer.isView(a))\n return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return new Uint8Array(a);\n }\n\n var Table = (function () {\n function Table() {\n }\n Table.prototype._trans = function (mode, fn, writeLocked) {\n var trans = this._tx || PSD.trans;\n var tableName = this.name;\n var task = debug && typeof console !== 'undefined' && console.createTask && console.createTask(\"Dexie: \".concat(mode === 'readonly' ? 'read' : 'write', \" \").concat(this.name));\n function checkTableInTransaction(resolve, reject, trans) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n var wasRootExec = beginMicroTickScope();\n try {\n var p = trans && trans.db._novip === this.db._novip ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(function () { return trans._promise(mode, checkTableInTransaction, writeLocked); }, { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n if (task) {\n p._consoleTask = task;\n p = p.catch(function (err) {\n console.trace(err);\n return rejection(err);\n });\n }\n return p;\n }\n finally {\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n Table.prototype.get = function (keyOrCrit, cb) {\n var _this = this;\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit).first(cb);\n if (keyOrCrit == null)\n return rejection(new exceptions.Type(\"Invalid argument to Table.get()\"));\n return this._trans('readonly', function (trans) {\n return _this.core.get({ trans: trans, key: keyOrCrit })\n .then(function (res) { return _this.hook.reading.fire(res); });\n }).then(cb);\n };\n Table.prototype.where = function (indexOrCrit) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, \"[\".concat(indexOrCrit.join('+'), \"]\"));\n var keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n if (ix.compound &&\n keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; })) {\n for (var i = 0; i < keyPaths.length; ++i) {\n if (keyPaths.indexOf(ix.keyPath[i]) === -1)\n return false;\n }\n return true;\n }\n return false;\n }).sort(function (a, b) { return a.keyPath.length - b.keyPath.length; })[0];\n if (compoundIndex && this.db._maxKey !== maxString) {\n var keyPathsInValidOrder = compoundIndex.keyPath.slice(0, keyPaths.length);\n return this\n .where(keyPathsInValidOrder)\n .equals(keyPathsInValidOrder.map(function (kp) { return indexOrCrit[kp]; }));\n }\n if (!compoundIndex && debug)\n console.warn(\"The query \".concat(JSON.stringify(indexOrCrit), \" on \").concat(this.name, \" would benefit from a \") +\n \"compound index [\".concat(keyPaths.join('+'), \"]\"));\n var idxByName = this.schema.idxByName;\n var idb = this.db._deps.indexedDB;\n function equals(a, b) {\n return idb.cmp(a, b) === 0;\n }\n var _a = keyPaths.reduce(function (_a, keyPath) {\n var prevIndex = _a[0], prevFilterFn = _a[1];\n var index = idxByName[keyPath];\n var value = indexOrCrit[keyPath];\n return [\n prevIndex || index,\n prevIndex || !index ?\n combine(prevFilterFn, index && index.multi ?\n function (x) {\n var prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(function (item) { return equals(value, item); });\n } : function (x) { return equals(value, getByKeyPath(x, keyPath)); })\n : prevFilterFn\n ];\n }, [null, null]), idx = _a[0], filterFunction = _a[1];\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) :\n this.where(keyPaths).equals('');\n };\n Table.prototype.filter = function (filterFunction) {\n return this.toCollection().and(filterFunction);\n };\n Table.prototype.count = function (thenShortcut) {\n return this.toCollection().count(thenShortcut);\n };\n Table.prototype.offset = function (offset) {\n return this.toCollection().offset(offset);\n };\n Table.prototype.limit = function (numRows) {\n return this.toCollection().limit(numRows);\n };\n Table.prototype.each = function (callback) {\n return this.toCollection().each(callback);\n };\n Table.prototype.toArray = function (thenShortcut) {\n return this.toCollection().toArray(thenShortcut);\n };\n Table.prototype.toCollection = function () {\n return new this.db.Collection(new this.db.WhereClause(this));\n };\n Table.prototype.orderBy = function (index) {\n return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ?\n \"[\".concat(index.join('+'), \"]\") :\n index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n var _a = this, db = _a.db, tableName = _a.name;\n this.schema.mappedClass = constructor;\n if (constructor.prototype instanceof Entity) {\n constructor = (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(class_1.prototype, \"db\", {\n get: function () { return db; },\n enumerable: false,\n configurable: true\n });\n class_1.prototype.table = function () { return tableName; };\n return class_1;\n }(constructor));\n }\n var inheritedProps = new Set();\n for (var proto = constructor.prototype; proto; proto = getProto(proto)) {\n Object.getOwnPropertyNames(proto).forEach(function (propName) { return inheritedProps.add(propName); });\n }\n var readHook = function (obj) {\n if (!obj)\n return obj;\n var res = Object.create(constructor.prototype);\n for (var m in obj)\n if (!inheritedProps.has(m))\n try {\n res[m] = obj[m];\n }\n catch (_) { }\n return res;\n };\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n };\n Table.prototype.defineClass = function () {\n function Class(content) {\n extend(this, content);\n }\n return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'add', keys: key != null ? [key] : null, values: [objToAdd] });\n }).then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\n }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined)\n return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n return this.where(\":id\").equals(key).modify(modifications);\n }\n else {\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n };\n Table.prototype.put = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'put', values: [objToAdd], keys: key != null ? [key] : null }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\n }\n return lastResult;\n });\n };\n Table.prototype.delete = function (key) {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'delete', keys: [key] }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.clear = function () {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'deleteRange', range: AnyRange }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.bulkGet = function (keys) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys,\n trans: trans\n }).then(function (result) { return result.map(function (res) { return _this.hook.reading.fire(res); }); });\n });\n };\n Table.prototype.bulkAdd = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToAdd = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'add', keys: keys, values: objectsToAdd, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(\"\".concat(_this.name, \".bulkAdd(): \").concat(numFailures, \" of \").concat(numObjects, \" operations failed\"), failures);\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToPut = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'put', keys: keys, values: objectsToPut, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(\"\".concat(_this.name, \".bulkPut(): \").concat(numFailures, \" of \").concat(numObjects, \" operations failed\"), failures);\n });\n });\n };\n Table.prototype.bulkUpdate = function (keysAndChanges) {\n var _this = this;\n var coreTable = this.core;\n var keys = keysAndChanges.map(function (entry) { return entry.key; });\n var changeSpecs = keysAndChanges.map(function (entry) { return entry.changes; });\n var offsetMap = [];\n return this._trans('readwrite', function (trans) {\n return coreTable.getMany({ trans: trans, keys: keys, cache: 'clone' }).then(function (objs) {\n var resultKeys = [];\n var resultObjs = [];\n keysAndChanges.forEach(function (_a, idx) {\n var key = _a.key, changes = _a.changes;\n var obj = objs[idx];\n if (obj) {\n for (var _i = 0, _b = Object.keys(changes); _i < _b.length; _i++) {\n var keyPath = _b[_i];\n var value = changes[keyPath];\n if (keyPath === _this.schema.primKey.keyPath) {\n if (cmp(value, key) !== 0) {\n throw new exceptions.Constraint(\"Cannot update primary key in bulkUpdate()\");\n }\n }\n else {\n setByKeyPath(obj, keyPath, value);\n }\n }\n offsetMap.push(idx);\n resultKeys.push(key);\n resultObjs.push(obj);\n }\n });\n var numEntries = resultKeys.length;\n return coreTable\n .mutate({\n trans: trans,\n type: 'put',\n keys: resultKeys,\n values: resultObjs,\n updates: {\n keys: keys,\n changeSpecs: changeSpecs\n }\n })\n .then(function (_a) {\n var numFailures = _a.numFailures, failures = _a.failures;\n if (numFailures === 0)\n return numEntries;\n for (var _i = 0, _b = Object.keys(failures); _i < _b.length; _i++) {\n var offset = _b[_i];\n var mappedOffset = offsetMap[Number(offset)];\n if (mappedOffset != null) {\n var failure = failures[offset];\n delete failures[offset];\n failures[mappedOffset] = failure;\n }\n }\n throw new BulkError(\"\".concat(_this.name, \".bulkUpdate(): \").concat(numFailures, \" of \").concat(numEntries, \" operations failed\"), failures);\n });\n });\n });\n };\n Table.prototype.bulkDelete = function (keys) {\n var _this = this;\n var numKeys = keys.length;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'delete', keys: keys });\n }).then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(\"\".concat(_this.name, \".bulkDelete(): \").concat(numFailures, \" of \").concat(numKeys, \" operations failed\"), failures);\n });\n };\n return Table;\n }());\n\n function Events(ctx) {\n var evs = {};\n var rv = function (eventName, subscriber) {\n if (subscriber) {\n var i = arguments.length, args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n evs[eventName].subscribe.apply(null, args);\n return ctx;\n }\n else if (typeof (eventName) === 'string') {\n return evs[eventName];\n }\n };\n rv.addEventType = add;\n for (var i = 1, l = arguments.length; i < l; ++i) {\n add(arguments[i]);\n }\n return rv;\n function add(eventName, chainFunction, defaultFunction) {\n if (typeof eventName === 'object')\n return addConfiguredEvents(eventName);\n if (!chainFunction)\n chainFunction = reverseStoppableEventChain;\n if (!defaultFunction)\n defaultFunction = nop;\n var context = {\n subscribers: [],\n fire: defaultFunction,\n subscribe: function (cb) {\n if (context.subscribers.indexOf(cb) === -1) {\n context.subscribers.push(cb);\n context.fire = chainFunction(context.fire, cb);\n }\n },\n unsubscribe: function (cb) {\n context.subscribers = context.subscribers.filter(function (fn) { return fn !== cb; });\n context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n }\n };\n evs[eventName] = rv[eventName] = context;\n return context;\n }\n function addConfiguredEvents(cfg) {\n keys(cfg).forEach(function (eventName) {\n var args = cfg[eventName];\n if (isArray(args)) {\n add(eventName, cfg[eventName][0], cfg[eventName][1]);\n }\n else if (args === 'asap') {\n var context = add(eventName, mirror, function fire() {\n var i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n context.subscribers.forEach(function (fn) {\n asap$1(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n }\n else\n throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n }\n\n function makeClassConstructor(prototype, constructor) {\n derive(constructor).from({ prototype: prototype });\n return constructor;\n }\n\n function createTableConstructor(db) {\n return makeClassConstructor(Table.prototype, function Table(name, tableSchema, trans) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n });\n });\n }\n\n function isPlainKeyRange(ctx, ignoreLimitFilter) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n }\n function addFilter(ctx, fn) {\n ctx.filter = combine(ctx.filter, fn);\n }\n function addReplayFilter(ctx, factory, isLimitFilter) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? function () { return combine(curr(), factory()); } : factory;\n ctx.justLimit = isLimitFilter && !curr;\n }\n function addMatchFilter(ctx, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n }\n function getIndexOrStore(ctx, coreSchema) {\n if (ctx.isPrimKey)\n return coreSchema.primaryKey;\n var index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index)\n throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n }\n function openCursor(ctx, coreTable, trans) {\n var index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans: trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }\n function iter(ctx, fn, coreTrans, coreTable) {\n var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n }\n else {\n var set_1 = {};\n var union = function (item, cursor, advance) {\n if (!filter || filter(cursor, advance, function (result) { return cursor.stop(result); }, function (err) { return cursor.fail(err); })) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]')\n key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set_1, key)) {\n set_1[key] = true;\n fn(item, cursor, advance);\n }\n }\n };\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n }\n function iterate(cursorPromise, filter, fn, valueMapper) {\n var mappedFn = valueMapper ? function (x, c, a) { return fn(valueMapper(x), c, a); } : fn;\n var wrappedFn = wrap(mappedFn);\n return cursorPromise.then(function (cursor) {\n if (cursor) {\n return cursor.start(function () {\n var c = function () { return cursor.continue(); };\n if (!filter || filter(cursor, function (advancer) { return c = advancer; }, function (val) { cursor.stop(val); c = nop; }, function (e) { cursor.fail(e); c = nop; }))\n wrappedFn(cursor.value, cursor, function (advancer) { return c = advancer; });\n c();\n });\n }\n });\n }\n\n var PropModSymbol = Symbol();\n var PropModification = (function () {\n function PropModification(spec) {\n Object.assign(this, spec);\n }\n PropModification.prototype.execute = function (value) {\n var _a;\n if (this.add !== undefined) {\n var term = this.add;\n if (isArray(term)) {\n return __spreadArray(__spreadArray([], (isArray(value) ? value : []), true), term, true).sort();\n }\n if (typeof term === 'number')\n return (Number(value) || 0) + term;\n if (typeof term === 'bigint') {\n try {\n return BigInt(value) + term;\n }\n catch (_b) {\n return BigInt(0) + term;\n }\n }\n throw new TypeError(\"Invalid term \".concat(term));\n }\n if (this.remove !== undefined) {\n var subtrahend_1 = this.remove;\n if (isArray(subtrahend_1)) {\n return isArray(value) ? value.filter(function (item) { return !subtrahend_1.includes(item); }).sort() : [];\n }\n if (typeof subtrahend_1 === 'number')\n return Number(value) - subtrahend_1;\n if (typeof subtrahend_1 === 'bigint') {\n try {\n return BigInt(value) - subtrahend_1;\n }\n catch (_c) {\n return BigInt(0) - subtrahend_1;\n }\n }\n throw new TypeError(\"Invalid subtrahend \".concat(subtrahend_1));\n }\n var prefixToReplace = (_a = this.replacePrefix) === null || _a === void 0 ? void 0 : _a[0];\n if (prefixToReplace && typeof value === 'string' && value.startsWith(prefixToReplace)) {\n return this.replacePrefix[1] + value.substring(prefixToReplace.length);\n }\n return value;\n };\n return PropModification;\n }());\n\n var Collection = (function () {\n function Collection() {\n }\n Collection.prototype._read = function (fn, cb) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n };\n Collection.prototype._write = function (fn) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\");\n };\n Collection.prototype._addAlgorithm = function (fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n };\n Collection.prototype._iterate = function (fn, coreTrans) {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n };\n Collection.prototype.clone = function (props) {\n var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n if (props)\n extend(ctx, props);\n rv._ctx = ctx;\n return rv;\n };\n Collection.prototype.raw = function () {\n this._ctx.valueMapper = null;\n return this;\n };\n Collection.prototype.each = function (fn) {\n var ctx = this._ctx;\n return this._read(function (trans) { return iter(ctx, fn, trans, ctx.table.core); });\n };\n Collection.prototype.count = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n var coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n return coreTable.count({\n trans: trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(function (count) { return Math.min(count, ctx.limit); });\n }\n else {\n var count = 0;\n return iter(ctx, function () { ++count; return false; }, trans, coreTable)\n .then(function () { return count; });\n }\n }).then(cb);\n };\n Collection.prototype.sortBy = function (keyPath, cb) {\n var parts = keyPath.split('.').reverse(), lastPart = parts[0], lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i)\n return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n function sorter(a, b) {\n var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex);\n return aVal < bVal ? -order : aVal > bVal ? order : 0;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n };\n Collection.prototype.toArray = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n var valueMapper_1 = ctx.valueMapper;\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n limit: ctx.limit,\n values: true,\n query: {\n index: index,\n range: ctx.range\n }\n }).then(function (_a) {\n var result = _a.result;\n return valueMapper_1 ? result.map(valueMapper_1) : result;\n });\n }\n else {\n var a_1 = [];\n return iter(ctx, function (item) { return a_1.push(item); }, trans, ctx.table.core).then(function () { return a_1; });\n }\n }, cb);\n };\n Collection.prototype.offset = function (offset) {\n var ctx = this._ctx;\n if (offset <= 0)\n return this;\n ctx.offset += offset;\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function (cursor, advance) {\n if (offsetLeft === 0)\n return true;\n if (offsetLeft === 1) {\n --offsetLeft;\n return false;\n }\n advance(function () {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n }\n else {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function () { return (--offsetLeft < 0); };\n });\n }\n return this;\n };\n Collection.prototype.limit = function (numRows) {\n this._ctx.limit = Math.min(this._ctx.limit, numRows);\n addReplayFilter(this._ctx, function () {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0)\n advance(resolve);\n return rowsLeft >= 0;\n };\n }, true);\n return this;\n };\n Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n }\n else {\n return true;\n }\n });\n return this;\n };\n Collection.prototype.first = function (cb) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.last = function (cb) {\n return this.reverse().first(cb);\n };\n Collection.prototype.filter = function (filterFunction) {\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n addMatchFilter(this._ctx, filterFunction);\n return this;\n };\n Collection.prototype.and = function (filter) {\n return this.filter(filter);\n };\n Collection.prototype.or = function (indexName) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n };\n Collection.prototype.reverse = function () {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange)\n this._ondirectionchange(this._ctx.dir);\n return this;\n };\n Collection.prototype.desc = function () {\n return this.reverse();\n };\n Collection.prototype.eachKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n };\n Collection.prototype.eachUniqueKey = function (cb) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n };\n Collection.prototype.eachPrimaryKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n };\n Collection.prototype.keys = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.primaryKeys = function (cb) {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n return this._read(function (trans) {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n values: false,\n limit: ctx.limit,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }).then(function (_a) {\n var result = _a.result;\n return result;\n }).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.uniqueKeys = function (cb) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n };\n Collection.prototype.firstKey = function (cb) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.lastKey = function (cb) {\n return this.reverse().firstKey(cb);\n };\n Collection.prototype.distinct = function () {\n var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi)\n return this;\n var set = {};\n addFilter(this._ctx, function (cursor) {\n var strKey = cursor.primaryKey.toString();\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n };\n Collection.prototype.modify = function (changes) {\n var _this = this;\n var ctx = this._ctx;\n return this._write(function (trans) {\n var modifyer;\n if (typeof changes === 'function') {\n modifyer = changes;\n }\n else {\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i];\n var val = changes[keyPath];\n var origVal = getByKeyPath(item, keyPath);\n if (val instanceof PropModification) {\n setByKeyPath(item, keyPath, val.execute(origVal));\n anythingModified = true;\n }\n else if (origVal !== val) {\n setByKeyPath(item, keyPath, val);\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n var coreTable = ctx.table.core;\n var _a = coreTable.schema.primaryKey, outbound = _a.outbound, extractKey = _a.extractKey;\n var limit = _this.db._options.modifyChunkSize || 200;\n var totalFailures = [];\n var successCount = 0;\n var failedKeys = [];\n var applyMutateResult = function (expectedCount, res) {\n var failures = res.failures, numFailures = res.numFailures;\n successCount += expectedCount - numFailures;\n for (var _i = 0, _a = keys(failures); _i < _a.length; _i++) {\n var pos = _a[_i];\n totalFailures.push(failures[pos]);\n }\n };\n return _this.clone().primaryKeys().then(function (keys) {\n var criteria = isPlainKeyRange(ctx) &&\n ctx.limit === Infinity &&\n (typeof changes !== 'function' || changes === deleteCallback) && {\n index: ctx.index,\n range: ctx.range\n };\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys.length - offset);\n return coreTable.getMany({\n trans: trans,\n keys: keys.slice(offset, offset + count),\n cache: \"immutable\"\n }).then(function (values) {\n var addValues = [];\n var putValues = [];\n var putKeys = outbound ? [] : null;\n var deleteKeys = [];\n for (var i = 0; i < count; ++i) {\n var origValue = values[i];\n var ctx_1 = {\n value: deepClone(origValue),\n primKey: keys[offset + i]\n };\n if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n if (ctx_1.value == null) {\n deleteKeys.push(keys[offset + i]);\n }\n else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys[offset + i]);\n addValues.push(ctx_1.value);\n }\n else {\n putValues.push(ctx_1.value);\n if (outbound)\n putKeys.push(keys[offset + i]);\n }\n }\n }\n return Promise.resolve(addValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'add', values: addValues })\n .then(function (res) {\n for (var pos in res.failures) {\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })).then(function () { return (putValues.length > 0 || (criteria && typeof changes === 'object')) &&\n coreTable.mutate({\n trans: trans,\n type: 'put',\n keys: putKeys,\n values: putValues,\n criteria: criteria,\n changeSpec: typeof changes !== 'function'\n && changes,\n isAdditionalChunk: offset > 0\n }).then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return (deleteKeys.length > 0 || (criteria && changes === deleteCallback)) &&\n coreTable.mutate({\n trans: trans,\n type: 'delete',\n keys: deleteKeys,\n criteria: criteria,\n isAdditionalChunk: offset > 0\n }).then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n return keys.length > offset + count && nextChunk(offset + limit);\n });\n });\n };\n return nextChunk(0).then(function () {\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n return keys.length;\n });\n });\n });\n };\n Collection.prototype.delete = function () {\n var ctx = this._ctx, range = ctx.range;\n if (isPlainKeyRange(ctx) &&\n (ctx.isPrimKey || range.type === 3 ))\n {\n return this._write(function (trans) {\n var primaryKey = ctx.table.core.schema.primaryKey;\n var coreRange = range;\n return ctx.table.core.count({ trans: trans, query: { index: primaryKey, range: coreRange } }).then(function (count) {\n return ctx.table.core.mutate({ trans: trans, type: 'deleteRange', range: coreRange })\n .then(function (_a) {\n var failures = _a.failures; _a.lastResult; _a.results; var numFailures = _a.numFailures;\n if (numFailures)\n throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) { return failures[pos]; }), count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n return this.modify(deleteCallback);\n };\n return Collection;\n }());\n var deleteCallback = function (value, ctx) { return ctx.value = null; };\n\n function createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection(whereClause, keyRangeGenerator) {\n this.db = db;\n var keyRange = AnyRange, error = null;\n if (keyRangeGenerator)\n try {\n keyRange = keyRangeGenerator();\n }\n catch (ex) {\n error = ex;\n }\n var whereCtx = whereClause._ctx;\n var table = whereCtx.table;\n var readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true,\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error,\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n });\n }\n\n function simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n }\n function simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n }\n\n function fail(collectionOrWhereClause, err, T) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection(collectionOrWhereClause) :\n collectionOrWhereClause;\n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n }\n function emptyCollection(whereClause) {\n return new whereClause.Collection(whereClause, function () { return rangeEqual(\"\"); }).limit(0);\n }\n function upperFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toUpperCase(); } :\n function (s) { return s.toLowerCase(); };\n }\n function lowerFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toLowerCase(); } :\n function (s) { return s.toUpperCase(); };\n }\n function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0)\n return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0)\n return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0)\n return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0)\n llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\")\n return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\")\n return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n }\n function addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;\n if (!needles.every(function (s) { return typeof s === 'string'; })) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle) {\n return { lower: lower(needle), upper: upper(needle) };\n }).sort(function (a, b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb) { return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb) { return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n var c = new whereClause.Collection(whereClause, function () { return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); });\n c._ondirectionchange = function (direction) {\n initDirection(direction);\n };\n var firstPossibleNeedle = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n if (typeof key !== 'string')\n return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n }\n else {\n var lowestPossibleCasing = null;\n for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n if (casing === null && lowestPossibleCasing === null)\n firstPossibleNeedle = i + 1;\n else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n }\n else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n }\n function createRange(lower, upper, lowerOpen, upperOpen) {\n return {\n type: 2 ,\n lower: lower,\n upper: upper,\n lowerOpen: lowerOpen,\n upperOpen: upperOpen\n };\n }\n function rangeEqual(value) {\n return {\n type: 1 ,\n lower: value,\n upper: value\n };\n }\n\n var WhereClause = (function () {\n function WhereClause() {\n }\n Object.defineProperty(WhereClause.prototype, \"Collection\", {\n get: function () {\n return this._ctx.table.db.Collection;\n },\n enumerable: false,\n configurable: true\n });\n WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n includeLower = includeLower !== false;\n includeUpper = includeUpper === true;\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this);\n return new this.Collection(this, function () { return createRange(lower, upper, !includeLower, !includeUpper); });\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n };\n WhereClause.prototype.equals = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return rangeEqual(value); });\n };\n WhereClause.prototype.above = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, true); });\n };\n WhereClause.prototype.aboveOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, false); });\n };\n WhereClause.prototype.below = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value, false, true); });\n };\n WhereClause.prototype.belowOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value); });\n };\n WhereClause.prototype.startsWith = function (str) {\n if (typeof str !== 'string')\n return fail(this, STRING_EXPECTED);\n return this.between(str, str + maxString, true, true);\n };\n WhereClause.prototype.startsWithIgnoreCase = function (str) {\n if (str === \"\")\n return this.startsWith(str);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x.indexOf(a[0]) === 0; }, [str], maxString);\n };\n WhereClause.prototype.equalsIgnoreCase = function (str) {\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x === a[0]; }, [str], \"\");\n };\n WhereClause.prototype.anyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.indexOf(x) !== -1; }, set, \"\");\n };\n WhereClause.prototype.startsWithAnyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.some(function (n) { return x.indexOf(n) === 0; }); }, set, maxString);\n };\n WhereClause.prototype.anyOf = function () {\n var _this = this;\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n var compare = this._cmp;\n try {\n set.sort(compare);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n if (set.length === 0)\n return emptyCollection(this);\n var c = new this.Collection(this, function () { return createRange(set[0], set[set.length - 1]); });\n c._ondirectionchange = function (direction) {\n compare = (direction === \"next\" ?\n _this._ascending :\n _this._descending);\n set.sort(compare);\n };\n var i = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (compare(key, set[i]) > 0) {\n ++i;\n if (i === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (compare(key, set[i]) === 0) {\n return true;\n }\n else {\n advance(function () { cursor.continue(set[i]); });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.notEqual = function (value) {\n return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.noneOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return new this.Collection(this);\n try {\n set.sort(this._ascending);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var ranges = set.reduce(function (res, val) { return res ?\n res.concat([[res[res.length - 1][1], val]]) :\n [[minKey, val]]; }, null);\n ranges.push([set[set.length - 1], this.db._maxKey]);\n return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.inAnyRange = function (ranges, options) {\n var _this = this;\n var cmp = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max;\n if (ranges.length === 0)\n return emptyCollection(this);\n if (!ranges.every(function (range) {\n return range[0] !== undefined &&\n range[1] !== undefined &&\n ascending(range[0], range[1]) <= 0;\n })) {\n return fail(this, \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\", exceptions.InvalidArgument);\n }\n var includeLowers = !options || options.includeLowers !== false;\n var includeUppers = options && options.includeUppers === true;\n function addRange(ranges, newRange) {\n var i = 0, l = ranges.length;\n for (; i < l; ++i) {\n var range = ranges[i];\n if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n range[0] = min(range[0], newRange[0]);\n range[1] = max(range[1], newRange[1]);\n break;\n }\n }\n if (i === l)\n ranges.push(newRange);\n return ranges;\n }\n var sortDirection = ascending;\n function rangeSorter(a, b) { return sortDirection(a[0], b[0]); }\n var set;\n try {\n set = ranges.reduce(addRange, []);\n set.sort(rangeSorter);\n }\n catch (ex) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var rangePos = 0;\n var keyIsBeyondCurrentEntry = includeUppers ?\n function (key) { return ascending(key, set[rangePos][1]) > 0; } :\n function (key) { return ascending(key, set[rangePos][1]) >= 0; };\n var keyIsBeforeCurrentEntry = includeLowers ?\n function (key) { return descending(key, set[rangePos][0]) > 0; } :\n function (key) { return descending(key, set[rangePos][0]) >= 0; };\n function keyWithinCurrentRange(key) {\n return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n }\n var checkKey = keyIsBeyondCurrentEntry;\n var c = new this.Collection(this, function () { return createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers); });\n c._ondirectionchange = function (direction) {\n if (direction === \"next\") {\n checkKey = keyIsBeyondCurrentEntry;\n sortDirection = ascending;\n }\n else {\n checkKey = keyIsBeforeCurrentEntry;\n sortDirection = descending;\n }\n set.sort(rangeSorter);\n };\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (checkKey(key)) {\n ++rangePos;\n if (rangePos === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (keyWithinCurrentRange(key)) {\n return true;\n }\n else if (_this._cmp(key, set[rangePos][1]) === 0 || _this._cmp(key, set[rangePos][0]) === 0) {\n return false;\n }\n else {\n advance(function () {\n if (sortDirection === ascending)\n cursor.continue(set[rangePos][0]);\n else\n cursor.continue(set[rangePos][1]);\n });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.startsWithAnyOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (!set.every(function (s) { return typeof s === 'string'; })) {\n return fail(this, \"startsWithAnyOf() only works with strings\");\n }\n if (set.length === 0)\n return emptyCollection(this);\n return this.inAnyRange(set.map(function (str) { return [str, str + maxString]; }));\n };\n return WhereClause;\n }());\n\n function createWhereClauseConstructor(db) {\n return makeClassConstructor(WhereClause.prototype, function WhereClause(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n this._cmp = this._ascending = cmp;\n this._descending = function (a, b) { return cmp(b, a); };\n this._max = function (a, b) { return cmp(a, b) > 0 ? a : b; };\n this._min = function (a, b) { return cmp(a, b) < 0 ? a : b; };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n if (!this._IDBKeyRange)\n throw new exceptions.MissingAPI();\n });\n }\n\n function eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n }\n function preventDefault(event) {\n if (event.stopPropagation)\n event.stopPropagation();\n if (event.preventDefault)\n event.preventDefault();\n }\n\n var DEXIE_STORAGE_MUTATED_EVENT_NAME = 'storagemutated';\n var STORAGE_MUTATED_DOM_EVENT_NAME = 'x-storagemutated-1';\n var globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME);\n\n var Transaction = (function () {\n function Transaction() {\n }\n Transaction.prototype._lock = function () {\n assert(!PSD.global);\n ++this._reculock;\n if (this._reculock === 1 && !PSD.global)\n PSD.lockOwnerFor = this;\n return this;\n };\n Transaction.prototype._unlock = function () {\n assert(!PSD.global);\n if (--this._reculock === 0) {\n if (!PSD.global)\n PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try {\n usePSD(fnAndPSD[1], fnAndPSD[0]);\n }\n catch (e) { }\n }\n }\n return this;\n };\n Transaction.prototype._locked = function () {\n return this._reculock && PSD.lockOwnerFor !== this;\n };\n Transaction.prototype.create = function (idbtrans) {\n var _this = this;\n if (!this.mode)\n return this;\n var idbdb = this.db.idbdb;\n var dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active)\n throw new exceptions.TransactionInactive();\n assert(this._completion._state === null);\n idbtrans = this.idbtrans = idbtrans ||\n (this.db.core\n ? this.db.core.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })\n : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }));\n idbtrans.onerror = wrap(function (ev) {\n preventDefault(ev);\n _this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(function (ev) {\n preventDefault(ev);\n _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n _this.active = false;\n _this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(function () {\n _this.active = false;\n _this._resolve();\n if ('mutatedParts' in idbtrans) {\n globalEvents.storagemutated.fire(idbtrans[\"mutatedParts\"]);\n }\n });\n return this;\n };\n Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n var _this = this;\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n if (this._locked()) {\n return new DexiePromise(function (resolve, reject) {\n _this._blockedFuncs.push([function () {\n _this._promise(mode, fn, bWriteLock).then(resolve, reject);\n }, PSD]);\n });\n }\n else if (bWriteLock) {\n return newScope(function () {\n var p = new DexiePromise(function (resolve, reject) {\n _this._lock();\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p.finally(function () { return _this._unlock(); });\n p._lib = true;\n return p;\n });\n }\n else {\n var p = new DexiePromise(function (resolve, reject) {\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p._lib = true;\n return p;\n }\n };\n Transaction.prototype._root = function () {\n return this.parent ? this.parent._root() : this;\n };\n Transaction.prototype.waitFor = function (promiseLike) {\n var root = this._root();\n var promise = DexiePromise.resolve(promiseLike);\n if (root._waitingFor) {\n root._waitingFor = root._waitingFor.then(function () { return promise; });\n }\n else {\n root._waitingFor = promise;\n root._waitingQueue = [];\n var store = root.idbtrans.objectStore(root.storeNames[0]);\n (function spin() {\n ++root._spinCount;\n while (root._waitingQueue.length)\n (root._waitingQueue.shift())();\n if (root._waitingFor)\n store.get(-Infinity).onsuccess = spin;\n }());\n }\n var currentWaitPromise = root._waitingFor;\n return new DexiePromise(function (resolve, reject) {\n promise.then(function (res) { return root._waitingQueue.push(wrap(resolve.bind(null, res))); }, function (err) { return root._waitingQueue.push(wrap(reject.bind(null, err))); }).finally(function () {\n if (root._waitingFor === currentWaitPromise) {\n root._waitingFor = null;\n }\n });\n });\n };\n Transaction.prototype.abort = function () {\n if (this.active) {\n this.active = false;\n if (this.idbtrans)\n this.idbtrans.abort();\n this._reject(new exceptions.Abort());\n }\n };\n Transaction.prototype.table = function (tableName) {\n var memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n var tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n }\n var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n };\n return Transaction;\n }());\n\n function createTransactionConstructor(db) {\n return makeClassConstructor(Transaction.prototype, function Transaction(mode, storeNames, dbschema, chromeTransactionDurability, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.chromeTransactionDurability = chromeTransactionDurability;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0;\n this._completion = new DexiePromise(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n });\n this._completion.then(function () {\n _this.active = false;\n _this.on.complete.fire();\n }, function (e) {\n var wasActive = _this.active;\n _this.active = false;\n _this.on.error.fire(e);\n _this.parent ?\n _this.parent._reject(e) :\n wasActive && _this.idbtrans && _this.idbtrans.abort();\n return rejection(e);\n });\n });\n }\n\n function createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) {\n return {\n name: name,\n keyPath: keyPath,\n unique: unique,\n multi: multi,\n auto: auto,\n compound: compound,\n src: (unique && !isPrimKey ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n };\n }\n function nameFromKeyPath(keyPath) {\n return typeof keyPath === 'string' ?\n keyPath :\n keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : \"\";\n }\n\n function createTableSchema(name, primKey, indexes) {\n return {\n name: name,\n primKey: primKey,\n indexes: indexes,\n mappedClass: null,\n idxByName: arrayToObject(indexes, function (index) { return [index.name, index]; })\n };\n }\n\n function safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n }\n var getMaxKey = function (IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n getMaxKey = function () { return [[]]; };\n return [[]];\n }\n catch (e) {\n getMaxKey = function () { return maxString; };\n return maxString;\n }\n };\n\n function getKeyExtractor(keyPath) {\n if (keyPath == null) {\n return function () { return undefined; };\n }\n else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n }\n function getSinglePathKeyExtractor(keyPath) {\n var split = keyPath.split('.');\n if (split.length === 1) {\n return function (obj) { return obj[keyPath]; };\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n }\n\n function arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n }\n var _id_counter = 0;\n function getKeyPathAlias(keyPath) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n \"[\".concat(keyPath.join('+'), \"]\");\n }\n function createDBCore(db, IdbKeyRange, tmpTrans) {\n function extractSchema(db, trans) {\n var tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(function (table) { return trans.objectStore(table); }).map(function (store) {\n var keyPath = store.keyPath, autoIncrement = store.autoIncrement;\n var compound = isArray(keyPath);\n var outbound = keyPath == null;\n var indexByKeyPath = {};\n var result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound: outbound,\n compound: compound,\n keyPath: keyPath,\n autoIncrement: autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n },\n indexes: arrayify(store.indexNames).map(function (indexName) { return store.index(indexName); })\n .map(function (index) {\n var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath = index.keyPath;\n var compound = isArray(keyPath);\n var result = {\n name: name,\n compound: compound,\n keyPath: keyPath,\n unique: unique,\n multiEntry: multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: function (keyPath) { return indexByKeyPath[getKeyPathAlias(keyPath)]; }\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n };\n }\n function makeIDBKeyRange(range) {\n if (range.type === 3 )\n return null;\n if (range.type === 4 )\n throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen;\n var idbRange = lower === undefined ?\n upper === undefined ?\n null :\n IdbKeyRange.upperBound(upper, !!upperOpen) :\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) :\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n function createDbCoreTable(tableSchema) {\n var tableName = tableSchema.name;\n function mutate(_a) {\n var trans = _a.trans, type = _a.type, keys = _a.keys, values = _a.values, range = _a.range;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var outbound = store.keyPath == null;\n var isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error(\"Invalid operation type: \" + type);\n var length = (keys || values || { length: 1 }).length;\n if (keys && values && keys.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n return resolve({ numFailures: 0, failures: {}, results: [], lastResult: undefined });\n var req;\n var reqs = [];\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n };\n if (type === 'deleteRange') {\n if (range.type === 4 )\n return resolve({ numFailures: numFailures, failures: failures, results: [], lastResult: undefined });\n if (range.type === 3 )\n reqs.push(req = store.clear());\n else\n reqs.push(req = store.delete(makeIDBKeyRange(range)));\n }\n else {\n var _a = isAddOrPut ?\n outbound ?\n [values, keys] :\n [values, null] :\n [keys, null], args1 = _a[0], args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = (args2 && args2[i] !== undefined ?\n store[type](args1[i], args2[i]) :\n store[type](args1[i])));\n req.onerror = errorHandler;\n }\n }\n else {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = store[type](args1[i]));\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n reqs.forEach(function (req, i) { return req.error != null && (failures[i] = req.error); });\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: type === \"delete\" ? keys : reqs.map(function (req) { return req.result; }),\n lastResult: lastResult\n });\n };\n req.onerror = function (event) {\n errorHandler(event);\n done(event);\n };\n req.onsuccess = done;\n });\n }\n function openCursor(_a) {\n var trans = _a.trans, values = _a.values, query = _a.query, reverse = _a.reverse, unique = _a.unique;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n var direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n var req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(function (ev) {\n var cursor = req.result;\n if (!cursor) {\n resolve(null);\n return;\n }\n cursor.___id = ++_id_counter;\n cursor.done = false;\n var _cursorContinue = cursor.continue.bind(cursor);\n var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey)\n _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n var _cursorAdvance = cursor.advance.bind(cursor);\n var doThrowCursorIsNotStarted = function () { throw new Error(\"Cursor not started\"); };\n var doThrowCursorIsStopped = function () { throw new Error(\"Cursor not stopped\"); };\n cursor.trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function () {\n var _this = this;\n var gotOne = 1;\n return this.start(function () { return gotOne-- ? _this.continue() : _this.stop(); }).then(function () { return _this; });\n };\n cursor.start = function (callback) {\n var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = function (value) {\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n var guardedCallback = function () {\n if (req.result) {\n try {\n callback();\n }\n catch (err) {\n cursor.fail(err);\n }\n }\n else {\n cursor.done = true;\n cursor.start = function () { throw new Error(\"Cursor behind last entry\"); };\n cursor.stop();\n }\n };\n req.onsuccess = wrap(function (ev) {\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject);\n });\n }\n function query(hasGetAll) {\n return function (request) {\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var trans = request.trans, values = request.values, limit = request.limit, query = request.query;\n var nonInfinitLimit = limit === Infinity ? undefined : limit;\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0)\n return resolve({ result: [] });\n if (hasGetAll) {\n var req = values ?\n source.getAll(idbKeyRange, nonInfinitLimit) :\n source.getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = function (event) { return resolve({ result: event.target.result }); };\n req.onerror = eventRejectHandler(reject);\n }\n else {\n var count_1 = 0;\n var req_1 = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange);\n var result_1 = [];\n req_1.onsuccess = function (event) {\n var cursor = req_1.result;\n if (!cursor)\n return resolve({ result: result_1 });\n result_1.push(values ? cursor.value : cursor.primaryKey);\n if (++count_1 === limit)\n return resolve({ result: result_1 });\n cursor.continue();\n };\n req_1.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n return {\n name: tableName,\n schema: tableSchema,\n mutate: mutate,\n getMany: function (_a) {\n var trans = _a.trans, keys = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null)\n ;\n if (++callbackCount === keyCount)\n resolve(result);\n };\n var errorHandler = eventRejectHandler(reject);\n for (var i = 0; i < length; ++i) {\n var key = keys[i];\n if (key != null) {\n req = store.get(keys[i]);\n req._pos = i;\n req.onsuccess = successHandler;\n req.onerror = errorHandler;\n ++keyCount;\n }\n }\n if (keyCount === 0)\n resolve(result);\n });\n },\n get: function (_a) {\n var trans = _a.trans, key = _a.key;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var req = store.get(key);\n req.onsuccess = function (event) { return resolve(event.target.result); };\n req.onerror = eventRejectHandler(reject);\n });\n },\n query: query(hasGetAll),\n openCursor: openCursor,\n count: function (_a) {\n var query = _a.query, trans = _a.trans;\n var index = query.index, range = query.range;\n return new Promise(function (resolve, reject) {\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(function (ev) { return resolve(ev.target.result); });\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n var _a = extractSchema(db, tmpTrans), schema = _a.schema, hasGetAll = _a.hasGetAll;\n var tables = schema.tables.map(function (tableSchema) { return createDbCoreTable(tableSchema); });\n var tableMap = {};\n tables.forEach(function (table) { return tableMap[table.name] = table; });\n return {\n stack: \"dbcore\",\n transaction: db.transaction.bind(db),\n table: function (name) {\n var result = tableMap[name];\n if (!result)\n throw new Error(\"Table '\".concat(name, \"' not found\"));\n return tableMap[name];\n },\n MIN_KEY: -Infinity,\n MAX_KEY: getMaxKey(IdbKeyRange),\n schema: schema\n };\n }\n\n function createMiddlewareStack(stackImpl, middlewares) {\n return middlewares.reduce(function (down, _a) {\n var create = _a.create;\n return (__assign(__assign({}, down), create(down)));\n }, stackImpl);\n }\n function createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange; _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, IDBKeyRange, tmpTrans), middlewares.dbcore);\n return {\n dbcore: dbcore\n };\n }\n function generateMiddlewareStacks(db, tmpTrans) {\n var idbdb = tmpTrans.db;\n var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore;\n db.tables.forEach(function (table) {\n var tableName = table.name;\n if (db.core.schema.tables.some(function (tbl) { return tbl.name === tableName; })) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n }\n\n function setApiOnPlace(db, objs, tableNames, dbschema) {\n tableNames.forEach(function (tableName) {\n var schema = dbschema[tableName];\n objs.forEach(function (obj) {\n var propDesc = getPropertyDescriptor(obj, tableName);\n if (!propDesc || (\"value\" in propDesc && propDesc.value === undefined)) {\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n setProp(obj, tableName, {\n get: function () { return this.table(tableName); },\n set: function (value) {\n defineProperty(this, tableName, { value: value, writable: true, configurable: true, enumerable: true });\n }\n });\n }\n else {\n obj[tableName] = new db.Table(tableName, schema);\n }\n }\n });\n });\n }\n function removeTablesApi(db, objs) {\n objs.forEach(function (obj) {\n for (var key in obj) {\n if (obj[key] instanceof db.Table)\n delete obj[key];\n }\n });\n }\n function lowerVersionFirst(a, b) {\n return a._cfg.version - b._cfg.version;\n }\n function runUpgraders(db, oldVersion, idbUpgradeTrans, reject) {\n var globalSchema = db._dbSchema;\n if (idbUpgradeTrans.objectStoreNames.contains('$meta') && !globalSchema.$meta) {\n globalSchema.$meta = createTableSchema(\"$meta\", parseIndexSyntax(\"\")[0], []);\n db._storeNames.push('$meta');\n }\n var trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n trans.create(idbUpgradeTrans);\n trans._completion.catch(reject);\n var rejectTransaction = trans._reject.bind(trans);\n var transless = PSD.transless || PSD;\n newScope(function () {\n PSD.trans = trans;\n PSD.transless = transless;\n if (oldVersion === 0) {\n keys(globalSchema).forEach(function (tableName) {\n createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n });\n generateMiddlewareStacks(db, idbUpgradeTrans);\n DexiePromise.follow(function () { return db.on.populate.fire(trans); }).catch(rejectTransaction);\n }\n else {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n return getExistingVersion(db, trans, oldVersion)\n .then(function (oldVersion) { return updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans); })\n .catch(rejectTransaction);\n }\n });\n }\n function patchCurrentVersion(db, idbUpgradeTrans) {\n createMissingTables(db._dbSchema, idbUpgradeTrans);\n if (idbUpgradeTrans.db.version % 10 === 0 && !idbUpgradeTrans.objectStoreNames.contains('$meta')) {\n idbUpgradeTrans.db.createObjectStore('$meta').add(Math.ceil((idbUpgradeTrans.db.version / 10) - 1), 'version');\n }\n var globalSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n adjustToExistingIndexNames(db, db._dbSchema, idbUpgradeTrans);\n var diff = getSchemaDiff(globalSchema, db._dbSchema);\n var _loop_1 = function (tableChange) {\n if (tableChange.change.length || tableChange.recreate) {\n console.warn(\"Unable to patch indexes of table \".concat(tableChange.name, \" because it has changes on the type of index or primary key.\"));\n return { value: void 0 };\n }\n var store = idbUpgradeTrans.objectStore(tableChange.name);\n tableChange.add.forEach(function (idx) {\n if (debug)\n console.debug(\"Dexie upgrade patch: Creating missing index \".concat(tableChange.name, \".\").concat(idx.src));\n addIndex(store, idx);\n });\n };\n for (var _i = 0, _a = diff.change; _i < _a.length; _i++) {\n var tableChange = _a[_i];\n var state_1 = _loop_1(tableChange);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n }\n function getExistingVersion(db, trans, oldVersion) {\n if (trans.storeNames.includes('$meta')) {\n return trans.table('$meta').get('version').then(function (metaVersion) {\n return metaVersion != null ? metaVersion : oldVersion;\n });\n }\n else {\n return DexiePromise.resolve(oldVersion);\n }\n }\n function updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) {\n var queue = [];\n var versions = db._versions;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n var versToRun = versions.filter(function (v) { return v._cfg.version >= oldVersion; });\n if (versToRun.length === 0) {\n return DexiePromise.resolve();\n }\n versToRun.forEach(function (version) {\n queue.push(function () {\n var oldSchema = globalSchema;\n var newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n globalSchema = db._dbSchema = newSchema;\n var diff = getSchemaDiff(oldSchema, newSchema);\n diff.add.forEach(function (tuple) {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n diff.change.forEach(function (change) {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n }\n else {\n var store_1 = idbUpgradeTrans.objectStore(change.name);\n change.add.forEach(function (idx) { return addIndex(store_1, idx); });\n change.change.forEach(function (idx) {\n store_1.deleteIndex(idx.name);\n addIndex(store_1, idx);\n });\n change.del.forEach(function (idxName) { return store_1.deleteIndex(idxName); });\n }\n });\n var contentUpgrade = version._cfg.contentUpgrade;\n if (contentUpgrade && version._cfg.version > oldVersion) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {};\n var upgradeSchema_1 = shallowClone(newSchema);\n diff.del.forEach(function (table) {\n upgradeSchema_1[table] = oldSchema[table];\n });\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n trans.schema = upgradeSchema_1;\n var contentUpgradeIsAsync_1 = isAsyncFunction(contentUpgrade);\n if (contentUpgradeIsAsync_1) {\n incrementExpectedAwaits();\n }\n var returnValue_1;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue_1 = contentUpgrade(trans);\n if (returnValue_1) {\n if (contentUpgradeIsAsync_1) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue_1.then(decrementor, decrementor);\n }\n }\n });\n return (returnValue_1 && typeof returnValue_1.then === 'function' ?\n DexiePromise.resolve(returnValue_1) : promiseFollowed.then(function () { return returnValue_1; }));\n }\n });\n queue.push(function (idbtrans) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n queue.push(function (idbtrans) {\n if (db.idbdb.objectStoreNames.contains('$meta')) {\n if (Math.ceil(db.idbdb.version / 10) === version._cfg.version) {\n db.idbdb.deleteObjectStore('$meta');\n delete db._dbSchema.$meta;\n db._storeNames = db._storeNames.filter(function (name) { return name !== '$meta'; });\n }\n else {\n idbtrans.objectStore('$meta').put(version._cfg.version, 'version');\n }\n }\n });\n });\n function runQueue() {\n return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n DexiePromise.resolve();\n }\n return runQueue().then(function () {\n createMissingTables(globalSchema, idbUpgradeTrans);\n });\n }\n function getSchemaDiff(oldSchema, newSchema) {\n var diff = {\n del: [],\n add: [],\n change: []\n };\n var table;\n for (table in oldSchema) {\n if (!newSchema[table])\n diff.del.push(table);\n }\n for (table in newSchema) {\n var oldDef = oldSchema[table], newDef = newSchema[table];\n if (!oldDef) {\n diff.add.push([table, newDef]);\n }\n else {\n var change = {\n name: table,\n def: newDef,\n recreate: false,\n del: [],\n add: [],\n change: []\n };\n if ((\n '' + (oldDef.primKey.keyPath || '')) !== ('' + (newDef.primKey.keyPath || '')) ||\n (oldDef.primKey.auto !== newDef.primKey.auto)) {\n change.recreate = true;\n diff.change.push(change);\n }\n else {\n var oldIndexes = oldDef.idxByName;\n var newIndexes = newDef.idxByName;\n var idxName = void 0;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName])\n change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];\n if (!oldIdx)\n change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src)\n change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n }\n function createTable(idbtrans, tableName, primKey, indexes) {\n var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto });\n indexes.forEach(function (idx) { return addIndex(store, idx); });\n return store;\n }\n function createMissingTables(newSchema, idbtrans) {\n keys(newSchema).forEach(function (tableName) {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n if (debug)\n console.debug('Dexie: Creating missing table', tableName);\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n }\n function deleteRemovedTables(newSchema, idbtrans) {\n [].slice.call(idbtrans.db.objectStoreNames).forEach(function (storeName) {\n return newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName);\n });\n }\n function addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n }\n function buildGlobalSchema(db, idbdb, tmpTrans) {\n var globalSchema = {};\n var dbStoreNames = slice(idbdb.objectStoreNames, 0);\n dbStoreNames.forEach(function (storeName) {\n var store = tmpTrans.objectStore(storeName);\n var keyPath = store.keyPath;\n var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || \"\", true, false, !!store.autoIncrement, keyPath && typeof keyPath !== \"string\", true);\n var indexes = [];\n for (var j = 0; j < store.indexNames.length; ++j) {\n var idbindex = store.index(store.indexNames[j]);\n keyPath = idbindex.keyPath;\n var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== \"string\", false);\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n return globalSchema;\n }\n function readGlobalSchema(db, idbdb, tmpTrans) {\n db.verno = idbdb.version / 10;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n db._storeNames = slice(idbdb.objectStoreNames, 0);\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n }\n function verifyInstalledSchema(db, tmpTrans) {\n var installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n var diff = getSchemaDiff(installedSchema, db._dbSchema);\n return !(diff.add.length || diff.change.some(function (ch) { return ch.add.length || ch.change.length; }));\n }\n function adjustToExistingIndexNames(db, schema, idbtrans) {\n var storeNames = idbtrans.db.objectStoreNames;\n for (var i = 0; i < storeNames.length; ++i) {\n var storeName = storeNames[i];\n var store = idbtrans.objectStore(storeName);\n db._hasGetAll = 'getAll' in store;\n for (var j = 0; j < store.indexNames.length; ++j) {\n var indexName = store.indexNames[j];\n var keyPath = store.index(indexName).keyPath;\n var dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n if (schema[storeName]) {\n var indexSpec = schema[storeName].idxByName[dexieName];\n if (indexSpec) {\n indexSpec.name = indexName;\n delete schema[storeName].idxByName[dexieName];\n schema[storeName].idxByName[indexName] = indexSpec;\n }\n }\n }\n }\n if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) {\n db._hasGetAll = false;\n }\n }\n function parseIndexSyntax(primKeyAndIndexes) {\n return primKeyAndIndexes.split(',').map(function (index, indexNum) {\n index = index.trim();\n var name = index.replace(/([&*]|\\+\\+)/g, \"\");\n var keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n return createIndexSpec(name, keyPath || null, /\\&/.test(index), /\\*/.test(index), /\\+\\+/.test(index), isArray(keyPath), indexNum === 0);\n });\n }\n\n var Version = (function () {\n function Version() {\n }\n Version.prototype._parseStoresSpec = function (stores, outSchema) {\n keys(stores).forEach(function (tableName) {\n if (stores[tableName] !== null) {\n var indexes = parseIndexSyntax(stores[tableName]);\n var primKey = indexes.shift();\n primKey.unique = true;\n if (primKey.multi)\n throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n indexes.forEach(function (idx) {\n if (idx.auto)\n throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!idx.keyPath)\n throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n });\n outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n }\n });\n };\n Version.prototype.stores = function (stores) {\n var db = this.db;\n this._cfg.storesSource = this._cfg.storesSource ?\n extend(this._cfg.storesSource, stores) :\n stores;\n var versions = db._versions;\n var storesSpec = {};\n var dbschema = {};\n versions.forEach(function (version) {\n extend(storesSpec, version._cfg.storesSource);\n dbschema = (version._cfg.dbschema = {});\n version._parseStoresSpec(storesSpec, dbschema);\n });\n db._dbSchema = dbschema;\n removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n db._storeNames = keys(dbschema);\n return this;\n };\n Version.prototype.upgrade = function (upgradeFunction) {\n this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);\n return this;\n };\n return Version;\n }());\n\n function createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n }\n\n function getDbNamesTable(indexedDB, IDBKeyRange) {\n var dbNamesDB = indexedDB[\"_dbNamesDB\"];\n if (!dbNamesDB) {\n dbNamesDB = indexedDB[\"_dbNamesDB\"] = new Dexie$1(DBNAMES_DB, {\n addons: [],\n indexedDB: indexedDB,\n IDBKeyRange: IDBKeyRange,\n });\n dbNamesDB.version(1).stores({ dbnames: \"name\" });\n }\n return dbNamesDB.table(\"dbnames\");\n }\n function hasDatabasesNative(indexedDB) {\n return indexedDB && typeof indexedDB.databases === \"function\";\n }\n function getDatabaseNames(_a) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n return hasDatabasesNative(indexedDB)\n ? Promise.resolve(indexedDB.databases()).then(function (infos) {\n return infos\n .map(function (info) { return info.name; })\n .filter(function (name) { return name !== DBNAMES_DB; });\n })\n : getDbNamesTable(indexedDB, IDBKeyRange).toCollection().primaryKeys();\n }\n function _onDatabaseCreated(_a, name) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).put({ name: name }).catch(nop);\n }\n function _onDatabaseDeleted(_a, name) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).delete(name).catch(nop);\n }\n\n function vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n }\n\n function idbReady() {\n var isSafari = !navigator.userAgentData &&\n /Safari\\//.test(navigator.userAgent) &&\n !/Chrom(e|ium)\\//.test(navigator.userAgent);\n if (!isSafari || !indexedDB.databases)\n return Promise.resolve();\n var intervalId;\n return new Promise(function (resolve) {\n var tryIdb = function () { return indexedDB.databases().finally(resolve); };\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(function () { return clearInterval(intervalId); });\n }\n\n var _a;\n function isEmptyRange(node) {\n return !(\"from\" in node);\n }\n var RangeSet = function (fromOrTree, to) {\n if (this) {\n extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 });\n }\n else {\n var rv = new RangeSet();\n if (fromOrTree && (\"d\" in fromOrTree)) {\n extend(rv, fromOrTree);\n }\n return rv;\n }\n };\n props(RangeSet.prototype, (_a = {\n add: function (rangeSet) {\n mergeRanges(this, rangeSet);\n return this;\n },\n addKey: function (key) {\n addRange(this, key, key);\n return this;\n },\n addKeys: function (keys) {\n var _this = this;\n keys.forEach(function (key) { return addRange(_this, key, key); });\n return this;\n }\n },\n _a[iteratorSymbol] = function () {\n return getRangeSetIterator(this);\n },\n _a));\n function addRange(target, from, to) {\n var diff = cmp(from, to);\n if (isNaN(diff))\n return;\n if (diff > 0)\n throw RangeError();\n if (isEmptyRange(target))\n return extend(target, { from: from, to: to, d: 1 });\n var left = target.l;\n var right = target.r;\n if (cmp(to, target.from) < 0) {\n left\n ? addRange(left, from, to)\n : (target.l = { from: from, to: to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.to) > 0) {\n right\n ? addRange(right, from, to)\n : (target.r = { from: from, to: to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.from) < 0) {\n target.from = from;\n target.l = null;\n target.d = right ? right.d + 1 : 1;\n }\n if (cmp(to, target.to) > 0) {\n target.to = to;\n target.r = null;\n target.d = target.l ? target.l.d + 1 : 1;\n }\n var rightWasCutOff = !target.r;\n if (left && !target.l) {\n mergeRanges(target, left);\n }\n if (right && rightWasCutOff) {\n mergeRanges(target, right);\n }\n }\n function mergeRanges(target, newSet) {\n function _addRangeSet(target, _a) {\n var from = _a.from, to = _a.to, l = _a.l, r = _a.r;\n addRange(target, from, to);\n if (l)\n _addRangeSet(target, l);\n if (r)\n _addRangeSet(target, r);\n }\n if (!isEmptyRange(newSet))\n _addRangeSet(target, newSet);\n }\n function rangesOverlap(rangeSet1, rangeSet2) {\n var i1 = getRangeSetIterator(rangeSet2);\n var nextResult1 = i1.next();\n if (nextResult1.done)\n return false;\n var a = nextResult1.value;\n var i2 = getRangeSetIterator(rangeSet1);\n var nextResult2 = i2.next(a.from);\n var b = nextResult2.value;\n while (!nextResult1.done && !nextResult2.done) {\n if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0)\n return true;\n cmp(a.from, b.from) < 0\n ? (a = (nextResult1 = i1.next(b.from)).value)\n : (b = (nextResult2 = i2.next(a.from)).value);\n }\n return false;\n }\n function getRangeSetIterator(node) {\n var state = isEmptyRange(node) ? null : { s: 0, n: node };\n return {\n next: function (key) {\n var keyProvided = arguments.length > 0;\n while (state) {\n switch (state.s) {\n case 0:\n state.s = 1;\n if (keyProvided) {\n while (state.n.l && cmp(key, state.n.from) < 0)\n state = { up: state, n: state.n.l, s: 1 };\n }\n else {\n while (state.n.l)\n state = { up: state, n: state.n.l, s: 1 };\n }\n case 1:\n state.s = 2;\n if (!keyProvided || cmp(key, state.n.to) <= 0)\n return { value: state.n, done: false };\n case 2:\n if (state.n.r) {\n state.s = 3;\n state = { up: state, n: state.n.r, s: 0 };\n continue;\n }\n case 3:\n state = state.up;\n }\n }\n return { done: true };\n },\n };\n }\n function rebalance(target) {\n var _a, _b;\n var diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);\n var r = diff > 1 ? \"r\" : diff < -1 ? \"l\" : \"\";\n if (r) {\n var l = r === \"r\" ? \"l\" : \"r\";\n var rootClone = __assign({}, target);\n var oldRootRight = target[r];\n target.from = oldRootRight.from;\n target.to = oldRootRight.to;\n target[r] = oldRootRight[r];\n rootClone[r] = oldRootRight[l];\n target[l] = rootClone;\n rootClone.d = computeDepth(rootClone);\n }\n target.d = computeDepth(target);\n }\n function computeDepth(_a) {\n var r = _a.r, l = _a.l;\n return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;\n }\n\n function extendObservabilitySet(target, newSet) {\n keys(newSet).forEach(function (part) {\n if (target[part])\n mergeRanges(target[part], newSet[part]);\n else\n target[part] = cloneSimpleObjectTree(newSet[part]);\n });\n return target;\n }\n\n function obsSetsOverlap(os1, os2) {\n return os1.all || os2.all || Object.keys(os1).some(function (key) { return os2[key] && rangesOverlap(os2[key], os1[key]); });\n }\n\n var cache = {};\n\n var unsignaledParts = {};\n var isTaskEnqueued = false;\n function signalSubscribersLazily(part, optimistic) {\n extendObservabilitySet(unsignaledParts, part);\n if (!isTaskEnqueued) {\n isTaskEnqueued = true;\n setTimeout(function () {\n isTaskEnqueued = false;\n var parts = unsignaledParts;\n unsignaledParts = {};\n signalSubscribersNow(parts, false);\n }, 0);\n }\n }\n function signalSubscribersNow(updatedParts, deleteAffectedCacheEntries) {\n if (deleteAffectedCacheEntries === void 0) { deleteAffectedCacheEntries = false; }\n var queriesToSignal = new Set();\n if (updatedParts.all) {\n for (var _i = 0, _a = Object.values(cache); _i < _a.length; _i++) {\n var tblCache = _a[_i];\n collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);\n }\n }\n else {\n for (var key in updatedParts) {\n var parts = /^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(key);\n if (parts) {\n var dbName = parts[1], tableName = parts[2];\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (tblCache)\n collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);\n }\n }\n }\n queriesToSignal.forEach(function (requery) { return requery(); });\n }\n function collectTableSubscribers(tblCache, updatedParts, outQueriesToSignal, deleteAffectedCacheEntries) {\n var updatedEntryLists = [];\n for (var _i = 0, _a = Object.entries(tblCache.queries.query); _i < _a.length; _i++) {\n var _b = _a[_i], indexName = _b[0], entries = _b[1];\n var filteredEntries = [];\n for (var _c = 0, entries_1 = entries; _c < entries_1.length; _c++) {\n var entry = entries_1[_c];\n if (obsSetsOverlap(updatedParts, entry.obsSet)) {\n entry.subscribers.forEach(function (requery) { return outQueriesToSignal.add(requery); });\n }\n else if (deleteAffectedCacheEntries) {\n filteredEntries.push(entry);\n }\n }\n if (deleteAffectedCacheEntries)\n updatedEntryLists.push([indexName, filteredEntries]);\n }\n if (deleteAffectedCacheEntries) {\n for (var _d = 0, updatedEntryLists_1 = updatedEntryLists; _d < updatedEntryLists_1.length; _d++) {\n var _e = updatedEntryLists_1[_d], indexName = _e[0], filteredEntries = _e[1];\n tblCache.queries.query[indexName] = filteredEntries;\n }\n }\n }\n\n function dexieOpen(db) {\n var state = db._state;\n var indexedDB = db._deps.indexedDB;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(function () { return state.dbOpenError ?\n rejection(state.dbOpenError) :\n db; });\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var openCanceller = state.openCanceller;\n var nativeVerToOpen = Math.round(db.verno * 10);\n var schemaPatchMode = false;\n function throwIfCancelled() {\n if (state.openCanceller !== openCanceller)\n throw new exceptions.DatabaseClosed('db.open() was cancelled');\n }\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null, wasCreated = false;\n var tryOpenDB = function () { return new DexiePromise(function (resolve, reject) {\n throwIfCancelled();\n if (!indexedDB)\n throw new exceptions.MissingAPI();\n var dbName = db.name;\n var req = state.autoSchema || !nativeVerToOpen ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, nativeVerToOpen);\n if (!req)\n throw new exceptions.MissingAPI();\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap(function (e) {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) {\n req.onerror = preventDefault;\n upgradeTransaction.abort();\n req.result.close();\n var delreq = indexedDB.deleteDatabase(dbName);\n delreq.onsuccess = delreq.onerror = wrap(function () {\n reject(new exceptions.NoSuchDatabase(\"Database \".concat(dbName, \" doesnt exist\")));\n });\n }\n else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n wasCreated = oldVer < 1;\n db.idbdb = req.result;\n if (schemaPatchMode) {\n patchCurrentVersion(db, upgradeTransaction);\n }\n runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n }\n }, reject);\n req.onsuccess = wrap(function () {\n upgradeTransaction = null;\n var idbdb = db.idbdb = req.result;\n var objectStoreNames = slice(idbdb.objectStoreNames);\n if (objectStoreNames.length > 0)\n try {\n var tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n if (state.autoSchema)\n readGlobalSchema(db, idbdb, tmpTrans);\n else {\n adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n if (!verifyInstalledSchema(db, tmpTrans) && !schemaPatchMode) {\n console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.\");\n idbdb.close();\n nativeVerToOpen = idbdb.version + 1;\n schemaPatchMode = true;\n return resolve(tryOpenDB());\n }\n }\n generateMiddlewareStacks(db, tmpTrans);\n }\n catch (e) {\n }\n connections.push(db);\n idbdb.onversionchange = wrap(function (ev) {\n state.vcFired = true;\n db.on(\"versionchange\").fire(ev);\n });\n idbdb.onclose = wrap(function (ev) {\n db.on(\"close\").fire(ev);\n });\n if (wasCreated)\n _onDatabaseCreated(db._deps, dbName);\n resolve();\n }, reject);\n }).catch(function (err) {\n switch (err === null || err === void 0 ? void 0 : err.name) {\n case \"UnknownError\":\n if (state.PR1398_maxLoop > 0) {\n state.PR1398_maxLoop--;\n console.warn('Dexie: Workaround for Chrome UnknownError on open()');\n return tryOpenDB();\n }\n break;\n case \"VersionError\":\n if (nativeVerToOpen > 0) {\n nativeVerToOpen = 0;\n return tryOpenDB();\n }\n break;\n }\n return DexiePromise.reject(err);\n }); };\n return DexiePromise.race([\n openCanceller,\n (typeof navigator === 'undefined' ? DexiePromise.resolve() : idbReady()).then(tryOpenDB)\n ]).then(function () {\n throwIfCancelled();\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () { return db.on.ready.fire(db.vip); })).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders_1 = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () { return remainders_1(db.vip); })).then(fireRemainders);\n }\n });\n }).finally(function () {\n if (state.openCanceller === openCanceller) {\n state.onReadyBeingFired = null;\n state.isBeingOpened = false;\n }\n }).catch(function (err) {\n state.dbOpenError = err;\n try {\n upgradeTransaction && upgradeTransaction.abort();\n }\n catch (_a) { }\n if (openCanceller === state.openCanceller) {\n db._close();\n }\n return rejection(err);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n }).then(function () {\n if (wasCreated) {\n var everything_1 = {};\n db.tables.forEach(function (table) {\n table.schema.indexes.forEach(function (idx) {\n if (idx.name)\n everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/\").concat(idx.name)] = new RangeSet(-Infinity, [[[]]]);\n });\n everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/\")] = everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/:dels\")] = new RangeSet(-Infinity, [[[]]]);\n });\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME).fire(everything_1);\n signalSubscribersNow(everything_1, true);\n }\n return db;\n });\n }\n\n function awaitIterator(iterator) {\n var callNext = function (result) { return iterator.next(result); }, doThrow = function (error) { return iterator.throw(error); }, onSuccess = step(callNext), onError = step(doThrow);\n function step(getNext) {\n return function (val) {\n var next = getNext(val), value = next.value;\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n return step(callNext)();\n }\n\n function extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n var i = arguments.length;\n if (i < 2)\n throw new exceptions.InvalidArgument(\"Too few arguments\");\n var args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n scopeFunc = args.pop();\n var tables = flatten(args);\n return [mode, tables, scopeFunc];\n }\n function enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n return DexiePromise.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n trans.explicit = true;\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n }\n else {\n try {\n trans.create();\n trans.idbtrans._explicit = true;\n db._state.PR1398_maxLoop = 3;\n }\n catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({ disableAutoOpen: false });\n return db.open().then(function () { return enterTransactionScope(db, mode, storeNames, null, scopeFunc); });\n }\n return rejection(ex);\n }\n }\n var scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var returnValue;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (scopeFuncIsAsync) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n }\n else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n returnValue = awaitIterator(returnValue);\n }\n }\n }, zoneProps);\n return (returnValue && typeof returnValue.then === 'function' ?\n DexiePromise.resolve(returnValue).then(function (x) { return trans.active ?\n x\n : rejection(new exceptions.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\")); })\n : promiseFollowed.then(function () { return returnValue; })).then(function (x) {\n if (parentTransaction)\n trans._resolve();\n return trans._completion.then(function () { return x; });\n }).catch(function (e) {\n trans._reject(e);\n return rejection(e);\n });\n });\n }\n\n function pad(a, value, count) {\n var result = isArray(a) ? a.slice() : [a];\n for (var i = 0; i < count; ++i)\n result.push(value);\n return result;\n }\n function createVirtualIndexMiddleware(down) {\n return __assign(__assign({}, down), { table: function (tableName) {\n var table = down.table(tableName);\n var schema = table.schema;\n var indexLookup = {};\n var allVirtualIndexes = [];\n function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) {\n var keyPathAlias = getKeyPathAlias(keyPath);\n var indexList = (indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || []);\n var keyLength = keyPath == null ? 0 : typeof keyPath === 'string' ? 1 : keyPath.length;\n var isVirtual = keyTail > 0;\n var virtualIndex = __assign(__assign({}, lowLevelIndex), { name: isVirtual\n ? \"\".concat(keyPathAlias, \"(virtual-from:\").concat(lowLevelIndex.name, \")\")\n : lowLevelIndex.name, lowLevelIndex: lowLevelIndex, isVirtual: isVirtual, keyTail: keyTail, keyLength: keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique });\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n var virtualKeyPath = keyLength === 2 ?\n keyPath[0] :\n keyPath.slice(0, keyLength - 1);\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort(function (a, b) { return a.keyTail - b.keyTail; });\n return virtualIndex;\n }\n var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n var index = _a[_i];\n addVirtualIndexes(index.keyPath, 0, index);\n }\n function findBestIndex(keyPath) {\n var result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n function translateRange(range, keyTail) {\n return {\n type: range.type === 1 ?\n 2 :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true,\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true\n };\n }\n function translateRequest(req) {\n var index = req.query.index;\n return index.isVirtual ? __assign(__assign({}, req), { query: {\n index: index.lowLevelIndex,\n range: translateRange(req.query.range, index.keyTail)\n } }) : req;\n }\n var result = __assign(__assign({}, table), { schema: __assign(__assign({}, schema), { primaryKey: primaryKey, indexes: allVirtualIndexes, getIndexByKeyPath: findBestIndex }), count: function (req) {\n return table.count(translateRequest(req));\n }, query: function (req) {\n return table.query(translateRequest(req));\n }, openCursor: function (req) {\n var _a = req.query.index, keyTail = _a.keyTail, isVirtual = _a.isVirtual, keyLength = _a.keyLength;\n if (!isVirtual)\n return table.openCursor(req);\n function createVirtualCursor(cursor) {\n function _continue(key) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(cursor.key.slice(0, keyLength)\n .concat(req.reverse\n ? down.MIN_KEY\n : down.MAX_KEY, keyTail)) :\n cursor.continue();\n }\n var virtualCursor = Object.create(cursor, {\n continue: { value: _continue },\n continuePrimaryKey: {\n value: function (key, primaryKey) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }\n },\n primaryKey: {\n get: function () {\n return cursor.primaryKey;\n }\n },\n key: {\n get: function () {\n var key = cursor.key;\n return keyLength === 1 ?\n key[0] :\n key.slice(0, keyLength);\n }\n },\n value: {\n get: function () {\n return cursor.value;\n }\n }\n });\n return virtualCursor;\n }\n return table.openCursor(translateRequest(req))\n .then(function (cursor) { return cursor && createVirtualCursor(cursor); });\n } });\n return result;\n } });\n }\n var virtualIndexMiddleware = {\n stack: \"dbcore\",\n name: \"VirtualIndexMiddleware\",\n level: 1,\n create: createVirtualIndexMiddleware\n };\n\n function getObjectDiff(a, b, rv, prfx) {\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach(function (prop) {\n if (!hasOwn(b, prop)) {\n rv[prfx + prop] = undefined;\n }\n else {\n var ap = a[prop], bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n var apTypeName = toStringTag(ap);\n var bpTypeName = toStringTag(bp);\n if (apTypeName !== bpTypeName) {\n rv[prfx + prop] = b[prop];\n }\n else if (apTypeName === 'Object') {\n getObjectDiff(ap, bp, rv, prfx + prop + '.');\n }\n else if (ap !== bp) {\n rv[prfx + prop] = b[prop];\n }\n }\n else if (ap !== bp)\n rv[prfx + prop] = b[prop];\n }\n });\n keys(b).forEach(function (prop) {\n if (!hasOwn(a, prop)) {\n rv[prfx + prop] = b[prop];\n }\n });\n return rv;\n }\n\n function getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete')\n return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n }\n\n var hooksMiddleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: function (downCore) { return (__assign(__assign({}, downCore), { table: function (tableName) {\n var downTable = downCore.table(tableName);\n var primaryKey = downTable.schema.primaryKey;\n var tableMiddleware = __assign(__assign({}, downTable), { mutate: function (req) {\n var dxTrans = PSD.trans;\n var _a = dxTrans.table(tableName).hook, deleting = _a.deleting, creating = _a.creating, updating = _a.updating;\n switch (req.type) {\n case 'add':\n if (creating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'put':\n if (creating.fire === nop && updating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'delete':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'deleteRange':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return deleteRange(req); }, true);\n }\n return downTable.mutate(req);\n function addPutOrDelete(req) {\n var dxTrans = PSD.trans;\n var keys = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys)\n throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), { keys: keys }) : __assign({}, req);\n if (req.type !== 'delete')\n req.values = __spreadArray([], req.values, true);\n if (req.keys)\n req.keys = __spreadArray([], req.keys, true);\n return getExistingValues(downTable, req, keys).then(function (existingValues) {\n var contexts = keys.map(function (key, i) {\n var existingValue = existingValues[i];\n var ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n }\n else if (req.type === 'add' || existingValue === undefined) {\n var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n }\n else {\n var objectDiff = getObjectDiff(existingValue, req.values[i]);\n var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges_1) {\n var requestedValue_1 = req.values[i];\n Object.keys(additionalChanges_1).forEach(function (keyPath) {\n if (hasOwn(requestedValue_1, keyPath)) {\n requestedValue_1[keyPath] = additionalChanges_1[keyPath];\n }\n else {\n setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]);\n }\n });\n }\n }\n return ctx;\n });\n return downTable.mutate(req).then(function (_a) {\n var failures = _a.failures, results = _a.results, numFailures = _a.numFailures, lastResult = _a.lastResult;\n for (var i = 0; i < keys.length; ++i) {\n var primKey = results ? results[i] : keys[i];\n var ctx = contexts[i];\n if (primKey == null) {\n ctx.onerror && ctx.onerror(failures[i]);\n }\n else {\n ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ?\n req.values[i] :\n primKey\n );\n }\n }\n return { failures: failures, results: results, numFailures: numFailures, lastResult: lastResult };\n }).catch(function (error) {\n contexts.forEach(function (ctx) { return ctx.onerror && ctx.onerror(error); });\n return Promise.reject(error);\n });\n });\n }\n function deleteRange(req) {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n function deleteNextChunk(trans, range, limit) {\n return downTable.query({ trans: trans, values: false, query: { index: primaryKey, range: range }, limit: limit })\n .then(function (_a) {\n var result = _a.result;\n return addPutOrDelete({ type: 'delete', keys: result, trans: trans }).then(function (res) {\n if (res.numFailures > 0)\n return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return { failures: [], numFailures: 0, lastResult: undefined };\n }\n else {\n return deleteNextChunk(trans, __assign(__assign({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit);\n }\n });\n });\n }\n } });\n return tableMiddleware;\n } })); }\n };\n function getExistingValues(table, req, effectiveKeys) {\n return req.type === \"add\"\n ? Promise.resolve([])\n : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: \"immutable\" });\n }\n\n function getFromTransactionCache(keys, cache, clone) {\n try {\n if (!cache)\n return null;\n if (cache.keys.length < keys.length)\n return null;\n var result = [];\n for (var i = 0, j = 0; i < cache.keys.length && j < keys.length; ++i) {\n if (cmp(cache.keys[i], keys[j]) !== 0)\n continue;\n result.push(clone ? deepClone(cache.values[i]) : cache.values[i]);\n ++j;\n }\n return result.length === keys.length ? result : null;\n }\n catch (_a) {\n return null;\n }\n }\n var cacheExistingValuesMiddleware = {\n stack: \"dbcore\",\n level: -1,\n create: function (core) {\n return {\n table: function (tableName) {\n var table = core.table(tableName);\n return __assign(__assign({}, table), { getMany: function (req) {\n if (!req.cache) {\n return table.getMany(req);\n }\n var cachedResult = getFromTransactionCache(req.keys, req.trans[\"_cache\"], req.cache === \"clone\");\n if (cachedResult) {\n return DexiePromise.resolve(cachedResult);\n }\n return table.getMany(req).then(function (res) {\n req.trans[\"_cache\"] = {\n keys: req.keys,\n values: req.cache === \"clone\" ? deepClone(res) : res,\n };\n return res;\n });\n }, mutate: function (req) {\n if (req.type !== \"add\")\n req.trans[\"_cache\"] = null;\n return table.mutate(req);\n } });\n },\n };\n },\n };\n\n function isCachableContext(ctx, table) {\n return (ctx.trans.mode === 'readonly' &&\n !!ctx.subscr &&\n !ctx.trans.explicit &&\n ctx.trans.db._options.cache !== 'disabled' &&\n !table.schema.primaryKey.outbound);\n }\n\n function isCachableRequest(type, req) {\n switch (type) {\n case 'query':\n return req.values && !req.unique;\n case 'get':\n return false;\n case 'getMany':\n return false;\n case 'count':\n return false;\n case 'openCursor':\n return false;\n }\n }\n\n var observabilityMiddleware = {\n stack: \"dbcore\",\n level: 0,\n name: \"Observability\",\n create: function (core) {\n var dbName = core.schema.name;\n var FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);\n return __assign(__assign({}, core), { transaction: function (stores, mode, options) {\n if (PSD.subscr && mode !== 'readonly') {\n throw new exceptions.ReadOnly(\"Readwrite transaction in liveQuery context. Querier source: \".concat(PSD.querier));\n }\n return core.transaction(stores, mode, options);\n }, table: function (tableName) {\n var table = core.table(tableName);\n var schema = table.schema;\n var primaryKey = schema.primaryKey, indexes = schema.indexes;\n var extractKey = primaryKey.extractKey, outbound = primaryKey.outbound;\n var indexesWithAutoIncPK = primaryKey.autoIncrement && indexes.filter(function (index) { return index.compound && index.keyPath.includes(primaryKey.keyPath); });\n var tableClone = __assign(__assign({}, table), { mutate: function (req) {\n var trans = req.trans;\n var mutatedParts = req.mutatedParts || (req.mutatedParts = {});\n var getRangeSet = function (indexName) {\n var part = \"idb://\".concat(dbName, \"/\").concat(tableName, \"/\").concat(indexName);\n return (mutatedParts[part] ||\n (mutatedParts[part] = new RangeSet()));\n };\n var pkRangeSet = getRangeSet(\"\");\n var delsRangeSet = getRangeSet(\":dels\");\n var type = req.type;\n var _a = req.type === \"deleteRange\"\n ? [req.range]\n : req.type === \"delete\"\n ? [req.keys]\n : req.values.length < 50\n ? [getEffectiveKeys(primaryKey, req).filter(function (id) { return id; }), req.values]\n : [], keys = _a[0], newObjs = _a[1];\n var oldCache = req.trans[\"_cache\"];\n if (isArray(keys)) {\n pkRangeSet.addKeys(keys);\n var oldObjs = type === 'delete' || keys.length === newObjs.length ? getFromTransactionCache(keys, oldCache) : null;\n if (!oldObjs) {\n delsRangeSet.addKeys(keys);\n }\n if (oldObjs || newObjs) {\n trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);\n }\n }\n else if (keys) {\n var range = { from: keys.lower, to: keys.upper };\n delsRangeSet.add(range);\n pkRangeSet.add(range);\n }\n else {\n pkRangeSet.add(FULL_RANGE);\n delsRangeSet.add(FULL_RANGE);\n schema.indexes.forEach(function (idx) { return getRangeSet(idx.name).add(FULL_RANGE); });\n }\n return table.mutate(req).then(function (res) {\n if (keys && (req.type === 'add' || req.type === 'put')) {\n pkRangeSet.addKeys(res.results);\n if (indexesWithAutoIncPK) {\n indexesWithAutoIncPK.forEach(function (idx) {\n var idxVals = req.values.map(function (v) { return idx.extractKey(v); });\n var pkPos = idx.keyPath.findIndex(function (prop) { return prop === primaryKey.keyPath; });\n res.results.forEach(function (pk) { return idxVals[pkPos] = pk; });\n getRangeSet(idx.name).addKeys(idxVals);\n });\n }\n }\n trans.mutatedParts = extendObservabilitySet(trans.mutatedParts || {}, mutatedParts);\n return res;\n });\n } });\n var getRange = function (_a) {\n var _b, _c;\n var _d = _a.query, index = _d.index, range = _d.range;\n return [\n index,\n new RangeSet((_b = range.lower) !== null && _b !== void 0 ? _b : core.MIN_KEY, (_c = range.upper) !== null && _c !== void 0 ? _c : core.MAX_KEY),\n ];\n };\n var readSubscribers = {\n get: function (req) { return [primaryKey, new RangeSet(req.key)]; },\n getMany: function (req) { return [primaryKey, new RangeSet().addKeys(req.keys)]; },\n count: getRange,\n query: getRange,\n openCursor: getRange,\n };\n keys(readSubscribers).forEach(function (method) {\n tableClone[method] = function (req) {\n var subscr = PSD.subscr;\n var isLiveQuery = !!subscr;\n var cachable = isCachableContext(PSD, table) && isCachableRequest(method, req);\n var obsSet = cachable\n ? req.obsSet = {}\n : subscr;\n if (isLiveQuery) {\n var getRangeSet = function (indexName) {\n var part = \"idb://\".concat(dbName, \"/\").concat(tableName, \"/\").concat(indexName);\n return (obsSet[part] ||\n (obsSet[part] = new RangeSet()));\n };\n var pkRangeSet_1 = getRangeSet(\"\");\n var delsRangeSet_1 = getRangeSet(\":dels\");\n var _a = readSubscribers[method](req), queriedIndex = _a[0], queriedRanges = _a[1];\n if (method === 'query' && queriedIndex.isPrimaryKey && !req.values) {\n delsRangeSet_1.add(queriedRanges);\n }\n else {\n getRangeSet(queriedIndex.name || \"\").add(queriedRanges);\n }\n if (!queriedIndex.isPrimaryKey) {\n if (method === \"count\") {\n delsRangeSet_1.add(FULL_RANGE);\n }\n else {\n var keysPromise_1 = method === \"query\" &&\n outbound &&\n req.values &&\n table.query(__assign(__assign({}, req), { values: false }));\n return table[method].apply(this, arguments).then(function (res) {\n if (method === \"query\") {\n if (outbound && req.values) {\n return keysPromise_1.then(function (_a) {\n var resultingKeys = _a.result;\n pkRangeSet_1.addKeys(resultingKeys);\n return res;\n });\n }\n var pKeys = req.values\n ? res.result.map(extractKey)\n : res.result;\n if (req.values) {\n pkRangeSet_1.addKeys(pKeys);\n }\n else {\n delsRangeSet_1.addKeys(pKeys);\n }\n }\n else if (method === \"openCursor\") {\n var cursor_1 = res;\n var wantValues_1 = req.values;\n return (cursor_1 &&\n Object.create(cursor_1, {\n key: {\n get: function () {\n delsRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.key;\n },\n },\n primaryKey: {\n get: function () {\n var pkey = cursor_1.primaryKey;\n delsRangeSet_1.addKey(pkey);\n return pkey;\n },\n },\n value: {\n get: function () {\n wantValues_1 && pkRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.value;\n },\n },\n }));\n }\n return res;\n });\n }\n }\n }\n return table[method].apply(this, arguments);\n };\n });\n return tableClone;\n } });\n },\n };\n function trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) {\n function addAffectedIndex(ix) {\n var rangeSet = getRangeSet(ix.name || \"\");\n function extractKey(obj) {\n return obj != null ? ix.extractKey(obj) : null;\n }\n var addKeyOrKeys = function (key) { return ix.multiEntry && isArray(key)\n ? key.forEach(function (key) { return rangeSet.addKey(key); })\n : rangeSet.addKey(key); };\n (oldObjs || newObjs).forEach(function (_, i) {\n var oldKey = oldObjs && extractKey(oldObjs[i]);\n var newKey = newObjs && extractKey(newObjs[i]);\n if (cmp(oldKey, newKey) !== 0) {\n if (oldKey != null)\n addKeyOrKeys(oldKey);\n if (newKey != null)\n addKeyOrKeys(newKey);\n }\n });\n }\n schema.indexes.forEach(addAffectedIndex);\n }\n\n function adjustOptimisticFromFailures(tblCache, req, res) {\n if (res.numFailures === 0)\n return req;\n if (req.type === 'deleteRange') {\n return null;\n }\n var numBulkOps = req.keys\n ? req.keys.length\n : 'values' in req && req.values\n ? req.values.length\n : 1;\n if (res.numFailures === numBulkOps) {\n return null;\n }\n var clone = __assign({}, req);\n if (isArray(clone.keys)) {\n clone.keys = clone.keys.filter(function (_, i) { return !(i in res.failures); });\n }\n if ('values' in clone && isArray(clone.values)) {\n clone.values = clone.values.filter(function (_, i) { return !(i in res.failures); });\n }\n return clone;\n }\n\n function isAboveLower(key, range) {\n return range.lower === undefined\n ? true\n : range.lowerOpen\n ? cmp(key, range.lower) > 0\n : cmp(key, range.lower) >= 0;\n }\n function isBelowUpper(key, range) {\n return range.upper === undefined\n ? true\n : range.upperOpen\n ? cmp(key, range.upper) < 0\n : cmp(key, range.upper) <= 0;\n }\n function isWithinRange(key, range) {\n return isAboveLower(key, range) && isBelowUpper(key, range);\n }\n\n function applyOptimisticOps(result, req, ops, table, cacheEntry, immutable) {\n if (!ops || ops.length === 0)\n return result;\n var index = req.query.index;\n var multiEntry = index.multiEntry;\n var queryRange = req.query.range;\n var primaryKey = table.schema.primaryKey;\n var extractPrimKey = primaryKey.extractKey;\n var extractIndex = index.extractKey;\n var extractLowLevelIndex = (index.lowLevelIndex || index).extractKey;\n var finalResult = ops.reduce(function (result, op) {\n var modifedResult = result;\n var includedValues = op.type === 'add' || op.type === 'put'\n ? op.values.filter(function (v) {\n var key = extractIndex(v);\n return multiEntry && isArray(key)\n ? key.some(function (k) { return isWithinRange(k, queryRange); })\n : isWithinRange(key, queryRange);\n }).map(function (v) {\n v = deepClone(v);\n if (immutable)\n Object.freeze(v);\n return v;\n })\n : [];\n switch (op.type) {\n case 'add':\n modifedResult = result.concat(req.values\n ? includedValues\n : includedValues.map(function (v) { return extractPrimKey(v); }));\n break;\n case 'put':\n var keySet_1 = new RangeSet().addKeys(op.values.map(function (v) { return extractPrimKey(v); }));\n modifedResult = result\n .filter(function (item) {\n var key = req.values ? extractPrimKey(item) : item;\n return !rangesOverlap(new RangeSet(key), keySet_1);\n })\n .concat(req.values\n ? includedValues\n : includedValues.map(function (v) { return extractPrimKey(v); }));\n break;\n case 'delete':\n var keysToDelete_1 = new RangeSet().addKeys(op.keys);\n modifedResult = result.filter(function (item) {\n var key = req.values ? extractPrimKey(item) : item;\n return !rangesOverlap(new RangeSet(key), keysToDelete_1);\n });\n break;\n case 'deleteRange':\n var range_1 = op.range;\n modifedResult = result.filter(function (item) { return !isWithinRange(extractPrimKey(item), range_1); });\n break;\n }\n return modifedResult;\n }, result);\n if (finalResult === result)\n return result;\n finalResult.sort(function (a, b) {\n return cmp(extractLowLevelIndex(a), extractLowLevelIndex(b)) ||\n cmp(extractPrimKey(a), extractPrimKey(b));\n });\n if (req.limit && req.limit < Infinity) {\n if (finalResult.length > req.limit) {\n finalResult.length = req.limit;\n }\n else if (result.length === req.limit && finalResult.length < req.limit) {\n cacheEntry.dirty = true;\n }\n }\n return immutable ? Object.freeze(finalResult) : finalResult;\n }\n\n function areRangesEqual(r1, r2) {\n return (cmp(r1.lower, r2.lower) === 0 &&\n cmp(r1.upper, r2.upper) === 0 &&\n !!r1.lowerOpen === !!r2.lowerOpen &&\n !!r1.upperOpen === !!r2.upperOpen);\n }\n\n function compareLowers(lower1, lower2, lowerOpen1, lowerOpen2) {\n if (lower1 === undefined)\n return lower2 !== undefined ? -1 : 0;\n if (lower2 === undefined)\n return 1;\n var c = cmp(lower1, lower2);\n if (c === 0) {\n if (lowerOpen1 && lowerOpen2)\n return 0;\n if (lowerOpen1)\n return 1;\n if (lowerOpen2)\n return -1;\n }\n return c;\n }\n function compareUppers(upper1, upper2, upperOpen1, upperOpen2) {\n if (upper1 === undefined)\n return upper2 !== undefined ? 1 : 0;\n if (upper2 === undefined)\n return -1;\n var c = cmp(upper1, upper2);\n if (c === 0) {\n if (upperOpen1 && upperOpen2)\n return 0;\n if (upperOpen1)\n return -1;\n if (upperOpen2)\n return 1;\n }\n return c;\n }\n function isSuperRange(r1, r2) {\n return (compareLowers(r1.lower, r2.lower, r1.lowerOpen, r2.lowerOpen) <= 0 &&\n compareUppers(r1.upper, r2.upper, r1.upperOpen, r2.upperOpen) >= 0);\n }\n\n function findCompatibleQuery(dbName, tableName, type, req) {\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (!tblCache)\n return [];\n var queries = tblCache.queries[type];\n if (!queries)\n return [null, false, tblCache, null];\n var indexName = req.query ? req.query.index.name : null;\n var entries = queries[indexName || ''];\n if (!entries)\n return [null, false, tblCache, null];\n switch (type) {\n case 'query':\n var equalEntry = entries.find(function (entry) {\n return entry.req.limit === req.limit &&\n entry.req.values === req.values &&\n areRangesEqual(entry.req.query.range, req.query.range);\n });\n if (equalEntry)\n return [\n equalEntry,\n true,\n tblCache,\n entries,\n ];\n var superEntry = entries.find(function (entry) {\n var limit = 'limit' in entry.req ? entry.req.limit : Infinity;\n return (limit >= req.limit &&\n (req.values ? entry.req.values : true) &&\n isSuperRange(entry.req.query.range, req.query.range));\n });\n return [superEntry, false, tblCache, entries];\n case 'count':\n var countQuery = entries.find(function (entry) {\n return areRangesEqual(entry.req.query.range, req.query.range);\n });\n return [countQuery, !!countQuery, tblCache, entries];\n }\n }\n\n function subscribeToCacheEntry(cacheEntry, container, requery, signal) {\n cacheEntry.subscribers.add(requery);\n signal.addEventListener(\"abort\", function () {\n cacheEntry.subscribers.delete(requery);\n if (cacheEntry.subscribers.size === 0) {\n enqueForDeletion(cacheEntry, container);\n }\n });\n }\n function enqueForDeletion(cacheEntry, container) {\n setTimeout(function () {\n if (cacheEntry.subscribers.size === 0) {\n delArrayItem(container, cacheEntry);\n }\n }, 3000);\n }\n\n var cacheMiddleware = {\n stack: 'dbcore',\n level: 0,\n name: 'Cache',\n create: function (core) {\n var dbName = core.schema.name;\n var coreMW = __assign(__assign({}, core), { transaction: function (stores, mode, options) {\n var idbtrans = core.transaction(stores, mode, options);\n if (mode === 'readwrite') {\n var ac_1 = new AbortController();\n var signal = ac_1.signal;\n var endTransaction = function (wasCommitted) { return function () {\n ac_1.abort();\n if (mode === 'readwrite') {\n var affectedSubscribers_1 = new Set();\n for (var _i = 0, stores_1 = stores; _i < stores_1.length; _i++) {\n var storeName = stores_1[_i];\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(storeName)];\n if (tblCache) {\n var table = core.table(storeName);\n var ops = tblCache.optimisticOps.filter(function (op) { return op.trans === idbtrans; });\n if (idbtrans._explicit && wasCommitted && idbtrans.mutatedParts) {\n for (var _a = 0, _b = Object.values(tblCache.queries.query); _a < _b.length; _a++) {\n var entries = _b[_a];\n for (var _c = 0, _d = entries.slice(); _c < _d.length; _c++) {\n var entry = _d[_c];\n if (obsSetsOverlap(entry.obsSet, idbtrans.mutatedParts)) {\n delArrayItem(entries, entry);\n entry.subscribers.forEach(function (requery) { return affectedSubscribers_1.add(requery); });\n }\n }\n }\n }\n else if (ops.length > 0) {\n tblCache.optimisticOps = tblCache.optimisticOps.filter(function (op) { return op.trans !== idbtrans; });\n for (var _e = 0, _f = Object.values(tblCache.queries.query); _e < _f.length; _e++) {\n var entries = _f[_e];\n for (var _g = 0, _h = entries.slice(); _g < _h.length; _g++) {\n var entry = _h[_g];\n if (entry.res != null &&\n idbtrans.mutatedParts\n ) {\n if (wasCommitted && !entry.dirty) {\n var freezeResults = Object.isFrozen(entry.res);\n var modRes = applyOptimisticOps(entry.res, entry.req, ops, table, entry, freezeResults);\n if (entry.dirty) {\n delArrayItem(entries, entry);\n entry.subscribers.forEach(function (requery) { return affectedSubscribers_1.add(requery); });\n }\n else if (modRes !== entry.res) {\n entry.res = modRes;\n entry.promise = DexiePromise.resolve({ result: modRes });\n }\n }\n else {\n if (entry.dirty) {\n delArrayItem(entries, entry);\n }\n entry.subscribers.forEach(function (requery) { return affectedSubscribers_1.add(requery); });\n }\n }\n }\n }\n }\n }\n }\n affectedSubscribers_1.forEach(function (requery) { return requery(); });\n }\n }; };\n idbtrans.addEventListener('abort', endTransaction(false), {\n signal: signal,\n });\n idbtrans.addEventListener('error', endTransaction(false), {\n signal: signal,\n });\n idbtrans.addEventListener('complete', endTransaction(true), {\n signal: signal,\n });\n }\n return idbtrans;\n }, table: function (tableName) {\n var downTable = core.table(tableName);\n var primKey = downTable.schema.primaryKey;\n var tableMW = __assign(__assign({}, downTable), { mutate: function (req) {\n var trans = PSD.trans;\n if (primKey.outbound ||\n trans.db._options.cache === 'disabled' ||\n trans.explicit\n ) {\n return downTable.mutate(req);\n }\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (!tblCache)\n return downTable.mutate(req);\n var promise = downTable.mutate(req);\n if ((req.type === 'add' || req.type === 'put') && (req.values.length >= 50 || getEffectiveKeys(primKey, req).some(function (key) { return key == null; }))) {\n promise.then(function (res) {\n var reqWithResolvedKeys = __assign(__assign({}, req), { values: req.values.map(function (value, i) {\n var _a;\n var valueWithKey = ((_a = primKey.keyPath) === null || _a === void 0 ? void 0 : _a.includes('.'))\n ? deepClone(value)\n : __assign({}, value);\n setByKeyPath(valueWithKey, primKey.keyPath, res.results[i]);\n return valueWithKey;\n }) });\n var adjustedReq = adjustOptimisticFromFailures(tblCache, reqWithResolvedKeys, res);\n tblCache.optimisticOps.push(adjustedReq);\n queueMicrotask(function () { return req.mutatedParts && signalSubscribersLazily(req.mutatedParts); });\n });\n }\n else {\n tblCache.optimisticOps.push(req);\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n promise.then(function (res) {\n if (res.numFailures > 0) {\n delArrayItem(tblCache.optimisticOps, req);\n var adjustedReq = adjustOptimisticFromFailures(tblCache, req, res);\n if (adjustedReq) {\n tblCache.optimisticOps.push(adjustedReq);\n }\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n }\n });\n promise.catch(function () {\n delArrayItem(tblCache.optimisticOps, req);\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n });\n }\n return promise;\n }, query: function (req) {\n var _a;\n if (!isCachableContext(PSD, downTable) || !isCachableRequest(\"query\", req))\n return downTable.query(req);\n var freezeResults = ((_a = PSD.trans) === null || _a === void 0 ? void 0 : _a.db._options.cache) === 'immutable';\n var _b = PSD, requery = _b.requery, signal = _b.signal;\n var _c = findCompatibleQuery(dbName, tableName, 'query', req), cacheEntry = _c[0], exactMatch = _c[1], tblCache = _c[2], container = _c[3];\n if (cacheEntry && exactMatch) {\n cacheEntry.obsSet = req.obsSet;\n }\n else {\n var promise = downTable.query(req).then(function (res) {\n var result = res.result;\n if (cacheEntry)\n cacheEntry.res = result;\n if (freezeResults) {\n for (var i = 0, l = result.length; i < l; ++i) {\n Object.freeze(result[i]);\n }\n Object.freeze(result);\n }\n else {\n res.result = deepClone(result);\n }\n return res;\n }).catch(function (error) {\n if (container && cacheEntry)\n delArrayItem(container, cacheEntry);\n return Promise.reject(error);\n });\n cacheEntry = {\n obsSet: req.obsSet,\n promise: promise,\n subscribers: new Set(),\n type: 'query',\n req: req,\n dirty: false,\n };\n if (container) {\n container.push(cacheEntry);\n }\n else {\n container = [cacheEntry];\n if (!tblCache) {\n tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)] = {\n queries: {\n query: {},\n count: {},\n },\n objs: new Map(),\n optimisticOps: [],\n unsignaledParts: {}\n };\n }\n tblCache.queries.query[req.query.index.name || ''] = container;\n }\n }\n subscribeToCacheEntry(cacheEntry, container, requery, signal);\n return cacheEntry.promise.then(function (res) {\n return {\n result: applyOptimisticOps(res.result, req, tblCache === null || tblCache === void 0 ? void 0 : tblCache.optimisticOps, downTable, cacheEntry, freezeResults),\n };\n });\n } });\n return tableMW;\n } });\n return coreMW;\n },\n };\n\n function vipify(target, vipDb) {\n return new Proxy(target, {\n get: function (target, prop, receiver) {\n if (prop === 'db')\n return vipDb;\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n\n var Dexie$1 = (function () {\n function Dexie(name, options) {\n var _this = this;\n this._middlewares = {};\n this.verno = 0;\n var deps = Dexie.dependencies;\n this._options = options = __assign({\n addons: Dexie.addons, autoOpen: true,\n indexedDB: deps.indexedDB, IDBKeyRange: deps.IDBKeyRange, cache: 'cloned' }, options);\n this._deps = {\n indexedDB: options.indexedDB,\n IDBKeyRange: options.IDBKeyRange\n };\n var addons = options.addons;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n this._novip = this;\n var state = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null,\n cancelOpen: nop,\n openCanceller: null,\n autoSchema: true,\n PR1398_maxLoop: 3,\n autoOpen: options.autoOpen,\n };\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", \"close\", { ready: [promisableChain, nop] });\n this.on.ready.subscribe = override(this.on.ready.subscribe, function (subscribe) {\n return function (subscriber, bSticky) {\n Dexie.vip(function () {\n var state = _this._state;\n if (state.openComplete) {\n if (!state.dbOpenError)\n DexiePromise.resolve().then(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else if (state.onReadyBeingFired) {\n state.onReadyBeingFired.push(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else {\n subscribe(subscriber);\n var db_1 = _this;\n if (!bSticky)\n subscribe(function unsubscribe() {\n db_1.on.ready.unsubscribe(subscriber);\n db_1.on.ready.unsubscribe(unsubscribe);\n });\n }\n });\n };\n });\n this.Collection = createCollectionConstructor(this);\n this.Table = createTableConstructor(this);\n this.Transaction = createTransactionConstructor(this);\n this.Version = createVersionConstructor(this);\n this.WhereClause = createWhereClauseConstructor(this);\n this.on(\"versionchange\", function (ev) {\n if (ev.newVersion > 0)\n console.warn(\"Another connection wants to upgrade database '\".concat(_this.name, \"'. Closing db now to resume the upgrade.\"));\n else\n console.warn(\"Another connection wants to delete database '\".concat(_this.name, \"'. Closing db now to resume the delete request.\"));\n _this.close({ disableAutoOpen: false });\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(\"Dexie.delete('\".concat(_this.name, \"') was blocked\"));\n else\n console.warn(\"Upgrade '\".concat(_this.name, \"' blocked by other connection holding version \").concat(ev.oldVersion / 10));\n });\n this._maxKey = getMaxKey(options.IDBKeyRange);\n this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { return new _this.Transaction(mode, storeNames, dbschema, _this._options.chromeTransactionDurability, parentTransaction); };\n this._fireOnBlocked = function (ev) {\n _this.on(\"blocked\").fire(ev);\n connections\n .filter(function (c) { return c.name === _this.name && c !== _this && !c._state.vcFired; })\n .map(function (c) { return c.on(\"versionchange\").fire(ev); });\n };\n this.use(cacheExistingValuesMiddleware);\n this.use(cacheMiddleware);\n this.use(observabilityMiddleware);\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n var vipDB = new Proxy(this, {\n get: function (_, prop, receiver) {\n if (prop === '_vip')\n return true;\n if (prop === 'table')\n return function (tableName) { return vipify(_this.table(tableName), vipDB); };\n var rv = Reflect.get(_, prop, receiver);\n if (rv instanceof Table)\n return vipify(rv, vipDB);\n if (prop === 'tables')\n return rv.map(function (t) { return vipify(t, vipDB); });\n if (prop === '_createTransaction')\n return function () {\n var tx = rv.apply(this, arguments);\n return vipify(tx, vipDB);\n };\n return rv;\n }\n });\n this.vip = vipDB;\n addons.forEach(function (addon) { return addon(_this); });\n }\n Dexie.prototype.version = function (versionNumber) {\n if (isNaN(versionNumber) || versionNumber < 0.1)\n throw new exceptions.Type(\"Given version is not a positive number\");\n versionNumber = Math.round(versionNumber * 10) / 10;\n if (this.idbdb || this._state.isBeingOpened)\n throw new exceptions.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, versionNumber);\n var versions = this._versions;\n var versionInstance = versions.filter(function (v) { return v._cfg.version === versionNumber; })[0];\n if (versionInstance)\n return versionInstance;\n versionInstance = new this.Version(versionNumber);\n versions.push(versionInstance);\n versions.sort(lowerVersionFirst);\n versionInstance.stores({});\n this._state.autoSchema = false;\n return versionInstance;\n };\n Dexie.prototype._whenReady = function (fn) {\n var _this = this;\n return (this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip)) ? fn() : new DexiePromise(function (resolve, reject) {\n if (_this._state.openComplete) {\n return reject(new exceptions.DatabaseClosed(_this._state.dbOpenError));\n }\n if (!_this._state.isBeingOpened) {\n if (!_this._state.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n _this.open().catch(nop);\n }\n _this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n };\n Dexie.prototype.use = function (_a) {\n var stack = _a.stack, create = _a.create, level = _a.level, name = _a.name;\n if (name)\n this.unuse({ stack: stack, name: name });\n var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({ stack: stack, create: create, level: level == null ? 10 : level, name: name });\n middlewares.sort(function (a, b) { return a.level - b.level; });\n return this;\n };\n Dexie.prototype.unuse = function (_a) {\n var stack = _a.stack, name = _a.name, create = _a.create;\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n return create ? mw.create !== create :\n name ? mw.name !== name :\n false;\n });\n }\n return this;\n };\n Dexie.prototype.open = function () {\n var _this = this;\n return usePSD(globalPSD,\n function () { return dexieOpen(_this); });\n };\n Dexie.prototype._close = function () {\n var state = this._state;\n var idx = connections.indexOf(this);\n if (idx >= 0)\n connections.splice(idx, 1);\n if (this.idbdb) {\n try {\n this.idbdb.close();\n }\n catch (e) { }\n this.idbdb = null;\n }\n if (!state.isBeingOpened) {\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n }\n };\n Dexie.prototype.close = function (_a) {\n var _b = _a === void 0 ? { disableAutoOpen: true } : _a, disableAutoOpen = _b.disableAutoOpen;\n var state = this._state;\n if (disableAutoOpen) {\n if (state.isBeingOpened) {\n state.cancelOpen(new exceptions.DatabaseClosed());\n }\n this._close();\n state.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n }\n else {\n this._close();\n state.autoOpen = this._options.autoOpen ||\n state.isBeingOpened;\n state.openComplete = false;\n state.dbOpenError = null;\n }\n };\n Dexie.prototype.delete = function (closeOptions) {\n var _this = this;\n if (closeOptions === void 0) { closeOptions = { disableAutoOpen: true }; }\n var hasInvalidArguments = arguments.length > 0 && typeof arguments[0] !== 'object';\n var state = this._state;\n return new DexiePromise(function (resolve, reject) {\n var doDelete = function () {\n _this.close(closeOptions);\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n _onDatabaseDeleted(_this._deps, _this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasInvalidArguments)\n throw new exceptions.InvalidArgument(\"Invalid closeOptions argument to db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n }\n else {\n doDelete();\n }\n });\n };\n Dexie.prototype.backendDB = function () {\n return this.idbdb;\n };\n Dexie.prototype.isOpen = function () {\n return this.idbdb !== null;\n };\n Dexie.prototype.hasBeenClosed = function () {\n var dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n };\n Dexie.prototype.hasFailed = function () {\n return this._state.dbOpenError !== null;\n };\n Dexie.prototype.dynamicallyOpened = function () {\n return this._state.autoSchema;\n };\n Object.defineProperty(Dexie.prototype, \"tables\", {\n get: function () {\n var _this = this;\n return keys(this._allTables).map(function (name) { return _this._allTables[name]; });\n },\n enumerable: false,\n configurable: true\n });\n Dexie.prototype.transaction = function () {\n var args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n };\n Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n var _this = this;\n var parentTransaction = PSD.trans;\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1)\n parentTransaction = null;\n var onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '');\n var idbMode, storeNames;\n try {\n storeNames = tables.map(function (table) {\n var storeName = table instanceof _this.Table ? table.name : table;\n if (typeof storeName !== 'string')\n throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n if (parentTransaction) {\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(function (storeName) {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n parentTransaction = null;\n }\n }\n }\n catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, function (_, reject) { reject(e); }) :\n rejection(e);\n }\n var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n usePSD(PSD.transless, function () { return _this._whenReady(enterTransaction); }) :\n this._whenReady(enterTransaction));\n };\n Dexie.prototype.table = function (tableName) {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(\"Table \".concat(tableName, \" does not exist\"));\n }\n return this._allTables[tableName];\n };\n return Dexie;\n }());\n\n var symbolObservable = typeof Symbol !== \"undefined\" && \"observable\" in Symbol\n ? Symbol.observable\n : \"@@observable\";\n var Observable = (function () {\n function Observable(subscribe) {\n this._subscribe = subscribe;\n }\n Observable.prototype.subscribe = function (x, error, complete) {\n return this._subscribe(!x || typeof x === \"function\" ? { next: x, error: error, complete: complete } : x);\n };\n Observable.prototype[symbolObservable] = function () {\n return this;\n };\n return Observable;\n }());\n\n var domDeps;\n try {\n domDeps = {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n }\n catch (e) {\n domDeps = { indexedDB: null, IDBKeyRange: null };\n }\n\n function liveQuery(querier) {\n var hasValue = false;\n var currentValue;\n var observable = new Observable(function (observer) {\n var scopeFuncIsAsync = isAsyncFunction(querier);\n function execute(ctx) {\n var wasRootExec = beginMicroTickScope();\n try {\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var rv = newScope(querier, ctx);\n if (scopeFuncIsAsync) {\n rv = rv.finally(decrementExpectedAwaits);\n }\n return rv;\n }\n finally {\n wasRootExec && endMicroTickScope();\n }\n }\n var closed = false;\n var abortController;\n var accumMuts = {};\n var currentObs = {};\n var subscription = {\n get closed() {\n return closed;\n },\n unsubscribe: function () {\n if (closed)\n return;\n closed = true;\n if (abortController)\n abortController.abort();\n if (startedListening)\n globalEvents.storagemutated.unsubscribe(mutationListener);\n },\n };\n observer.start && observer.start(subscription);\n var startedListening = false;\n var doQuery = function () { return execInGlobalContext(_doQuery); };\n function shouldNotify() {\n return obsSetsOverlap(currentObs, accumMuts);\n }\n var mutationListener = function (parts) {\n extendObservabilitySet(accumMuts, parts);\n if (shouldNotify()) {\n doQuery();\n }\n };\n var _doQuery = function () {\n if (closed ||\n !domDeps.indexedDB)\n {\n return;\n }\n accumMuts = {};\n var subscr = {};\n if (abortController)\n abortController.abort();\n abortController = new AbortController();\n var ctx = {\n subscr: subscr,\n signal: abortController.signal,\n requery: doQuery,\n querier: querier,\n trans: null\n };\n var ret = execute(ctx);\n Promise.resolve(ret).then(function (result) {\n hasValue = true;\n currentValue = result;\n if (closed || ctx.signal.aborted) {\n return;\n }\n accumMuts = {};\n currentObs = subscr;\n if (!objectIsEmpty(currentObs) && !startedListening) {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);\n startedListening = true;\n }\n execInGlobalContext(function () { return !closed && observer.next && observer.next(result); });\n }, function (err) {\n hasValue = false;\n if (!['DatabaseClosedError', 'AbortError'].includes(err === null || err === void 0 ? void 0 : err.name)) {\n if (!closed)\n execInGlobalContext(function () {\n if (closed)\n return;\n observer.error && observer.error(err);\n });\n }\n });\n };\n setTimeout(doQuery, 0);\n return subscription;\n });\n observable.hasValue = function () { return hasValue; };\n observable.getValue = function () { return currentValue; };\n return observable;\n }\n\n var Dexie = Dexie$1;\n props(Dexie, __assign(__assign({}, fullNameExceptions), {\n delete: function (databaseName) {\n var db = new Dexie(databaseName, { addons: [] });\n return db.delete();\n },\n exists: function (name) {\n return new Dexie(name, { addons: [] }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () { return false; });\n },\n getDatabaseNames: function (cb) {\n try {\n return getDatabaseNames(Dexie.dependencies).then(cb);\n }\n catch (_a) {\n return rejection(new exceptions.MissingAPI());\n }\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n }, ignoreTransaction: function (scopeFunc) {\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) :\n scopeFunc();\n }, vip: vip, async: function (generatorFn) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return DexiePromise.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n };\n }, spawn: function (generatorFn, args, thiz) {\n try {\n var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n if (!rv || typeof rv.then !== 'function')\n return DexiePromise.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n },\n currentTransaction: {\n get: function () { return PSD.trans || null; }\n }, waitFor: function (promiseOrFunction, optionalTimeout) {\n var promise = DexiePromise.resolve(typeof promiseOrFunction === 'function' ?\n Dexie.ignoreTransaction(promiseOrFunction) :\n promiseOrFunction)\n .timeout(optionalTimeout || 60000);\n return PSD.trans ?\n PSD.trans.waitFor(promise) :\n promise;\n },\n Promise: DexiePromise,\n debug: {\n get: function () { return debug; },\n set: function (value) {\n setDebug(value);\n }\n },\n derive: derive, extend: extend, props: props, override: override,\n Events: Events, on: globalEvents, liveQuery: liveQuery, extendObservabilitySet: extendObservabilitySet,\n getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, cmp: cmp, asap: asap$1,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: domDeps, cache: cache,\n semVer: DEXIE_VERSION, version: DEXIE_VERSION.split('.')\n .map(function (n) { return parseInt(n); })\n .reduce(function (p, c, i) { return p + (c / Math.pow(10, i * 2)); }) }));\n Dexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);\n\n if (typeof dispatchEvent !== 'undefined' && typeof addEventListener !== 'undefined') {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (updatedParts) {\n if (!propagatingLocally) {\n var event_1;\n event_1 = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {\n detail: updatedParts\n });\n propagatingLocally = true;\n dispatchEvent(event_1);\n propagatingLocally = false;\n }\n });\n addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, function (_a) {\n var detail = _a.detail;\n if (!propagatingLocally) {\n propagateLocally(detail);\n }\n });\n }\n function propagateLocally(updateParts) {\n var wasMe = propagatingLocally;\n try {\n propagatingLocally = true;\n globalEvents.storagemutated.fire(updateParts);\n signalSubscribersNow(updateParts, true);\n }\n finally {\n propagatingLocally = wasMe;\n }\n }\n var propagatingLocally = false;\n\n var bc;\n var createBC = function () { };\n if (typeof BroadcastChannel !== 'undefined') {\n createBC = function () {\n bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);\n bc.onmessage = function (ev) { return ev.data && propagateLocally(ev.data); };\n };\n createBC();\n if (typeof bc.unref === 'function') {\n bc.unref();\n }\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (changedParts) {\n if (!propagatingLocally) {\n bc.postMessage(changedParts);\n }\n });\n }\n\n if (typeof addEventListener !== 'undefined') {\n addEventListener('pagehide', function (event) {\n if (!Dexie$1.disableBfCache && event.persisted) {\n if (debug)\n console.debug('Dexie: handling persisted pagehide');\n bc === null || bc === void 0 ? void 0 : bc.close();\n for (var _i = 0, connections_1 = connections; _i < connections_1.length; _i++) {\n var db = connections_1[_i];\n db.close({ disableAutoOpen: false });\n }\n }\n });\n addEventListener('pageshow', function (event) {\n if (!Dexie$1.disableBfCache && event.persisted) {\n if (debug)\n console.debug('Dexie: handling persisted pageshow');\n createBC();\n propagateLocally({ all: new RangeSet(-Infinity, [[]]) });\n }\n });\n }\n\n function add(value) {\n return new PropModification({ add: value });\n }\n\n function remove(value) {\n return new PropModification({ remove: value });\n }\n\n function replacePrefix(a, b) {\n return new PropModification({ replacePrefix: [a, b] });\n }\n\n DexiePromise.rejectionMapper = mapError;\n setDebug(debug);\n\n var namedExports = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Dexie: Dexie$1,\n liveQuery: liveQuery,\n Entity: Entity,\n cmp: cmp,\n PropModSymbol: PropModSymbol,\n PropModification: PropModification,\n replacePrefix: replacePrefix,\n add: add,\n remove: remove,\n 'default': Dexie$1,\n RangeSet: RangeSet,\n mergeRanges: mergeRanges,\n rangesOverlap: rangesOverlap\n });\n\n __assign(Dexie$1, namedExports, { default: Dexie$1 });\n\n return Dexie$1;\n\n}));\n//# sourceMappingURL=dexie.js.map\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class, _temp2;\n\nexports.confirmAlert = confirmAlert;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _client = require('react-dom/client');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ReactConfirmAlert = (_temp2 = _class = function (_Component) {\n _inherits(ReactConfirmAlert, _Component);\n\n function ReactConfirmAlert() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ReactConfirmAlert);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ReactConfirmAlert.__proto__ || Object.getPrototypeOf(ReactConfirmAlert)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickButton = function (button) {\n if (button.onClick) button.onClick();\n _this.close();\n }, _this.handleClickOverlay = function (e) {\n var _this$props = _this.props,\n closeOnClickOutside = _this$props.closeOnClickOutside,\n onClickOutside = _this$props.onClickOutside;\n\n var isClickOutside = e.target === _this.overlay;\n\n if (closeOnClickOutside && isClickOutside) {\n onClickOutside();\n _this.close();\n }\n\n e.stopPropagation();\n }, _this.close = function () {\n var afterClose = _this.props.afterClose;\n\n removeBodyClass();\n removeElementReconfirm(_this.props);\n removeSVGBlurReconfirm(afterClose);\n }, _this.keyboard = function (event) {\n var _this$props2 = _this.props,\n closeOnEscape = _this$props2.closeOnEscape,\n onKeypressEscape = _this$props2.onKeypressEscape,\n onkeyPress = _this$props2.onkeyPress,\n keyCodeForClose = _this$props2.keyCodeForClose;\n\n var keyCode = event.keyCode;\n var isKeyCodeEscape = keyCode === 27;\n\n if (keyCodeForClose.includes(keyCode)) {\n _this.close();\n }\n\n if (closeOnEscape && isKeyCodeEscape) {\n onKeypressEscape(event);\n _this.close();\n }\n\n if (onkeyPress) {\n onkeyPress();\n }\n }, _this.componentDidMount = function () {\n document.addEventListener('keydown', _this.keyboard, false);\n }, _this.componentWillUnmount = function () {\n document.removeEventListener('keydown', _this.keyboard, false);\n _this.props.willUnmount();\n }, _this.renderCustomUI = function () {\n var _this$props3 = _this.props,\n title = _this$props3.title,\n message = _this$props3.message,\n buttons = _this$props3.buttons,\n customUI = _this$props3.customUI;\n\n var dataCustomUI = {\n title: title,\n message: message,\n buttons: buttons,\n onClose: _this.close\n };\n\n return customUI(dataCustomUI);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ReactConfirmAlert, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n title = _props.title,\n message = _props.message,\n buttons = _props.buttons,\n childrenElement = _props.childrenElement,\n customUI = _props.customUI,\n overlayClassName = _props.overlayClassName;\n\n\n return _react2.default.createElement(\n 'div',\n {\n className: 'react-confirm-alert-overlay ' + overlayClassName,\n ref: function ref(dom) {\n return _this2.overlay = dom;\n },\n onClick: this.handleClickOverlay\n },\n _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert' },\n customUI ? this.renderCustomUI() : _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert-body' },\n title && _react2.default.createElement(\n 'h1',\n null,\n title\n ),\n message,\n childrenElement(),\n _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert-button-group' },\n buttons.map(function (button, i) {\n return _react2.default.createElement(\n 'button',\n _extends({\n key: i,\n className: button.className\n }, button, {\n onClick: function onClick(e) {\n return _this2.handleClickButton(button);\n }\n }),\n button.label\n );\n })\n )\n )\n )\n );\n }\n }]);\n\n return ReactConfirmAlert;\n}(_react.Component), _class.propTypes = {\n title: _propTypes2.default.string,\n message: _propTypes2.default.string,\n buttons: _propTypes2.default.array.isRequired,\n childrenElement: _propTypes2.default.func,\n customUI: _propTypes2.default.func,\n closeOnClickOutside: _propTypes2.default.bool,\n closeOnEscape: _propTypes2.default.bool,\n keyCodeForClose: _propTypes2.default.arrayOf(_propTypes2.default.number),\n willUnmount: _propTypes2.default.func,\n afterClose: _propTypes2.default.func,\n onClickOutside: _propTypes2.default.func,\n onKeypressEscape: _propTypes2.default.func,\n onkeyPress: _propTypes2.default.func,\n overlayClassName: _propTypes2.default.string\n}, _class.defaultProps = {\n buttons: [{\n label: 'Cancel',\n onClick: function onClick() {\n return null;\n },\n className: null\n }, {\n label: 'Confirm',\n onClick: function onClick() {\n return null;\n },\n className: null\n }],\n childrenElement: function childrenElement() {\n return null;\n },\n closeOnClickOutside: true,\n closeOnEscape: true,\n keyCodeForClose: [],\n willUnmount: function willUnmount() {\n return null;\n },\n afterClose: function afterClose() {\n return null;\n },\n onClickOutside: function onClickOutside() {\n return null;\n },\n onKeypressEscape: function onKeypressEscape() {\n return null;\n }\n}, _temp2);\nexports.default = ReactConfirmAlert;\n\n\nvar root = null;\nvar targetId = 'react-confirm-alert';\n\nfunction createSVGBlurReconfirm() {\n // If has svg ignore to create the svg\n var svg = document.getElementById('react-confirm-alert-firm-svg');\n if (svg) return;\n var svgNS = 'http://www.w3.org/2000/svg';\n var feGaussianBlur = document.createElementNS(svgNS, 'feGaussianBlur');\n feGaussianBlur.setAttribute('stdDeviation', '0.3');\n\n var filter = document.createElementNS(svgNS, 'filter');\n filter.setAttribute('id', 'gaussian-blur');\n filter.appendChild(feGaussianBlur);\n\n var svgElem = document.createElementNS(svgNS, 'svg');\n svgElem.setAttribute('id', 'react-confirm-alert-firm-svg');\n svgElem.setAttribute('class', 'react-confirm-alert-svg');\n svgElem.appendChild(filter);\n\n document.body.appendChild(svgElem);\n}\n\nfunction removeSVGBlurReconfirm(afterClose) {\n var svg = document.getElementById('react-confirm-alert-firm-svg');\n if (svg) {\n svg.parentNode.removeChild(svg);\n }\n document.body.children[0].classList.remove('react-confirm-alert-blur');\n afterClose();\n}\n\nfunction createElementReconfirm(properties) {\n var divTarget = document.getElementById(properties.targetId || targetId);\n\n if (properties.targetId && !divTarget) {\n console.error('React Confirm Alert:', 'Can not get element id (#' + properties.targetId + ')');\n }\n\n if (divTarget) {\n root = (0, _client.createRoot)(divTarget);\n root.render(_react2.default.createElement(ReactConfirmAlert, properties));\n } else {\n document.body.children[0].classList.add('react-confirm-alert-blur');\n divTarget = document.createElement('div');\n divTarget.id = targetId;\n document.body.appendChild(divTarget);\n root = (0, _client.createRoot)(divTarget);\n root.render(_react2.default.createElement(ReactConfirmAlert, properties));\n }\n}\n\nfunction removeElementReconfirm(properties) {\n var target = document.getElementById(properties.targetId || targetId);\n if (target) {\n root.unmount(target);\n }\n}\n\nfunction addBodyClass() {\n document.body.classList.add('react-confirm-alert-body-element');\n}\n\nfunction removeBodyClass() {\n document.body.classList.remove('react-confirm-alert-body-element');\n}\n\nfunction confirmAlert(properties) {\n addBodyClass();\n createSVGBlurReconfirm();\n createElementReconfirm(properties);\n}","/**\n * @license React\n * react-dom.production.min.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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import parse from 'inline-style-parser';\nimport type { Declaration } from 'inline-style-parser';\n\nexport { Declaration };\n\ninterface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\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\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"5c64e536\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"REDCap_Chatbot:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkREDCap_Chatbot\"] = self[\"webpackChunkREDCap_Chatbot\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// Making the module version consumable via require - to prohibit\n// multiple occurrancies of the same module in the same app\n// (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard)\nimport _Dexie from \"./dist/dexie.min.js\";\nconst DexieSymbol = Symbol.for(\"Dexie\");\nconst Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie);\nif (_Dexie.semVer !== Dexie.semVer) {\n throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`);\n}\nconst {\n liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Entity,\n PropModSymbol, PropModification, replacePrefix, add, remove } = Dexie;\nexport { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie, Entity,\n PropModSymbol, PropModification, replacePrefix, add, remove };\nexport default Dexie;\n","import Dexie from 'dexie';\n\nexport const db_cached_chats = new Dexie('cached_chats');\ndb_cached_chats.version(1).stores({\n chats : 'session_id, timestamp, queries'\n});\n\nexport async function deleteAllData(){\n await db_cached_chats.chats.clear();\n console.log(await db_cached_chats.chats.toArray()); // Output: []\n};\n\nexport async function saveNewSession(session_id, timestamp, queries) {\n try {\n const id = await db_cached_chats.chats.add({session_id, timestamp, queries });\n console.log(\"Saved document with id:\", id);\n } catch (error) {\n console.error(\"Error saving document:\", error);\n }\n}\n\nexport async function addSessionQuery(id, newQueries) {\n try {\n const document = await db_cached_chats.chats.get(id);\n const query_set = document.queries;\n query_set.push(newQueries);\n \n await db_cached_chats.chats.update(id, { queries: query_set });\n // console.log(\"Updated queries for document with id:\", id);\n } catch (error) {\n console.error(\"Error updating queries:\", error);\n }\n}\n\nexport async function updateSession(id, updatedQueries) {\n try {\n await db_cached_chats.chats.update(id, { queries: updatedQueries });\n console.log(\"Updated queries for document with id:\", id);\n } catch (error) {\n console.error(\"Error updating queries:\", error);\n }\n}\n\nexport async function getAllSessions() {\n const allDocuments = await db_cached_chats.chats.toArray();\n // console.log(\"Retrieved all documents:\", allDocuments);\n return allDocuments;\n}\n\nexport async function getSession(id) {\n try {\n const document = await db_cached_chats.chats.get(id);\n if (document) {\n // console.log(\"Retrieved document:\", document);\n } else {\n console.log(\"Document not found\");\n }\n return document;\n } catch (error) {\n console.error(\"Error retrieving document:\", error);\n }\n}\n\nexport async function deleteSession(id) {\n try {\n await db_cached_chats.chats.delete(id);\n console.log(\"Deleted document with id:\", id);\n } catch (error) {\n console.error(\"Error deleting document:\", error);\n }\n}\n","import React, { createContext, useState, useRef, useEffect } from 'react';\nimport { saveNewSession, updateSession, getSession, deleteSession } from '../components/database/dexie';\n\nexport const ChatContext = createContext();\n\nexport const ChatContextProvider = ({ children }) => {\n const [apiContext, setApiContext] = useState([]);\n const [chatContext, setChatContext] = useState([]);\n const [showRatingPO, setShowRatingPO] = useState(false);\n const [sessionId, setSessionId] = useState(Date.now().toString());\n const [messages, setMessages] = useState([]);\n const [msgCount, setMsgCount] = useState(0);\n\n const apiContextRef = useRef(apiContext);\n const chatContextRef = useRef(chatContext);\n\n useEffect(() => {\n console.log(\"apiContext updated: \", apiContext);\n }, [apiContext]);\n\n const updateApiContext = (newContext) => {\n apiContextRef.current = newContext;\n setApiContext(newContext);\n };\n\n const saveChatContext = async () => {\n if (sessionId && chatContextRef.current.length > 0) {\n const currentSession = await getSession(sessionId);\n if (currentSession) {\n await updateSession(sessionId, chatContextRef.current);\n } else {\n await saveNewSession(sessionId, Date.now(), chatContextRef.current);\n }\n }\n };\n\n const updateChatContext = async (newContext, shouldSave = true) => {\n chatContextRef.current = newContext;\n setChatContext(newContext);\n // console.log(\"Updated chatContext:\", newContext);\n if (shouldSave) {\n await saveChatContext(); // Save chat session after each update\n }\n };\n\n const addMessage = (message) => {\n const index = chatContextRef.current.length;\n const updatedApiContext = [\n ...apiContextRef.current,\n { role: message.role, content: message.content, index },\n ];\n updateApiContext(updatedApiContext);\n\n if(message.role == \"system\"){\n return;\n }\n\n const newChatContext = [\n ...chatContextRef.current,\n {\n user_content: message.role === 'user' ? message.content : null,\n assistant_content: message.role === 'assistant' ? message.content : null,\n timestamp: new Date().getTime(),\n },\n ];\n updateChatContext(newChatContext);\n };\n\n const updateMessage = async (response, index) => {\n const { response: assistantResponse, usage, id, model } = response;\n const updatedState = [...chatContextRef.current];\n updatedState[index] = {\n ...updatedState[index],\n assistant_content: assistantResponse.content,\n input_tokens: usage ? usage.prompt_tokens : null,\n output_tokens: usage ? usage.completion_tokens : null,\n input_cost: usage ? usage.input_cost : null,\n output_cost: usage ? usage.output_cost : null,\n id: id || null,\n model: model || null,\n };\n await updateChatContext(updatedState);\n\n const updatedApiContext = [\n ...apiContextRef.current,\n { role: 'assistant', content: assistantResponse.content, index },\n ];\n updateApiContext(updatedApiContext);\n };\n\n const clearMessages = async () => {\n const newSessionId = Date.now().toString(); // Generate a new session ID\n setMsgCount(0);\n setMessages([]);\n setSessionId(newSessionId);\n // Clear chatContext and apiContext without saving\n chatContextRef.current = [];\n apiContextRef.current = [];\n setChatContext([]);\n setApiContext([]);\n };\n\n const replaceSession = async (session) => {\n setSessionId(session.session_id);\n setMessages(session.queries);\n setMsgCount(session.queries.length);\n updateChatContext(session.queries, false);\n };\n\n const callAjax = (payload, callback) => {\n if(apiContextRef.current.length === 0){\n const initial_system_context = window.mica_jsmo_module.getInitialSystemContext().pop();\n console.log(\"initial apiContext, if empty , inject system context before first query\", initial_system_context);\n addMessage(initial_system_context);\n }\n\n addMessage({ role: 'user', content: payload.content });\n\n const userMessageIndex = chatContextRef.current.length - 1;\n const wrappedPayload = [...apiContextRef.current];\n console.log(\"calling callAI with \", wrappedPayload);\n\n window.mica_jsmo_module.callAI(wrappedPayload, (res) => {\n if (res && res.response) {\n updateMessage(res, userMessageIndex);\n if (callback) callback();\n } else {\n console.log(\"Unexpected response format:\", res);\n }\n }, (err) => {\n console.log(\"callAI error\", err);\n if (callback) callback();\n });\n };\n\n const updateVote = async (index, vote) => {\n const updatedState = [...chatContextRef.current];\n updatedState[index] = {\n ...updatedState[index],\n rating: vote\n };\n await updateChatContext(updatedState);\n // console.log(\"Updated chatContext after vote:\", updatedState);\n };\n\n const deleteInteraction = async (index) => {\n const updatedChatContext = [...chatContextRef.current];\n updatedChatContext.splice(index, 1);\n\n const updatedApiContext = apiContextRef.current.filter(entry => entry.index !== index);\n\n // Update the index of remaining entries\n updatedApiContext.forEach((entry, i) => {\n if (entry.index > index) {\n entry.index -= 1;\n }\n });\n\n updateChatContext(updatedChatContext);\n updateApiContext(updatedApiContext);\n };\n\n return (\n \n {children}\n \n );\n};\n","\"use client\";\n\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {},\n breakpoints: DEFAULT_BREAKPOINTS,\n minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\nfunction ThemeProvider({\n prefixes = {},\n breakpoints = DEFAULT_BREAKPOINTS,\n minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: {\n ...prefixes\n },\n breakpoints,\n minBreakpoint,\n dir\n }), [prefixes, breakpoints, minBreakpoint, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n const {\n breakpoints\n } = useContext(ThemeContext);\n return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n const {\n minBreakpoint\n } = useContext(ThemeContext);\n return minBreakpoint;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent;\n // If it's a functional component make sure we don't break it with a ref\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({\n ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nexport default Container;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Archive = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-archive', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 12.5V5a1 1 0 0 1-1-1zm2 3v7.5A1.5 1.5 0 0 0 3.5 14h9a1.5 1.5 0 0 0 1.5-1.5V5zm13-3H1v2h14zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5\"\n }));\n});\nArchive.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nArchive.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default Archive;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ChatDots = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-chat-dots', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m2.165 15.803.02-.004c1.83-.363 2.948-.842 3.468-1.105A9 9 0 0 0 8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6a10.4 10.4 0 0 1-.524 2.318l-.003.011a11 11 0 0 1-.244.637c-.079.186.074.394.273.362a22 22 0 0 0 .693-.125m.8-3.108a1 1 0 0 0-.287-.801C1.618 10.83 1 9.468 1 8c0-3.192 3.004-6 7-6s7 2.808 7 6-3.004 6-7 6a8 8 0 0 1-2.088-.272 1 1 0 0 0-.711.074c-.387.196-1.24.57-2.634.893a11 11 0 0 0 .398-2\"\n }));\n});\nChatDots.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nChatDots.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default ChatDots;","import React from \"react\";\nimport { Container } from 'react-bootstrap';\nimport { Archive, ChatDots } from 'react-bootstrap-icons';\nimport \"./header.css\";\n\nfunction Header({ changeView }) {\n return (\n \n

\n changeView('splash')}>\n MICA AI Chatbot\n

\n
\n \n \n
\n
\n );\n}\n\nexport default Header;\n","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar EraserFill = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-eraser-fill', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828zm.66 11.34L3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293z\"\n }));\n});\nEraserFill.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nEraserFill.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default EraserFill;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Send = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-send', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z\"\n }));\n});\nSend.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nSend.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default Send;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ArrowClockwise = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-arrow-clockwise', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466\"\n }));\n});\nArrowClockwise.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nArrowClockwise.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default ArrowClockwise;","import React, { useState, useEffect, useContext } from \"react\";\nimport { ChatContext } from \"../../contexts/Chat\";\nimport { Container } from 'react-bootstrap';\nimport { Send, ArrowClockwise, EraserFill } from 'react-bootstrap-icons';\nimport \"./footer.css\";\n\nfunction Footer({ changeView }) {\n const chat_context = useContext(ChatContext);\n const [inputPH, setInputPH] = useState(\"Ask a question...\");\n const [input, setInput] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const handleSubmit = () => {\n if (input.trim() === \"\") return;\n setLoading(true);\n chat_context.callAjax({ role: 'user', content: input }, () => setLoading(false));\n setInput(\"\"); // Clear input field\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n useEffect(() => {\n if (!loading) {\n setLoading(false);\n }\n }, [chat_context.chatContext]);\n\n return (\n \n \n setInput(e.target.value)} onKeyDown={handleKeyDown} />\n
\n \n
\n
\n );\n}\n\nexport default Footer;\n","import { Splash } from './splash.js';\n\nexport default Splash;","import React from 'react';\nimport \"./splash.css\";\n\nexport function Splash({ changeView }) {\n return (\n
changeView('home')}>\n {/* Splash content here */}\n
\n );\n}\n\n","import { useState } from 'react';\n\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return
\n * ```\n *\n * @category refs\n */\nexport default function useCallbackRef() {\n return useState(null);\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nfunction parseDuration(node, property) {\n const str = css(node, property) || '';\n const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\nexport default function transitionEndListener(element, handler) {\n const duration = parseDuration(element, 'transitionDuration');\n const delay = parseDuration(element, 'transitionDelay');\n const remove = transitionEnd(element, e => {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n return componentOrElement != null ? componentOrElement : null;\n}","\"use client\";\n\nimport React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n addEndListener,\n children,\n childRef,\n ...props\n}, ref) => {\n const nodeRef = useRef(null);\n const mergedRef = useMergedRefs(nodeRef, childRef);\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n const normalize = callback => param => {\n if (callback && nodeRef.current) {\n callback(nodeRef.current, param);\n }\n };\n\n /* eslint-disable react-hooks/exhaustive-deps */\n const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n const handleExit = useCallback(normalize(onExit), [onExit]);\n const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n const handleExited = useCallback(normalize(onExited), [onExited]);\n const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n return /*#__PURE__*/_jsx(Transition, {\n ref: ref,\n ...props,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n children: typeof children === 'function' ? (status, innerProps) =>\n // TODO: Types for RTG missing innerProps, so need to cast.\n children(status, {\n ...innerProps,\n ref: attachRef\n }) : /*#__PURE__*/React.cloneElement(children, {\n ref: attachRef\n })\n });\n});\nexport default TransitionWrapper;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst fadeStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n className,\n children,\n transitionClasses = {},\n onEnter,\n ...rest\n}, ref) => {\n const props = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n ...rest\n };\n const handleEnter = useCallback((node, isAppearing) => {\n triggerBrowserReflow(node);\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n }, [onEnter]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n onEnter: handleEnter,\n childRef: children.ref,\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames('fade', className, children.props.className, fadeStyles[status], transitionClasses[status])\n })\n });\n});\nFade.displayName = 'Fade';\nexport default Fade;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","\"use client\";\n\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from '@restart/ui/Overlay';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useOverlayOffset from './useOverlayOffset';\nimport Fade from './Fade';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction wrapRefs(props, arrowProps) {\n const {\n ref\n } = props;\n const {\n ref: aRef\n } = arrowProps;\n props.ref = ref.__wrapped || (ref.__wrapped = r => ref(safeFindDOMNode(r)));\n arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = r => aRef(safeFindDOMNode(r)));\n}\nconst Overlay = /*#__PURE__*/React.forwardRef(({\n children: overlay,\n transition = Fade,\n popperConfig = {},\n rootClose = false,\n placement = 'top',\n show: outerShow = false,\n ...outerProps\n}, outerRef) => {\n const popperRef = useRef({});\n const [firstRenderedState, setFirstRenderedState] = useState(null);\n const [ref, modifiers] = useOverlayOffset(outerProps.offset);\n const mergedRef = useMergedRefs(outerRef, ref);\n const actualTransition = transition === true ? Fade : transition || undefined;\n const handleFirstUpdate = useEventCallback(state => {\n setFirstRenderedState(state);\n popperConfig == null ? void 0 : popperConfig.onFirstUpdate == null ? void 0 : popperConfig.onFirstUpdate(state);\n });\n useIsomorphicEffect(() => {\n if (firstRenderedState && outerProps.target) {\n // Must wait for target element to resolve before updating popper.\n popperRef.current.scheduleUpdate == null ? void 0 : popperRef.current.scheduleUpdate();\n }\n }, [firstRenderedState, outerProps.target]);\n useEffect(() => {\n if (!outerShow) {\n setFirstRenderedState(null);\n }\n }, [outerShow]);\n return /*#__PURE__*/_jsx(BaseOverlay, {\n ...outerProps,\n ref: mergedRef,\n popperConfig: {\n ...popperConfig,\n modifiers: modifiers.concat(popperConfig.modifiers || []),\n onFirstUpdate: handleFirstUpdate\n },\n transition: actualTransition,\n rootClose: rootClose,\n placement: placement,\n show: outerShow,\n children: (overlayProps, {\n arrowProps,\n popper: popperObj,\n show\n }) => {\n var _popperObj$state, _popperObj$state$modi;\n wrapRefs(overlayProps, arrowProps);\n // Need to get placement from popper object, handling case when overlay is flipped using 'flip' prop\n const updatedPlacement = popperObj == null ? void 0 : popperObj.placement;\n const popper = Object.assign(popperRef.current, {\n state: popperObj == null ? void 0 : popperObj.state,\n scheduleUpdate: popperObj == null ? void 0 : popperObj.update,\n placement: updatedPlacement,\n outOfBoundaries: (popperObj == null ? void 0 : (_popperObj$state = popperObj.state) == null ? void 0 : (_popperObj$state$modi = _popperObj$state.modifiersData.hide) == null ? void 0 : _popperObj$state$modi.isReferenceHidden) || false,\n strategy: popperConfig.strategy\n });\n const hasDoneInitialMeasure = !!firstRenderedState;\n if (typeof overlay === 'function') return overlay({\n ...overlayProps,\n placement: updatedPlacement,\n show,\n ...(!transition && show && {\n className: 'show'\n }),\n popper,\n arrowProps,\n hasDoneInitialMeasure\n });\n return /*#__PURE__*/React.cloneElement(overlay, {\n ...overlayProps,\n placement: updatedPlacement,\n arrowProps,\n popper,\n hasDoneInitialMeasure,\n className: classNames(overlay.props.className, !transition && show && 'show'),\n style: {\n ...overlay.props.style,\n ...overlayProps.style\n }\n });\n }\n });\n});\nOverlay.displayName = 'Overlay';\nexport default Overlay;","\"use client\";\n\nimport { useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Popover from './Popover';\nimport Tooltip from './Tooltip';\n\n// This is meant for internal use.\n// This applies a custom offset to the overlay if it's a popover or tooltip.\nexport default function useOverlayOffset(customOffset) {\n const overlayRef = useRef(null);\n const popoverClass = useBootstrapPrefix(undefined, 'popover');\n const tooltipClass = useBootstrapPrefix(undefined, 'tooltip');\n const offset = useMemo(() => ({\n name: 'offset',\n options: {\n offset: () => {\n if (customOffset) {\n return customOffset;\n }\n if (overlayRef.current) {\n if (hasClass(overlayRef.current, popoverClass)) {\n return Popover.POPPER_OFFSET;\n }\n if (hasClass(overlayRef.current, tooltipClass)) {\n return Tooltip.TOOLTIP_OFFSET;\n }\n }\n return [0, 0];\n }\n }\n }), [customOffset, popoverClass, tooltipClass]);\n return [overlayRef, [offset]];\n}","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code);\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n while (++index < events.length) {\n const token = events[index][1];\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n events.splice(index + 1, token.type === \"labelImage\" ? 4 : 2);\n token.type = \"data\";\n index++;\n }\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const label = {\n type: \"label\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n };\n const text = {\n type: \"labelText\",\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = Object.assign({}, events[open][1].end);\n const end = Object.assign({}, events[index][1].start);\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: Object.assign({}, events[open][1].end)\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: Object.assign({}, events[index][1].start),\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n };\n events[open][1].end = Object.assign({}, openingSequence.start);\n events[index][1].start = Object.assign({}, closingSequence.end);\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlpha, asciiAlphanumeric, markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar XCircleFill = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-x-circle-fill', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z\"\n }));\n});\nXCircleFill.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nXCircleFill.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default XCircleFill;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsUpFill = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-up-fill', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.956 1.745C7.021.81 7.908.087 8.864.325l.261.066c.463.116.874.456 1.012.965.22.816.533 2.511.062 4.51a10 10 0 0 1 .443-.051c.713-.065 1.669-.072 2.516.21.518.173.994.681 1.2 1.273.184.532.16 1.162-.234 1.733q.086.18.138.363c.077.27.113.567.113.856s-.036.586-.113.856c-.039.135-.09.273-.16.404.169.387.107.819-.003 1.148a3.2 3.2 0 0 1-.488.901c.054.152.076.312.076.465 0 .305-.089.625-.253.912C13.1 15.522 12.437 16 11.5 16H8c-.605 0-1.07-.081-1.466-.218a4.8 4.8 0 0 1-.97-.484l-.048-.03c-.504-.307-.999-.609-2.068-.722C2.682 14.464 2 13.846 2 13V9c0-.85.685-1.432 1.357-1.615.849-.232 1.574-.787 2.132-1.41.56-.627.914-1.28 1.039-1.639.199-.575.356-1.539.428-2.59z\"\n }));\n});\nHandThumbsUpFill.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsUpFill.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsUpFill;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsUp = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-up', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.864.046C7.908-.193 7.02.53 6.956 1.466c-.072 1.051-.23 2.016-.428 2.59-.125.36-.479 1.013-1.04 1.639-.557.623-1.282 1.178-2.131 1.41C2.685 7.288 2 7.87 2 8.72v4.001c0 .845.682 1.464 1.448 1.545 1.07.114 1.564.415 2.068.723l.048.03c.272.165.578.348.97.484.397.136.861.217 1.466.217h3.5c.937 0 1.599-.477 1.934-1.064a1.86 1.86 0 0 0 .254-.912c0-.152-.023-.312-.077-.464.201-.263.38-.578.488-.901.11-.33.172-.762.004-1.149.069-.13.12-.269.159-.403.077-.27.113-.568.113-.857 0-.288-.036-.585-.113-.856a2 2 0 0 0-.138-.362 1.9 1.9 0 0 0 .234-1.734c-.206-.592-.682-1.1-1.2-1.272-.847-.282-1.803-.276-2.516-.211a10 10 0 0 0-.443.05 9.4 9.4 0 0 0-.062-4.509A1.38 1.38 0 0 0 9.125.111zM11.5 14.721H8c-.51 0-.863-.069-1.14-.164-.281-.097-.506-.228-.776-.393l-.04-.024c-.555-.339-1.198-.731-2.49-.868-.333-.036-.554-.29-.554-.55V8.72c0-.254.226-.543.62-.65 1.095-.3 1.977-.996 2.614-1.708.635-.71 1.064-1.475 1.238-1.978.243-.7.407-1.768.482-2.85.025-.362.36-.594.667-.518l.262.066c.16.04.258.143.288.255a8.34 8.34 0 0 1-.145 4.725.5.5 0 0 0 .595.644l.003-.001.014-.003.058-.014a9 9 0 0 1 1.036-.157c.663-.06 1.457-.054 2.11.164.175.058.45.3.57.65.107.308.087.67-.266 1.022l-.353.353.353.354c.043.043.105.141.154.315.048.167.075.37.075.581 0 .212-.027.414-.075.582-.05.174-.111.272-.154.315l-.353.353.353.354c.047.047.109.177.005.488a2.2 2.2 0 0 1-.505.805l-.353.353.353.354c.006.005.041.05.041.17a.9.9 0 0 1-.121.416c-.165.288-.503.56-1.066.56z\"\n }));\n});\nHandThumbsUp.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsUp.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsUp;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsDownFill = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-down-fill', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.956 14.534c.065.936.952 1.659 1.908 1.42l.261-.065a1.38 1.38 0 0 0 1.012-.965c.22-.816.533-2.512.062-4.51q.205.03.443.051c.713.065 1.669.071 2.516-.211.518-.173.994-.68 1.2-1.272a1.9 1.9 0 0 0-.234-1.734c.058-.118.103-.242.138-.362.077-.27.113-.568.113-.856 0-.29-.036-.586-.113-.857a2 2 0 0 0-.16-.403c.169-.387.107-.82-.003-1.149a3.2 3.2 0 0 0-.488-.9c.054-.153.076-.313.076-.465a1.86 1.86 0 0 0-.253-.912C13.1.757 12.437.28 11.5.28H8c-.605 0-1.07.08-1.466.217a4.8 4.8 0 0 0-.97.485l-.048.029c-.504.308-.999.61-2.068.723C2.682 1.815 2 2.434 2 3.279v4c0 .851.685 1.433 1.357 1.616.849.232 1.574.787 2.132 1.41.56.626.914 1.28 1.039 1.638.199.575.356 1.54.428 2.591\"\n }));\n});\nHandThumbsDownFill.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsDownFill.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsDownFill;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsDown = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-down', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.864 15.674c-.956.24-1.843-.484-1.908-1.42-.072-1.05-.23-2.015-.428-2.59-.125-.36-.479-1.012-1.04-1.638-.557-.624-1.282-1.179-2.131-1.41C2.685 8.432 2 7.85 2 7V3c0-.845.682-1.464 1.448-1.546 1.07-.113 1.564-.415 2.068-.723l.048-.029c.272-.166.578-.349.97-.484C6.931.08 7.395 0 8 0h3.5c.937 0 1.599.478 1.934 1.064.164.287.254.607.254.913 0 .152-.023.312-.077.464.201.262.38.577.488.9.11.33.172.762.004 1.15.069.13.12.268.159.403.077.27.113.567.113.856s-.036.586-.113.856c-.035.12-.08.244-.138.363.394.571.418 1.2.234 1.733-.206.592-.682 1.1-1.2 1.272-.847.283-1.803.276-2.516.211a10 10 0 0 1-.443-.05 9.36 9.36 0 0 1-.062 4.51c-.138.508-.55.848-1.012.964zM11.5 1H8c-.51 0-.863.068-1.14.163-.281.097-.506.229-.776.393l-.04.025c-.555.338-1.198.73-2.49.868-.333.035-.554.29-.554.55V7c0 .255.226.543.62.65 1.095.3 1.977.997 2.614 1.709.635.71 1.064 1.475 1.238 1.977.243.7.407 1.768.482 2.85.025.362.36.595.667.518l.262-.065c.16-.04.258-.144.288-.255a8.34 8.34 0 0 0-.145-4.726.5.5 0 0 1 .595-.643h.003l.014.004.058.013a9 9 0 0 0 1.036.157c.663.06 1.457.054 2.11-.163.175-.059.45-.301.57-.651.107-.308.087-.67-.266-1.021L12.793 7l.353-.354c.043-.042.105-.14.154-.315.048-.167.075-.37.075-.581s-.027-.414-.075-.581c-.05-.174-.111-.273-.154-.315l-.353-.354.353-.354c.047-.047.109-.176.005-.488a2.2 2.2 0 0 0-.505-.804l-.353-.354.353-.354c.006-.005.041-.05.041-.17a.9.9 0 0 0-.121-.415C12.4 1.272 12.063 1 11.5 1\"\n }));\n});\nHandThumbsDown.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsDown.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsDown;","import React, { useContext, useRef, useEffect } from \"react\";\nimport { Overlay, Popover } from 'react-bootstrap';\nimport ReactMarkdown from \"react-markdown\";\nimport { HandThumbsUp, HandThumbsDown, HandThumbsUpFill, HandThumbsDownFill, XCircleFill } from 'react-bootstrap-icons';\nimport { ChatContext } from \"../../contexts/Chat\";\nimport \"./messages.css\";\n\nexport const Messages = () => {\n const chat_context = useContext(ChatContext);\n const newQaRef = useRef(null);\n\n const handleClick = (vote, index) => {\n chat_context.updateVote(index, vote);\n };\n\n const handleDelete = (index) => {\n chat_context.deleteInteraction(index);\n };\n\n const getVotesElement = () => {\n if (newQaRef.current) {\n return newQaRef.current.querySelector('.votes');\n }\n return null;\n };\n\n const popoverOverlay = (\n \n \n Please Rate The Response\n \n The feedback helps us tune our support bot.\n \n \n \n );\n\n useEffect(() => {\n if (newQaRef.current) {\n newQaRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }, [chat_context.chatContext]);\n\n return (\n
\n {\n chat_context && chat_context.chatContext && chat_context.chatContext.length > 0\n ? (\n chat_context.chatContext.map((message, index) => (\n \n
\n
\n {message.user_content}\n handleDelete(index)} />\n
\n {message.assistant_content && (\n
\n {message.assistant_content}\n
\n
\n
Input Tokens: {message.input_tokens}
\n
Output Tokens: {message.output_tokens}
\n
\n
\n {chat_context.showRatingPO ? popoverOverlay : \"\"}\n
{ handleClick(1, index) }}>\n {message.rating === 1 ? () : ()}\n
\n
{ handleClick(0, index) }}>\n {message.rating === 0 ? () : ()}\n
\n
\n
\n
\n )}\n
\n {index < chat_context.chatContext.length - 1 &&
}\n
\n ))\n )\n : (

Hi, I'm Mica, an AI trained to help with alcohol choices. Let's explore if you'd like to change your health habits and how I can assist. To start, can you share what you enjoy about drinking?

)\n }\n
\n );\n};\n\nexport default Messages;\n","import { Home } from './home.js';\n\nexport default Home;","import React from \"react\";\nimport { Container } from 'react-bootstrap';\nimport { Messages } from \"../../components/messages/messages\";\n \nexport function Home(){\n return (\n \n \n \n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n as,\n bsPrefix,\n className,\n ...props\n}) {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const spans = [];\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n return [{\n ...props,\n className: classNames(className, ...spans, ...classes)\n }, {\n as,\n bsPrefix,\n spans\n }];\n}\nconst Col = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n const [{\n className,\n ...colProps\n }, {\n as: Component = 'div',\n bsPrefix,\n spans\n }] = useCol(props);\n return /*#__PURE__*/_jsx(Component, {\n ...colProps,\n ref: ref,\n className: classNames(className, !spans.length && bsPrefix)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Trash = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-trash', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z\"\n }));\n});\nTrash.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nTrash.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default Trash;","\nexport function formatTimestamp(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear().toString().slice(-2);\n const month = `0${date.getMonth() + 1}`.slice(-2);\n const day = `0${date.getDate()}`.slice(-2);\n const hours = `0${date.getHours()}`.slice(-2);\n const minutes = `0${date.getMinutes()}`.slice(-2);\n return `${month}/${day}/${year} ${hours}:${minutes}`;\n}\n\nexport function truncateString(str, limit) {\n \n if (str.length <= limit) {\n return str;\n }\n const subString = str.substring(0, limit - 1);\n return `${subString.substring(0, subString.lastIndexOf(' '))}...`;\n}\n","import { History } from './history.js';\n\nexport default History;","import React, { useState, useContext, useEffect } from \"react\";\nimport { Container, Row, Col } from 'react-bootstrap';\nimport { Trash } from 'react-bootstrap-icons';\n\nimport { confirmAlert } from 'react-confirm-alert';\nimport 'react-confirm-alert/src/react-confirm-alert.css';\n\nimport { ChatContext } from \"../../contexts/Chat\";\n\nimport { getAllSessions, deleteSession, deleteAllData } from \"../../components/database/dexie\";\nimport { formatTimestamp, truncateString } from \"../../components/utils/utils\";\n\nexport function History({ changeView }) {\n const [sessions, setSessions] = useState([]);\n const chat_context = useContext(ChatContext);\n\n useEffect(() => {\n getAllSessions().then((sessions) => {\n setSessions(sessions.sort((a, b) => b.timestamp - a.timestamp)); // Sort by timestamp in reverse chronological order\n });\n }, []);\n\n const handleDelete = async (sessionId) => {\n await deleteSession(sessionId);\n const updatedSessions = sessions.filter(session => session.session_id !== sessionId);\n setSessions(updatedSessions);\n }\n\n const handleDeleteAll = async () => {\n confirmAlert({\n title: 'Confirm deletion',\n message: 'Are you sure you want to delete all chat history?',\n buttons: [\n {\n label: 'Yes',\n onClick: async () => {\n await deleteAllData();\n setSessions([]);\n chat_context.clearMessages();\n }\n },\n {\n label: 'No',\n onClick: () => { }\n }\n ]\n });\n }\n\n const handleDisplaySession = (sessionId) => {\n const selectedSession = sessions.find(session => session.session_id === sessionId);\n chat_context.replaceSession(selectedSession);\n changeView(\"home\");\n }\n\n const displayChats = (sessions) => {\n return sessions.map((session, index) => {\n const firstQuery = session.queries.length > 0 ? session.queries[0].user_content : \"\";\n return (\n \n
{formatTimestamp(session.timestamp)}\n { handleDisplaySession(session.session_id) }}>{truncateString(firstQuery, 38)}\n { handleDelete(session.session_id) }}>\n \n );\n });\n }\n\n return (\n \n
\n \n
Date\n Starting Query\n \n \n {displayChats(sessions)}\n \n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport Header from './components/header/header';\nimport Footer from './components/footer/footer';\nimport Splash from './views/Splash';\nimport Home from './views/Home';\nimport History from './views/History';\nimport './App.css';\nimport './assets/styles/global.css';\n\nfunction App() {\n const [currentView, setCurrentView] = useState('splash');\n\n const changeView = (viewName) => {\n setCurrentView(viewName);\n };\n\n let ViewComponent;\n switch (currentView) {\n case 'home':\n ViewComponent = ;\n break;\n case 'history':\n ViewComponent = ;\n break;\n case 'splash':\n default:\n ViewComponent = ;\n break;\n }\n\n return (\n
\n {currentView !== 'splash' && (\n <>\n
\n
\n {ViewComponent}\n
\n
\n \n )}\n {currentView === 'splash' && ViewComponent}\n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport { ChatContextProvider } from './contexts/Chat';\nimport App from './App';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('chatbot_ui_container'));\nroot.render(\n \n \n \n \n \n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n\nwindow.REDCap_Chatbot = App;\n"],"names":["module","exports","s","e","t","Object","setPrototypeOf","__proto__","Array","n","prototype","hasOwnProperty","call","w","assign","r","arguments","length","i","apply","this","o","slice","concat","f","globalThis","self","window","global","_","keys","x","isArray","a","forEach","Promise","c","getPrototypeOf","m","Reflect","ownKeys","l","u","defineProperty","get","set","configurable","value","writable","from","create","extend","bind","h","getOwnPropertyDescriptor","d","b","p","y","Error","v","setImmediate","setTimeout","k","push","indexOf","substr","P","isFrozen","isNaN","parseInt","splice","g","O","split","map","filter","E","Set","K","S","WeakMap","has","constructor","j","toString","A","C","Symbol","iterator","D","T","q","I","next","done","B","toStringTag","F","R","M","VersionChanged","DatabaseClosed","Abort","TransactionInactive","MissingAPI","N","name","message","L","join","U","failures","failedKeys","successCount","z","failuresByPos","V","reduce","W","Y","inner","Syntax","SyntaxError","Type","TypeError","Range","RangeError","$","Q","G","X","H","J","Z","onsuccess","onerror","ee","te","ne","re","then","ModifyError","DexieError","BulkError","ie","location","test","href","oe","ae","ue","resolve","crypto","subtle","digest","Uint8Array","se","ce","le","be","he","queueMicrotask","Se","fe","de","pe","ye","ve","id","ref","unhandleds","onunhandled","pgp","env","finalize","me","ge","we","_e","_listeners","_lib","_PSD","_state","_value","Oe","je","_then","Pe","Ae","xe","Fe","Ue","Ee","ke","Qe","_consoleTask","onFulfilled","onRejected","reject","psd","some","Ce","Ke","run","$e","De","Te","We","catch","finally","timeout","Timeout","clearTimeout","Ye","all","ze","race","PSD","totalEchoes","newPSD","Ne","usePSD","scheduler","rejectionMapper","follow","allSettled","status","reason","any","AggregateError","qe","awaits","echoes","Ie","Be","Re","Me","parent","PromiseProp","Le","Xe","Ve","pop","Ge","enqueueNativeMicroTask","He","String","fromCharCode","Je","Ze","et","tt","nt","rt","it","ot","type","lower","lowerOpen","upper","upperOpen","at","ut","st","ct","NaN","lt","ArrayBuffer","isView","buffer","byteOffset","byteLength","ft","ht","_trans","_tx","trans","console","createTask","schema","NotFound","idbtrans","db","_novip","_promise","transless","idbdb","openComplete","letThrough","_vip","_createTransaction","_dbSchema","PR1398_maxLoop","InvalidState","isOpen","warn","close","disableAutoOpen","open","commit","_completion","dbOpenError","isBeingOpened","autoOpen","dbReadyPromise","trace","where","first","core","key","hook","reading","fire","WhereClause","equals","indexes","primKey","compound","every","keyPath","sort","_maxKey","JSON","stringify","idxByName","_deps","indexedDB","cmp","multi","toCollection","and","count","offset","limit","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","enumerable","table","getOwnPropertyNames","add","readHook","unsubscribe","defineClass","auto","mutate","values","numFailures","lastResult","update","modify","InvalidArgument","put","delete","clear","range","bulkGet","getMany","bulkAdd","allKeys","wantResults","results","bulkPut","bulkUpdate","changes","cache","Constraint","updates","changeSpecs","Number","bulkDelete","dt","subscribe","addEventType","subscribers","pt","yt","algorithm","or","justLimit","replayFilter","vt","mt","bt","isPrimKey","primaryKey","getIndexByKeyPath","index","Schema","gt","openCursor","keysOnly","dir","unique","query","wt","stop","fail","_iterate","_t","valueMapper","start","continue","xt","kt","execute","BigInt","remove","includes","replacePrefix","startsWith","substring","Ot","Pt","_read","_ctx","error","_write","_addAlgorithm","clone","raw","Math","min","sortBy","result","advance","until","last","isMatch","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","outbound","extractKey","_options","modifyChunkSize","criteria","changeSpec","isAdditionalChunk","Et","Kt","St","jt","qt","At","Tt","Ct","toUpperCase","toLowerCase","Dt","It","between","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","_min","_max","startsWithAnyOf","Bt","Rt","target","stopPropagation","preventDefault","Ft","Mt","Nt","Lt","Ut","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","shift","mode","OpenFailed","active","transaction","storeNames","durability","chromeTransactionDurability","_reject","onabort","on","oncomplete","_resolve","storagemutated","mutatedParts","ReadOnly","_root","waitFor","_waitingFor","_waitingQueue","objectStore","_spinCount","abort","_memoizedTables","Table","zt","src","Vt","Wt","Yt","only","$t","Qt","Gt","Xt","Ht","upperBound","lowerBound","bound","_pos","isPrimaryKey","getAll","getAllKeys","openKeyCursor","___id","continuePrimaryKey","objectStoreNames","tables","autoIncrement","indexNames","multiEntry","hasGetAll","navigator","userAgent","match","stack","MIN_KEY","MAX_KEY","Jt","IDBKeyRange","dbcore","Zt","_middlewares","en","Transaction","tn","nn","_cfg","version","rn","contains","$meta","hn","_storeNames","_versions","ln","dbschema","fn","an","un","change","recreate","Upgrade","cn","deleteIndex","del","contentUpgrade","deleteObjectStore","ceil","sn","populate","createObjectStore","debug","def","createIndex","_hasGetAll","WorkerGlobalScope","trim","replace","dn","pn","_parseStoresSpec","stores","storesSource","_allTables","upgrade","yn","_dbNamesDB","er","addons","dbnames","vn","databases","mn","bn","gn","to","wn","On","_n","xn","kn","up","Pn","max","En","Kn","addKey","addKeys","Sn","jn","An","Cn","Dn","Tn","exec","entries","queries","obsSet","qn","openCanceller","round","verno","autoSchema","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","deleteDatabase","NoSuchDatabase","oldVersion","pow","onversionchange","vcFired","onclose","dbReadyResolve","userAgentData","setInterval","clearInterval","onReadyBeingFired","ready","vip","_close","In","throw","Bn","Rn","level","lowLevelIndex","isVirtual","keyTail","keyLength","Fn","Mn","Nn","deleting","creating","updating","Ln","Un","_cache","zn","subscr","explicit","Vn","Wn","querier","findIndex","Yn","$n","Qn","freeze","dirty","Gn","Xn","Hn","addEventListener","size","Jn","AbortController","signal","optimisticOps","_explicit","res","req","promise","requery","find","objs","Map","unsignaledParts","Zn","Proxy","tr","Version","_whenReady","use","unuse","cancelOpen","backendDB","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","SubTransaction","PrematureCommit","InvalidTable","dependencies","complete","_IDBKeyRange","newVersion","observable","nr","rr","ir","_subscribe","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","closed","aborted","hasValue","getValue","ar","ur","cr","exists","getDatabaseNames","ignoreTransaction","async","spawn","currentTransaction","derive","props","override","Events","liveQuery","extendObservabilitySet","getByKeyPath","setByKeyPath","delByKeyPath","shallowClone","deepClone","getObjectDiff","asap","minKey","connections","errnames","semVer","maxKey","dispatchEvent","CustomEvent","detail","sr","lr","BroadcastChannel","onmessage","data","unref","postMessage","disableBfCache","persisted","Dexie","Entity","PropModSymbol","PropModification","default","RangeSet","mergeRanges","rangesOverlap","hasOwn","toStr","gOPD","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","setProperty","options","newValue","getProperty","copy","copyIsArray","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","str","style","lineno","column","updatePosition","lines","lastIndexOf","position","line","node","Position","whitespace","end","source","content","errorsList","msg","err","filename","silent","comments","rules","comment","pos","charAt","declaration","prop","val","ret","property","decl","decls","declarations","ReactPropTypesSecret","require","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_class","_temp2","_extends","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","properties","document","body","classList","getElementById","svgNS","feGaussianBlur","createElementNS","setAttribute","appendChild","svgElem","createSVGBlurReconfirm","divTarget","targetId","children","createElement","root","_client","createRoot","render","_react2","ReactConfirmAlert","createElementReconfirm","_react","_interopRequireDefault","_propTypes2","__esModule","_possibleConstructorReturn","ReferenceError","_Component","_ref","_temp","_this","instance","_classCallCheck","_len","args","_key","handleClickButton","button","onClick","handleClickOverlay","_this$props","closeOnClickOutside","onClickOutside","isClickOutside","overlay","afterClose","unmount","removeElementReconfirm","svg","parentNode","removeChild","removeSVGBlurReconfirm","keyboard","event","_this$props2","closeOnEscape","onKeypressEscape","onkeyPress","keyCodeForClose","keyCode","isKeyCodeEscape","componentDidMount","componentWillUnmount","removeEventListener","willUnmount","renderCustomUI","_this$props3","title","buttons","customUI","onClose","subClass","superClass","_inherits","_this2","_props","childrenElement","overlayClassName","className","dom","label","Component","propTypes","defaultProps","aa","ca","encodeURIComponent","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","construct","displayName","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","color","date","datetime","email","month","password","search","tel","text","time","url","week","listeners","oninput","detachEvent","attachEvent","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","animationend","animationiteration","animationstart","transitionend","animation","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","of","pf","qf","rf","random","sf","capture","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","char","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","callback","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","ei","fi","gi","hi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","contextType","state","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","compare","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onclick","autoFocus","createTextNode","Gj","Hj","Ij","Jj","Kj","WeakSet","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unstable_scheduleHydration","querySelectorAll","form","sl","usingClientEntryPoint","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","Profiler","PureComponent","StrictMode","Suspense","act","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","warning","classNames","classes","arg","appendClass","parseValue","newClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","chunkId","promises","miniCssF","Function","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","onScriptComplete","prev","onload","doneFns","head","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","DexieSymbol","_Dexie","db_cached_chats","chats","ChatContext","ChatContextProvider","apiContext","setApiContext","chatContext","setChatContext","showRatingPO","setShowRatingPO","sessionId","setSessionId","messages","setMessages","msgCount","setMsgCount","apiContextRef","chatContextRef","updateApiContext","newContext","saveChatContext","getSession","updatedQueries","updateSession","session_id","timestamp","saveNewSession","updateChatContext","shouldSave","addMessage","updatedApiContext","role","newChatContext","user_content","assistant_content","getTime","_jsx","clearMessages","newSessionId","replaceSession","session","callAjax","initial_system_context","mica_jsmo_module","getInitialSystemContext","userMessageIndex","wrappedPayload","callAI","response","assistantResponse","usage","model","updatedState","input_tokens","prompt_tokens","output_tokens","completion_tokens","input_cost","output_cost","updateMessage","updateVote","vote","rating","deleteInteraction","updatedChatContext","entry","DEFAULT_BREAKPOINTS","DEFAULT_MIN_BREAKPOINT","ThemeContext","React","prefixes","breakpoints","minBreakpoint","useBootstrapPrefix","prefix","defaultPrefix","useBootstrapBreakpoints","useBootstrapMinBreakpoint","useIsRTL","Container","bsPrefix","fluid","as","suffix","_excluded","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","Archive","rest","xmlns","viewBox","fill","Boolean","ChatDots","changeView","_jsxs","EraserFill","Send","ArrowClockwise","fillRule","chat_context","inputPH","setInputPH","setInput","loading","setLoading","handleSubmit","placeholder","onChange","onKeyDown","useCallbackRef","toFnRef","refA","refB","mergeRefs","iter","tar","dequal","foo","bar","ctor","len","tmp","RegExp","DataView","getInt8","mounted","useMounted","nextState","getBasePlacement","placement","getWindow","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","brands","item","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","right","bottom","getLayoutRect","abs","rootNode","getRootNode","isSameNode","host","getNodeName","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","acc","placements","modifierPhases","enabled","phase","_state$modifiersData$","arrowElement","elements","arrow","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","effect","_ref2","_options$element","querySelector","requires","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","strategy","styles","attributes","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","list","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","visited","modifier","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","orderModifiers","merged","existing","mergeByName","_ref$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","computeStyles","eventListeners","flip","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","EMPTY_MODIFIERS","referenceElement","popperElement","config","prevModifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","popperState","useSafeState","updateModifier","nextModifiers","optionsSupported","onceSupported","once","canUseDOM","eventName","handler","wrappedHandler","__once","onceHandler","useEventCallback","useCommittedRef","noop","getRefTarget","InitialTriggerEvents","click","mouseup","pointerup","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","isLeftClickEvent","handleInitialMouse","handleMouse","_ownerWindow$event","_ownerWindow$parent","doc","ownerWindow","currentEvent","removeInitialTriggerListener","listen","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","onRootClose","useClickOutside","handleKeyUp","isEscKey","removeKeyupListener","Context","resolveContainerRef","useWaitForDOMRef","onResolved","resolvedRef","setRef","earlyRef","nextRef","toModifierArray","mergeOptionsWithPopperConfig","enableEvents","fixed","containerPadding","popperConfig","_modifiers$eventListe","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","toModifierMap","isReactNative","product","in","inProp","onExited","mountOnEnter","unmountOnExit","hasEnteredRef","handleExited","combinedRef","useMergedRefs","useRTGTransitionProps","onEnter","onEntering","onEntered","onExit","onExiting","addEndListener","major","parts","minor","patch","getReactVersion","childRef","nodeRef","mergedRef","normalize","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","handleAddEndListener","innerProps","component","transitionProps","ImperativeTransition","exited","setExited","onTransition","isInitialRef","handleTransition","useIsomorphicEffect","stale","initial","isStale","onFinish","Overlay","outerRef","Transition","runTransition","rootElement","attachRef","attachArrowRef","container","show","usePopper","mountOverlay","useRootClose","onHide","rootClose","rootCloseDisabled","rootCloseEvent","arrowProps","RTGTransition","NoopTransition","renderTransition","appear","ReactDOM","hasClass","baseVal","PopoverHeader","PopoverBody","getOverlayDirection","isRTL","bsDirection","getInitialPopperStyles","pointerEvents","Popover","hasDoneInitialMeasure","decoratedBsPrefix","primaryPlacement","computedStyle","Header","Body","POPPER_OFFSET","Tooltip","TOOLTIP_OFFSET","_setPrototypeOf","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","_React$Component","initialStatus","isMounting","enter","appearStatus","nextCallback","prevState","_proto","updateStatus","prevProps","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","setNextCallback","_this4","doesNotHaveTimeoutOrListener","maybeNextCallback","childProps","TransitionGroupContext","psuedoElement","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","transforms","getPropertyValue","isTransform","removeProperty","cssText","emulateTransitionEnd","duration","called","handle","createEvent","initEvent","triggerEvent","transitionEnd","mult","parseFloat","parseDuration","removeEmulate","transitionEndListener","safeFindDOMNode","componentOrElement","TransitionWrapper","fadeStyles","Fade","transitionClasses","isAppearing","triggerBrowserReflow","outerShow","outerProps","popperRef","firstRenderedState","setFirstRenderedState","customOffset","overlayRef","popoverClass","tooltipClass","useOverlayOffset","actualTransition","handleFirstUpdate","BaseOverlay","overlayProps","popperObj","_popperObj$state","_popperObj$state$modi","aRef","__wrapped","wrapRefs","updatedPlacement","outOfBoundaries","hide","nameRe","nameReJsx","emptyOptions","empty","normal","space","merge","definitions","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","types","DefinedInfo","mask","super","mark","own","info","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","lang","language","loop","low","manifest","maxLength","media","method","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","pattern","ping","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","translate","typeMustMatch","useMap","wrap","writingSuggestions","align","aLink","archive","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","format","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","operator","orient","orientation","origin","path","pathLength","patternContentUnits","patternTransform","patternUnits","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","rotate","rx","ry","scale","seed","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","unicode","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","ruleId","fatal","file","actual","expected","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","thing","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","countsByName","dashes","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","computed","optional","toDash","$1","urlAttributes","icon","includeImageAlt","includeHtml","items","parameters","chunkStart","SpliceBuffer","setCursor","POSITIVE_INFINITY","deleteCount","trunc","removed","chunkedPush","pushMany","unshiftMany","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","events","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","token","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","syntaxExtension","extension","constructs","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","factorySpace","consume","tokenize","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","eof","seen","nok","disable","null","blankLine","after","partial","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","charCodeAt","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","group","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","openingSequence","closingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","tailExitIndex","headEnterIndex","resolveText","parse","extensions","combineExtensions","defaultConstructs","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","compile","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","spread","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","lastIndex","preprocess","combined","remarkParse","deserialize","serialized","deserializer","out","unpair","EMPTY","asString","shouldSkip","TYPE","serialize","json","lossy","serializer","strict","pair","toJSON","toISOString","structuredClone","normalizeUri","skip","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","subtype","contents","listItemLoose","tab","trimLines","trimLine","handlers","blockquote","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","passThrough","shallow","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","bail","trough","fns","pipeline","middlewareIndex","_len2","output","_key2","middleware","wrapped","_len3","_key3","fnExpectsCallback","_len4","_key4","middelware","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","stored","assertNonEmpty","assertPart","stem","part","CallableInstance","proto","names","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","process","assertCompiler","executor","parseTree","realDone","compileTree","compileResult","processSync","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","XCircleFill","HandThumbsUpFill","HandThumbsUp","HandThumbsDownFill","HandThumbsDown","Messages","newQaRef","handleClick","popoverOverlay","getVotesElement","scrollIntoView","behavior","block","handleDelete","ReactMarkdown","Row","sizePrefix","brkPoint","propValue","infix","Col","colProps","spans","useCol","Trash","formatTimestamp","year","getFullYear","getMonth","day","getDate","hours","getHours","minutes","getMinutes","truncateString","subString","sessions","setSessions","getAllSessions","deleteSession","updatedSessions","handleDisplaySession","selectedSession","xs","confirmAlert","deleteAllData","firstQuery","displayChats","currentView","setCurrentView","viewName","ViewComponent","Home","History","Splash","_Fragment","Footer","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","App","serviceWorker","registration","unregister","reportWebVitals","REDCap_Chatbot"],"sourceRoot":""} \ No newline at end of file diff --git a/chatbot_ui/build/static/js/main.05320a56.js b/chatbot_ui/build/static/js/main.0a989e88.js similarity index 59% rename from chatbot_ui/build/static/js/main.05320a56.js rename to chatbot_ui/build/static/js/main.0a989e88.js index 1a63ecd..efc6875 100644 --- a/chatbot_ui/build/static/js/main.05320a56.js +++ b/chatbot_ui/build/static/js/main.0a989e88.js @@ -1,3 +1,3 @@ -/*! For license information please see main.05320a56.js.LICENSE.txt */ -(()=>{var e={809:function(e,t,n){e.exports=function(){"use strict";var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)},t=function(){return(t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n.",et="String expected.",tt=[],nt="__dbnames",rt="readonly",ot="readwrite";function it(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var at={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function lt(e){return"string"!=typeof e||/\./.test(e)?function(e){return e}:function(t){return void 0===t[e]&&e in t&&delete(t=T(t))[e],t}}function ut(){throw W.Type()}function st(e,t){try{var n=ct(e),r=ct(t);if(n!==r)return"Array"===n?1:"Array"===r?-1:"binary"===n?1:"binary"===r?-1:"string"===n?1:"string"===r?-1:"Date"===n?1:"Date"!==r?NaN:-1;switch(n){case"number":case"Date":case"string":return tn+a&&o(n+p)}))}))}var i=yt(n)&&n.limit===1/0&&("function"!=typeof e||e===Ot)&&{index:n.index,range:n.range};return o(0).then((function(){if(0=o}))).length?(t.forEach((function(e){s.push((function(){var t=c,n=e._cfg.dbschema;dn(r,t,u),dn(r,n,u),c=r._dbSchema=n;var a=ln(t,n);a.add.forEach((function(e){un(u,e[0],e[1].primKey,e[1].indexes)})),a.change.forEach((function(e){if(e.recreate)throw new W.Upgrade("Not yet support for changing primary key");var t=u.objectStore(e.name);e.add.forEach((function(e){return cn(t,e)})),e.change.forEach((function(e){t.deleteIndex(e.name),cn(t,e)})),e.del.forEach((function(e){return t.deleteIndex(e)}))}));var s=e._cfg.contentUpgrade;if(s&&e._cfg.version>o){en(r,u),l._memoizedTables={};var f=S(n);a.del.forEach((function(e){f[e]=t[e]})),nn(r,[r.Transaction.prototype]),tn(r,[r.Transaction.prototype],i(f),f),l.schema=f;var d,p=L(s);return p&&qe(),a=ke.follow((function(){var e;(d=s(l))&&p&&(e=Ve.bind(null,null),d.then(e,e))})),d&&"function"==typeof d.then?ke.resolve(d):a.then((function(){return d}))}})),s.push((function(t){var n,o,i=e._cfg.dbschema;n=i,o=t,[].slice.call(o.db.objectStoreNames).forEach((function(e){return null==n[e]&&o.db.deleteObjectStore(e)})),nn(r,[r.Transaction.prototype]),tn(r,[r.Transaction.prototype],r._storeNames,r._dbSchema),l.schema=r._dbSchema})),s.push((function(t){r.idbdb.objectStoreNames.contains("$meta")&&(Math.ceil(r.idbdb.version/10)===e._cfg.version?(r.idbdb.deleteObjectStore("$meta"),delete r._dbSchema.$meta,r._storeNames=r._storeNames.filter((function(e){return"$meta"!==e}))):t.objectStore("$meta").put(e._cfg.version,"version"))}))})),function e(){return s.length?ke.resolve(s.shift()(l.idbtrans)).then(e):ke.resolve()}().then((function(){sn(c,u)}))):ke.resolve();var r,o,l,u,s,c})).catch(l)):(i(o).forEach((function(e){un(n,e,o[e].primKey,o[e].indexes)})),en(e,n),void ke.follow((function(){return e.on.populate.fire(a)})).catch(l));var r,s}))}function an(e,t){sn(e._dbSchema,t),t.db.version%10!=0||t.objectStoreNames.contains("$meta")||t.db.createObjectStore("$meta").add(Math.ceil(t.db.version/10-1),"version");var n=fn(0,e.idbdb,t);dn(e,e._dbSchema,t);for(var r=0,o=ln(n,e._dbSchema).change;rMath.pow(2,62)?0:r.oldVersion,d=r<1,e.idbdb=p.result,a&&an(e,f),on(e,r/10,f,s))}),s),p.onsuccess=Re((function(){f=null;var n,l,s,h,m,y=e.idbdb=p.result,v=g(y.objectStoreNames);if(0t.limit?n.length=t.limit:e.length===t.limit&&n.length=r.limit&&(!r.values||e.req.values)&&Gn(e.req.query.range,r.query.range)})),!1,o,i];case"count":return a=i.find((function(e){return Xn(e.req.query.range,r.query.range)})),[a,!!a,o,i]}}(n,r,"query",e),u=l[0],s=l[1],c=l[2],f=l[3];return u&&s?u.obsSet=e.obsSet:(s=o.query(e).then((function(e){var n=e.result;if(u&&(u.res=n),t){for(var r=0,o=n.length;r{"use strict";var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=function(e){return"function"===typeof Array.isArray?Array.isArray(e):"[object Array]"===n.call(e)},a=function(e){if(!e||"[object Object]"!==n.call(e))return!1;var r,o=t.call(e,"constructor"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!o&&!i)return!1;for(r in e);return"undefined"===typeof r||t.call(e,r)},l=function(e,t){r&&"__proto__"===t.name?r(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},u=function(e,n){if("__proto__"===n){if(!t.call(e,n))return;if(o)return o(e,n).value}return e[n]};e.exports=function e(){var t,n,r,o,s,c,f=arguments[0],d=1,p=arguments.length,h=!1;for("boolean"===typeof f&&(h=f,f=arguments[1]||{},d=2),(null==f||"object"!==typeof f&&"function"!==typeof f)&&(f={});d{var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,o=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,a=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,l=/^[;\s]*/,u=/^\s+|\s+$/g,s="";function c(e){return e?e.replace(u,s):s}e.exports=function(e,u){if("string"!==typeof e)throw new TypeError("First argument must be a string");if(!e)return[];u=u||{};var f=1,d=1;function p(e){var t=e.match(n);t&&(f+=t.length);var r=e.lastIndexOf("\n");d=~r?e.length-r:d+e.length}function h(){var e={line:f,column:d};return function(t){return t.position=new m(e),b(),t}}function m(e){this.start=e,this.end={line:f,column:d},this.source=u.source}m.prototype.content=e;var y=[];function g(t){var n=new Error(u.source+":"+f+":"+d+": "+t);if(n.reason=t,n.filename=u.source,n.line=f,n.column=d,n.source=e,!u.silent)throw n;y.push(n)}function v(t){var n=t.exec(e);if(n){var r=n[0];return p(r),e=e.slice(r.length),n}}function b(){v(r)}function w(e){var t;for(e=e||[];t=x();)!1!==t&&e.push(t);return e}function x(){var t=h();if("/"==e.charAt(0)&&"*"==e.charAt(1)){for(var n=2;s!=e.charAt(n)&&("*"!=e.charAt(n)||"/"!=e.charAt(n+1));)++n;if(n+=2,s===e.charAt(n-1))return g("End of comment missing");var r=e.slice(2,n-2);return d+=2,p(r),e=e.slice(n),d+=2,t({type:"comment",comment:r})}}function k(){var e=h(),n=v(o);if(n){if(x(),!v(i))return g("property missing ':'");var r=v(a),u=e({type:"declaration",property:c(n[0].replace(t,s)),value:r?c(r[0].replace(t,s)):s});return v(l),u}}return b(),function(){var e,t=[];for(w(t);e=k();)!1!==e&&(t.push(e),w(t));return t}()}},497:(e,t,n)=>{"use strict";var r=n(218);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},173:(e,t,n)=>{e.exports=n(497)()},218:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},917:(e,t,n)=>{"use strict";var r,o,i=Object.assign||function(e){for(var t=1;t{"use strict";var r=n(43),o=n(853);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code);\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n while (++index < events.length) {\n const token = events[index][1];\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n events.splice(index + 1, token.type === \"labelImage\" ? 4 : 2);\n token.type = \"data\";\n index++;\n }\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const label = {\n type: \"label\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n };\n const text = {\n type: \"labelText\",\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = Object.assign({}, events[open][1].end);\n const end = Object.assign({}, events[index][1].start);\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: Object.assign({}, events[open][1].end)\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: Object.assign({}, events[index][1].start),\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n };\n events[open][1].end = Object.assign({}, openingSequence.start);\n events[index][1].start = Object.assign({}, closingSequence.end);\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlpha, asciiAlphanumeric, markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar XCircleFill = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-x-circle-fill', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z\"\n }));\n});\nXCircleFill.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nXCircleFill.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default XCircleFill;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsUpFill = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-up-fill', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.956 1.745C7.021.81 7.908.087 8.864.325l.261.066c.463.116.874.456 1.012.965.22.816.533 2.511.062 4.51a10 10 0 0 1 .443-.051c.713-.065 1.669-.072 2.516.21.518.173.994.681 1.2 1.273.184.532.16 1.162-.234 1.733q.086.18.138.363c.077.27.113.567.113.856s-.036.586-.113.856c-.039.135-.09.273-.16.404.169.387.107.819-.003 1.148a3.2 3.2 0 0 1-.488.901c.054.152.076.312.076.465 0 .305-.089.625-.253.912C13.1 15.522 12.437 16 11.5 16H8c-.605 0-1.07-.081-1.466-.218a4.8 4.8 0 0 1-.97-.484l-.048-.03c-.504-.307-.999-.609-2.068-.722C2.682 14.464 2 13.846 2 13V9c0-.85.685-1.432 1.357-1.615.849-.232 1.574-.787 2.132-1.41.56-.627.914-1.28 1.039-1.639.199-.575.356-1.539.428-2.59z\"\n }));\n});\nHandThumbsUpFill.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsUpFill.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsUpFill;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsUp = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-up', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.864.046C7.908-.193 7.02.53 6.956 1.466c-.072 1.051-.23 2.016-.428 2.59-.125.36-.479 1.013-1.04 1.639-.557.623-1.282 1.178-2.131 1.41C2.685 7.288 2 7.87 2 8.72v4.001c0 .845.682 1.464 1.448 1.545 1.07.114 1.564.415 2.068.723l.048.03c.272.165.578.348.97.484.397.136.861.217 1.466.217h3.5c.937 0 1.599-.477 1.934-1.064a1.86 1.86 0 0 0 .254-.912c0-.152-.023-.312-.077-.464.201-.263.38-.578.488-.901.11-.33.172-.762.004-1.149.069-.13.12-.269.159-.403.077-.27.113-.568.113-.857 0-.288-.036-.585-.113-.856a2 2 0 0 0-.138-.362 1.9 1.9 0 0 0 .234-1.734c-.206-.592-.682-1.1-1.2-1.272-.847-.282-1.803-.276-2.516-.211a10 10 0 0 0-.443.05 9.4 9.4 0 0 0-.062-4.509A1.38 1.38 0 0 0 9.125.111zM11.5 14.721H8c-.51 0-.863-.069-1.14-.164-.281-.097-.506-.228-.776-.393l-.04-.024c-.555-.339-1.198-.731-2.49-.868-.333-.036-.554-.29-.554-.55V8.72c0-.254.226-.543.62-.65 1.095-.3 1.977-.996 2.614-1.708.635-.71 1.064-1.475 1.238-1.978.243-.7.407-1.768.482-2.85.025-.362.36-.594.667-.518l.262.066c.16.04.258.143.288.255a8.34 8.34 0 0 1-.145 4.725.5.5 0 0 0 .595.644l.003-.001.014-.003.058-.014a9 9 0 0 1 1.036-.157c.663-.06 1.457-.054 2.11.164.175.058.45.3.57.65.107.308.087.67-.266 1.022l-.353.353.353.354c.043.043.105.141.154.315.048.167.075.37.075.581 0 .212-.027.414-.075.582-.05.174-.111.272-.154.315l-.353.353.353.354c.047.047.109.177.005.488a2.2 2.2 0 0 1-.505.805l-.353.353.353.354c.006.005.041.05.041.17a.9.9 0 0 1-.121.416c-.165.288-.503.56-1.066.56z\"\n }));\n});\nHandThumbsUp.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsUp.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsUp;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsDownFill = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-down-fill', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.956 14.534c.065.936.952 1.659 1.908 1.42l.261-.065a1.38 1.38 0 0 0 1.012-.965c.22-.816.533-2.512.062-4.51q.205.03.443.051c.713.065 1.669.071 2.516-.211.518-.173.994-.68 1.2-1.272a1.9 1.9 0 0 0-.234-1.734c.058-.118.103-.242.138-.362.077-.27.113-.568.113-.856 0-.29-.036-.586-.113-.857a2 2 0 0 0-.16-.403c.169-.387.107-.82-.003-1.149a3.2 3.2 0 0 0-.488-.9c.054-.153.076-.313.076-.465a1.86 1.86 0 0 0-.253-.912C13.1.757 12.437.28 11.5.28H8c-.605 0-1.07.08-1.466.217a4.8 4.8 0 0 0-.97.485l-.048.029c-.504.308-.999.61-2.068.723C2.682 1.815 2 2.434 2 3.279v4c0 .851.685 1.433 1.357 1.616.849.232 1.574.787 2.132 1.41.56.626.914 1.28 1.039 1.638.199.575.356 1.54.428 2.591\"\n }));\n});\nHandThumbsDownFill.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsDownFill.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsDownFill;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HandThumbsDown = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-hand-thumbs-down', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.864 15.674c-.956.24-1.843-.484-1.908-1.42-.072-1.05-.23-2.015-.428-2.59-.125-.36-.479-1.012-1.04-1.638-.557-.624-1.282-1.179-2.131-1.41C2.685 8.432 2 7.85 2 7V3c0-.845.682-1.464 1.448-1.546 1.07-.113 1.564-.415 2.068-.723l.048-.029c.272-.166.578-.349.97-.484C6.931.08 7.395 0 8 0h3.5c.937 0 1.599.478 1.934 1.064.164.287.254.607.254.913 0 .152-.023.312-.077.464.201.262.38.577.488.9.11.33.172.762.004 1.15.069.13.12.268.159.403.077.27.113.567.113.856s-.036.586-.113.856c-.035.12-.08.244-.138.363.394.571.418 1.2.234 1.733-.206.592-.682 1.1-1.2 1.272-.847.283-1.803.276-2.516.211a10 10 0 0 1-.443-.05 9.36 9.36 0 0 1-.062 4.51c-.138.508-.55.848-1.012.964zM11.5 1H8c-.51 0-.863.068-1.14.163-.281.097-.506.229-.776.393l-.04.025c-.555.338-1.198.73-2.49.868-.333.035-.554.29-.554.55V7c0 .255.226.543.62.65 1.095.3 1.977.997 2.614 1.709.635.71 1.064 1.475 1.238 1.977.243.7.407 1.768.482 2.85.025.362.36.595.667.518l.262-.065c.16-.04.258-.144.288-.255a8.34 8.34 0 0 0-.145-4.726.5.5 0 0 1 .595-.643h.003l.014.004.058.013a9 9 0 0 0 1.036.157c.663.06 1.457.054 2.11-.163.175-.059.45-.301.57-.651.107-.308.087-.67-.266-1.021L12.793 7l.353-.354c.043-.042.105-.14.154-.315.048-.167.075-.37.075-.581s-.027-.414-.075-.581c-.05-.174-.111-.273-.154-.315l-.353-.354.353-.354c.047-.047.109-.176.005-.488a2.2 2.2 0 0 0-.505-.804l-.353-.354.353-.354c.006-.005.041-.05.041-.17a.9.9 0 0 0-.121-.415C12.4 1.272 12.063 1 11.5 1\"\n }));\n});\nHandThumbsDown.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nHandThumbsDown.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default HandThumbsDown;","import React, { useContext, useRef, useEffect } from \"react\";\nimport { Overlay, Popover } from 'react-bootstrap';\nimport ReactMarkdown from \"react-markdown\";\nimport { HandThumbsUp, HandThumbsDown, HandThumbsUpFill, HandThumbsDownFill, XCircleFill } from 'react-bootstrap-icons';\nimport { ChatContext } from \"../../contexts/Chat\";\nimport \"./messages.css\";\n\nexport const Messages = () => {\n const chat_context = useContext(ChatContext);\n const newQaRef = useRef(null);\n\n const handleClick = (vote, index) => {\n chat_context.updateVote(index, vote);\n };\n\n const handleDelete = (index) => {\n chat_context.deleteInteraction(index);\n };\n\n const getVotesElement = () => {\n if (newQaRef.current) {\n return newQaRef.current.querySelector('.votes');\n }\n return null;\n };\n\n const popoverOverlay = (\n \n \n Please Rate The Response\n \n The feedback helps us tune our support bot.\n \n \n \n );\n\n useEffect(() => {\n if (newQaRef.current) {\n newQaRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }, [chat_context.chatContext]);\n\n return (\n
\n {\n chat_context && chat_context.chatContext && chat_context.chatContext.length > 0\n ? (\n chat_context.chatContext.map((message, index) => (\n \n
\n
\n {message.user_content}\n handleDelete(index)} />\n
\n {message.assistant_content && (\n
\n {message.assistant_content}\n
\n
\n
Input Tokens: {message.input_tokens}
\n
Output Tokens: {message.output_tokens}
\n
\n
\n {chat_context.showRatingPO ? popoverOverlay : \"\"}\n
{ handleClick(1, index) }}>\n {message.rating === 1 ? () : ()}\n
\n
{ handleClick(0, index) }}>\n {message.rating === 0 ? () : ()}\n
\n
\n
\n
\n )}\n
\n {index < chat_context.chatContext.length - 1 &&
}\n
\n ))\n )\n : (

Hi, I'm Mica, an AI trained to help with alcohol choices. Let's explore if you'd like to change your health habits and how I can assist. To start, can you share what you enjoy about drinking?

)\n }\n
\n );\n};\n\nexport default Messages;\n","import { Home } from './home.js';\n\nexport default Home;","import React from \"react\";\nimport { Container } from 'react-bootstrap';\nimport { Messages } from \"../../components/messages/messages\";\n \nexport function Home(){\n return (\n \n \n \n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n as,\n bsPrefix,\n className,\n ...props\n}) {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const spans = [];\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n return [{\n ...props,\n className: classNames(className, ...spans, ...classes)\n }, {\n as,\n bsPrefix,\n spans\n }];\n}\nconst Col = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n const [{\n className,\n ...colProps\n }, {\n as: Component = 'div',\n bsPrefix,\n spans\n }] = useCol(props);\n return /*#__PURE__*/_jsx(Component, {\n ...colProps,\n ref: ref,\n className: classNames(className, !spans.length && bsPrefix)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","var _excluded = [\"color\", \"size\", \"title\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Trash = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color,\n className: ['bi', 'bi-trash', className].filter(Boolean).join(' ')\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z\"\n }));\n});\nTrash.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string,\n className: PropTypes.string\n};\nTrash.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null,\n className: ''\n};\nexport default Trash;","\nexport function formatTimestamp(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear().toString().slice(-2);\n const month = `0${date.getMonth() + 1}`.slice(-2);\n const day = `0${date.getDate()}`.slice(-2);\n const hours = `0${date.getHours()}`.slice(-2);\n const minutes = `0${date.getMinutes()}`.slice(-2);\n return `${month}/${day}/${year} ${hours}:${minutes}`;\n}\n\nexport function truncateString(str, limit) {\n \n if (str.length <= limit) {\n return str;\n }\n const subString = str.substring(0, limit - 1);\n return `${subString.substring(0, subString.lastIndexOf(' '))}...`;\n}\n","import { History } from './history.js';\n\nexport default History;","import React, { useState, useContext, useEffect } from \"react\";\nimport { Container, Row, Col } from 'react-bootstrap';\nimport { Trash } from 'react-bootstrap-icons';\n\nimport { confirmAlert } from 'react-confirm-alert';\nimport 'react-confirm-alert/src/react-confirm-alert.css';\n\nimport { ChatContext } from \"../../contexts/Chat\";\n\nimport { getAllSessions, deleteSession, deleteAllData } from \"../../components/database/dexie\";\nimport { formatTimestamp, truncateString } from \"../../components/utils/utils\";\n\nexport function History({ changeView }) {\n const [sessions, setSessions] = useState([]);\n const chat_context = useContext(ChatContext);\n\n useEffect(() => {\n getAllSessions().then((sessions) => {\n setSessions(sessions.sort((a, b) => b.timestamp - a.timestamp)); // Sort by timestamp in reverse chronological order\n });\n }, []);\n\n const handleDelete = async (sessionId) => {\n await deleteSession(sessionId);\n const updatedSessions = sessions.filter(session => session.session_id !== sessionId);\n setSessions(updatedSessions);\n }\n\n const handleDeleteAll = async () => {\n confirmAlert({\n title: 'Confirm deletion',\n message: 'Are you sure you want to delete all chat history?',\n buttons: [\n {\n label: 'Yes',\n onClick: async () => {\n await deleteAllData();\n setSessions([]);\n chat_context.clearMessages();\n }\n },\n {\n label: 'No',\n onClick: () => { }\n }\n ]\n });\n }\n\n const handleDisplaySession = (sessionId) => {\n const selectedSession = sessions.find(session => session.session_id === sessionId);\n chat_context.replaceSession(selectedSession);\n changeView(\"home\");\n }\n\n const displayChats = (sessions) => {\n return sessions.map((session, index) => {\n const firstQuery = session.queries.length > 0 ? session.queries[0].user_content : \"\";\n return (\n \n
{formatTimestamp(session.timestamp)}\n { handleDisplaySession(session.session_id) }}>{truncateString(firstQuery, 38)}\n { handleDelete(session.session_id) }}>\n \n );\n });\n }\n\n return (\n \n
\n \n
Date\n Starting Query\n \n \n {displayChats(sessions)}\n \n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport Header from './components/header/header';\nimport Footer from './components/footer/footer';\nimport Splash from './views/Splash';\nimport Home from './views/Home';\nimport History from './views/History';\nimport './App.css';\nimport './assets/styles/global.css';\n\nfunction App() {\n const [currentView, setCurrentView] = useState('splash');\n\n const changeView = (viewName) => {\n setCurrentView(viewName);\n };\n\n let ViewComponent;\n switch (currentView) {\n case 'home':\n ViewComponent = ;\n break;\n case 'history':\n ViewComponent = ;\n break;\n case 'splash':\n default:\n ViewComponent = ;\n break;\n }\n\n return (\n
\n {currentView !== 'splash' && (\n <>\n
\n
\n {ViewComponent}\n
\n
\n \n )}\n {currentView === 'splash' && ViewComponent}\n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport { ChatContextProvider } from './contexts/Chat';\nimport App from './App';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('chatbot_ui_container'));\nroot.render(\n \n \n \n \n \n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n\nwindow.REDCap_Chatbot = App;\n"],"names":["module","exports","s","e","t","Object","setPrototypeOf","__proto__","Array","n","prototype","hasOwnProperty","call","w","assign","r","arguments","length","i","apply","this","o","slice","concat","f","globalThis","self","window","global","_","keys","x","isArray","a","forEach","Promise","c","getPrototypeOf","m","Reflect","ownKeys","l","u","defineProperty","get","set","configurable","value","writable","from","create","extend","bind","h","getOwnPropertyDescriptor","d","b","p","y","Error","v","setImmediate","setTimeout","k","push","indexOf","substr","P","isFrozen","isNaN","parseInt","splice","g","O","split","map","filter","E","Set","K","S","WeakMap","has","constructor","j","toString","A","C","Symbol","iterator","D","T","q","I","next","done","B","toStringTag","F","R","M","VersionChanged","DatabaseClosed","Abort","TransactionInactive","MissingAPI","N","name","message","L","join","U","failures","failedKeys","successCount","z","failuresByPos","V","reduce","W","Y","inner","Syntax","SyntaxError","Type","TypeError","Range","RangeError","$","Q","G","X","H","J","Z","onsuccess","onerror","ee","te","ne","re","then","ModifyError","DexieError","BulkError","ie","location","test","href","oe","ae","ue","resolve","crypto","subtle","digest","Uint8Array","se","ce","le","be","he","queueMicrotask","Se","fe","de","pe","ye","ve","id","ref","unhandleds","onunhandled","pgp","env","finalize","me","ge","we","_e","_listeners","_lib","_PSD","_state","_value","Oe","je","_then","Pe","Ae","xe","Fe","Ue","Ee","ke","Qe","_consoleTask","onFulfilled","onRejected","reject","psd","some","Ce","Ke","run","$e","De","Te","We","catch","finally","timeout","Timeout","clearTimeout","Ye","all","ze","race","PSD","totalEchoes","newPSD","Ne","usePSD","scheduler","rejectionMapper","follow","allSettled","status","reason","any","AggregateError","qe","awaits","echoes","Ie","Be","Re","Me","parent","PromiseProp","Le","Xe","Ve","pop","Ge","enqueueNativeMicroTask","He","String","fromCharCode","Je","Ze","et","tt","nt","rt","it","ot","type","lower","lowerOpen","upper","upperOpen","at","ut","st","ct","NaN","lt","ArrayBuffer","isView","buffer","byteOffset","byteLength","ft","ht","_trans","_tx","trans","console","createTask","schema","NotFound","idbtrans","db","_novip","_promise","transless","idbdb","openComplete","letThrough","_vip","_createTransaction","_dbSchema","PR1398_maxLoop","InvalidState","isOpen","warn","close","disableAutoOpen","open","commit","_completion","dbOpenError","isBeingOpened","autoOpen","dbReadyPromise","trace","where","first","core","key","hook","reading","fire","WhereClause","equals","indexes","primKey","compound","every","keyPath","sort","_maxKey","JSON","stringify","idxByName","_deps","indexedDB","cmp","multi","toCollection","and","count","offset","limit","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","enumerable","table","getOwnPropertyNames","add","readHook","unsubscribe","defineClass","auto","mutate","values","numFailures","lastResult","update","modify","InvalidArgument","put","delete","clear","range","bulkGet","getMany","bulkAdd","allKeys","wantResults","results","bulkPut","bulkUpdate","changes","cache","Constraint","updates","changeSpecs","Number","bulkDelete","dt","subscribe","addEventType","subscribers","pt","yt","algorithm","or","justLimit","replayFilter","vt","mt","bt","isPrimKey","primaryKey","getIndexByKeyPath","index","Schema","gt","openCursor","keysOnly","dir","unique","query","wt","stop","fail","_iterate","_t","valueMapper","start","continue","xt","kt","execute","BigInt","remove","includes","replacePrefix","startsWith","substring","Ot","Pt","_read","_ctx","error","_write","_addAlgorithm","clone","raw","Math","min","sortBy","result","advance","until","last","isMatch","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","outbound","extractKey","_options","modifyChunkSize","criteria","changeSpec","isAdditionalChunk","Et","Kt","St","jt","qt","At","Tt","Ct","toUpperCase","toLowerCase","Dt","It","between","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","_min","_max","startsWithAnyOf","Bt","Rt","target","stopPropagation","preventDefault","Ft","Mt","Nt","Lt","Ut","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","shift","mode","OpenFailed","active","transaction","storeNames","durability","chromeTransactionDurability","_reject","onabort","on","oncomplete","_resolve","storagemutated","mutatedParts","ReadOnly","_root","waitFor","_waitingFor","_waitingQueue","objectStore","_spinCount","abort","_memoizedTables","Table","zt","src","Vt","Wt","Yt","only","$t","Qt","Gt","Xt","Ht","upperBound","lowerBound","bound","_pos","isPrimaryKey","getAll","getAllKeys","openKeyCursor","___id","continuePrimaryKey","objectStoreNames","tables","autoIncrement","indexNames","multiEntry","hasGetAll","navigator","userAgent","match","stack","MIN_KEY","MAX_KEY","Jt","IDBKeyRange","dbcore","Zt","_middlewares","en","Transaction","tn","nn","_cfg","version","rn","contains","$meta","hn","_storeNames","_versions","ln","dbschema","fn","an","un","change","recreate","Upgrade","cn","deleteIndex","del","contentUpgrade","deleteObjectStore","ceil","sn","populate","createObjectStore","debug","def","createIndex","_hasGetAll","WorkerGlobalScope","trim","replace","dn","pn","_parseStoresSpec","stores","storesSource","_allTables","upgrade","yn","_dbNamesDB","er","addons","dbnames","vn","databases","mn","bn","gn","to","wn","On","_n","xn","kn","up","Pn","max","En","Kn","addKey","addKeys","Sn","jn","An","Cn","Dn","Tn","exec","entries","queries","obsSet","qn","openCanceller","round","verno","autoSchema","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","deleteDatabase","NoSuchDatabase","oldVersion","pow","onversionchange","vcFired","onclose","dbReadyResolve","userAgentData","setInterval","clearInterval","onReadyBeingFired","ready","vip","_close","In","throw","Bn","Rn","level","lowLevelIndex","isVirtual","keyTail","keyLength","Fn","Mn","Nn","deleting","creating","updating","Ln","Un","_cache","zn","subscr","explicit","Vn","Wn","querier","findIndex","Yn","$n","Qn","freeze","dirty","Gn","Xn","Hn","addEventListener","size","Jn","AbortController","signal","optimisticOps","_explicit","res","req","promise","requery","find","objs","Map","unsignaledParts","Zn","Proxy","tr","Version","_whenReady","use","unuse","cancelOpen","backendDB","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","SubTransaction","PrematureCommit","InvalidTable","dependencies","complete","_IDBKeyRange","newVersion","observable","nr","rr","ir","_subscribe","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","closed","aborted","hasValue","getValue","ar","ur","cr","exists","getDatabaseNames","ignoreTransaction","async","spawn","currentTransaction","derive","props","override","Events","liveQuery","extendObservabilitySet","getByKeyPath","setByKeyPath","delByKeyPath","shallowClone","deepClone","getObjectDiff","asap","minKey","connections","errnames","semVer","maxKey","dispatchEvent","CustomEvent","detail","sr","lr","BroadcastChannel","onmessage","data","unref","postMessage","disableBfCache","persisted","Dexie","Entity","PropModSymbol","PropModification","default","RangeSet","mergeRanges","rangesOverlap","hasOwn","toStr","gOPD","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","setProperty","options","newValue","getProperty","copy","copyIsArray","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","str","style","lineno","column","updatePosition","lines","lastIndexOf","position","line","node","Position","whitespace","end","source","content","errorsList","msg","err","filename","silent","comments","rules","comment","pos","charAt","declaration","prop","val","ret","property","decl","decls","declarations","ReactPropTypesSecret","require","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_class","_temp2","_extends","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","properties","document","body","classList","getElementById","svgNS","feGaussianBlur","createElementNS","setAttribute","appendChild","svgElem","createSVGBlurReconfirm","divTarget","targetId","children","createElement","root","_client","createRoot","render","_react2","ReactConfirmAlert","createElementReconfirm","_react","_interopRequireDefault","_propTypes2","__esModule","_possibleConstructorReturn","ReferenceError","_Component","_ref","_temp","_this","instance","_classCallCheck","_len","args","_key","handleClickButton","button","onClick","handleClickOverlay","_this$props","closeOnClickOutside","onClickOutside","isClickOutside","overlay","afterClose","unmount","removeElementReconfirm","svg","parentNode","removeChild","removeSVGBlurReconfirm","keyboard","event","_this$props2","closeOnEscape","onKeypressEscape","onkeyPress","keyCodeForClose","keyCode","isKeyCodeEscape","componentDidMount","componentWillUnmount","removeEventListener","willUnmount","renderCustomUI","_this$props3","title","buttons","customUI","onClose","subClass","superClass","_inherits","_this2","_props","childrenElement","overlayClassName","className","dom","label","Component","propTypes","defaultProps","aa","ca","encodeURIComponent","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","construct","displayName","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","color","date","datetime","email","month","password","search","tel","text","time","url","week","listeners","oninput","detachEvent","attachEvent","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","animationend","animationiteration","animationstart","transitionend","animation","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","of","pf","qf","rf","random","sf","capture","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","char","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","callback","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","ei","fi","gi","hi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","contextType","state","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","compare","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onclick","autoFocus","createTextNode","Gj","Hj","Ij","Jj","Kj","WeakSet","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unstable_scheduleHydration","querySelectorAll","form","sl","usingClientEntryPoint","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","Profiler","PureComponent","StrictMode","Suspense","act","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","warning","classNames","classes","arg","appendClass","parseValue","newClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","chunkId","promises","miniCssF","Function","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","onScriptComplete","prev","onload","doneFns","head","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","DexieSymbol","_Dexie","db_cached_chats","chats","ChatContext","ChatContextProvider","apiContext","setApiContext","chatContext","setChatContext","showRatingPO","setShowRatingPO","sessionId","setSessionId","messages","setMessages","msgCount","setMsgCount","apiContextRef","chatContextRef","updateApiContext","newContext","saveChatContext","getSession","updatedQueries","updateSession","session_id","timestamp","saveNewSession","updateChatContext","shouldSave","addMessage","updatedApiContext","role","newChatContext","user_content","assistant_content","getTime","_jsx","clearMessages","newSessionId","filteredApiContext","entry","replaceSession","session","callAjax","initial_system_context","mica_jsmo_module","getInitialSystemContext","userMessageIndex","wrappedPayload","callAI","response","assistantResponse","usage","model","updatedState","input_tokens","prompt_tokens","output_tokens","completion_tokens","input_cost","output_cost","updateMessage","updateVote","vote","rating","deleteInteraction","updatedChatContext","DEFAULT_BREAKPOINTS","DEFAULT_MIN_BREAKPOINT","ThemeContext","React","prefixes","breakpoints","minBreakpoint","useBootstrapPrefix","prefix","defaultPrefix","useBootstrapBreakpoints","useBootstrapMinBreakpoint","useIsRTL","Container","bsPrefix","fluid","as","suffix","_excluded","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","Archive","rest","xmlns","viewBox","fill","Boolean","ChatDots","changeView","_jsxs","EraserFill","Send","ArrowClockwise","fillRule","chat_context","inputPH","setInputPH","setInput","loading","setLoading","handleSubmit","placeholder","onChange","onKeyDown","useCallbackRef","toFnRef","refA","refB","mergeRefs","iter","tar","dequal","foo","bar","ctor","len","tmp","RegExp","DataView","getInt8","mounted","useMounted","nextState","getBasePlacement","placement","getWindow","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","brands","item","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","right","bottom","getLayoutRect","abs","rootNode","getRootNode","isSameNode","host","getNodeName","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","acc","placements","modifierPhases","enabled","phase","_state$modifiersData$","arrowElement","elements","arrow","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","effect","_ref2","_options$element","querySelector","requires","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","strategy","styles","attributes","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","list","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","visited","modifier","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","orderModifiers","merged","existing","mergeByName","_ref$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","computeStyles","eventListeners","flip","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","EMPTY_MODIFIERS","referenceElement","popperElement","config","prevModifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","popperState","useSafeState","updateModifier","nextModifiers","optionsSupported","onceSupported","once","canUseDOM","eventName","handler","wrappedHandler","__once","onceHandler","useEventCallback","useCommittedRef","noop","getRefTarget","InitialTriggerEvents","click","mouseup","pointerup","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","isLeftClickEvent","handleInitialMouse","handleMouse","_ownerWindow$event","_ownerWindow$parent","doc","ownerWindow","currentEvent","removeInitialTriggerListener","listen","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","onRootClose","useClickOutside","handleKeyUp","isEscKey","removeKeyupListener","Context","resolveContainerRef","useWaitForDOMRef","onResolved","resolvedRef","setRef","earlyRef","nextRef","toModifierArray","mergeOptionsWithPopperConfig","enableEvents","fixed","containerPadding","popperConfig","_modifiers$eventListe","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","toModifierMap","isReactNative","product","in","inProp","onExited","mountOnEnter","unmountOnExit","hasEnteredRef","handleExited","combinedRef","useMergedRefs","useRTGTransitionProps","onEnter","onEntering","onEntered","onExit","onExiting","addEndListener","major","parts","minor","patch","getReactVersion","childRef","nodeRef","mergedRef","normalize","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","handleAddEndListener","innerProps","component","transitionProps","ImperativeTransition","exited","setExited","onTransition","isInitialRef","handleTransition","useIsomorphicEffect","stale","initial","isStale","onFinish","Overlay","outerRef","Transition","runTransition","rootElement","attachRef","attachArrowRef","container","show","usePopper","mountOverlay","useRootClose","onHide","rootClose","rootCloseDisabled","rootCloseEvent","arrowProps","RTGTransition","NoopTransition","renderTransition","appear","ReactDOM","hasClass","baseVal","PopoverHeader","PopoverBody","getOverlayDirection","isRTL","bsDirection","getInitialPopperStyles","pointerEvents","Popover","hasDoneInitialMeasure","decoratedBsPrefix","primaryPlacement","computedStyle","Header","Body","POPPER_OFFSET","Tooltip","TOOLTIP_OFFSET","_setPrototypeOf","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","_React$Component","initialStatus","isMounting","enter","appearStatus","nextCallback","prevState","_proto","updateStatus","prevProps","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","setNextCallback","_this4","doesNotHaveTimeoutOrListener","maybeNextCallback","childProps","TransitionGroupContext","psuedoElement","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","transforms","getPropertyValue","isTransform","removeProperty","cssText","emulateTransitionEnd","duration","called","handle","createEvent","initEvent","triggerEvent","transitionEnd","mult","parseFloat","parseDuration","removeEmulate","transitionEndListener","safeFindDOMNode","componentOrElement","TransitionWrapper","fadeStyles","Fade","transitionClasses","isAppearing","triggerBrowserReflow","outerShow","outerProps","popperRef","firstRenderedState","setFirstRenderedState","customOffset","overlayRef","popoverClass","tooltipClass","useOverlayOffset","actualTransition","handleFirstUpdate","BaseOverlay","overlayProps","popperObj","_popperObj$state","_popperObj$state$modi","aRef","__wrapped","wrapRefs","updatedPlacement","outOfBoundaries","hide","nameRe","nameReJsx","emptyOptions","empty","normal","space","merge","definitions","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","types","DefinedInfo","mask","super","mark","own","info","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","lang","language","loop","low","manifest","maxLength","media","method","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","pattern","ping","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","translate","typeMustMatch","useMap","wrap","writingSuggestions","align","aLink","archive","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","format","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","operator","orient","orientation","origin","path","pathLength","patternContentUnits","patternTransform","patternUnits","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","rotate","rx","ry","scale","seed","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","unicode","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","ruleId","fatal","file","actual","expected","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","thing","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","countsByName","dashes","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","computed","optional","toDash","$1","urlAttributes","icon","includeImageAlt","includeHtml","items","parameters","chunkStart","SpliceBuffer","setCursor","POSITIVE_INFINITY","deleteCount","trunc","removed","chunkedPush","pushMany","unshiftMany","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","events","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","token","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","syntaxExtension","extension","constructs","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","factorySpace","consume","tokenize","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","eof","seen","nok","disable","null","blankLine","after","partial","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","charCodeAt","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","group","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","openingSequence","closingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","tailExitIndex","headEnterIndex","resolveText","parse","extensions","combineExtensions","defaultConstructs","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","compile","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","spread","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","lastIndex","preprocess","combined","remarkParse","deserialize","serialized","deserializer","out","unpair","EMPTY","asString","shouldSkip","TYPE","serialize","json","lossy","serializer","strict","pair","toJSON","toISOString","structuredClone","normalizeUri","skip","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","subtype","contents","listItemLoose","tab","trimLines","trimLine","handlers","blockquote","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","passThrough","shallow","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","bail","trough","fns","pipeline","middlewareIndex","_len2","output","_key2","middleware","wrapped","_len3","_key3","fnExpectsCallback","_len4","_key4","middelware","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","stored","assertNonEmpty","assertPart","stem","part","CallableInstance","proto","names","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","process","assertCompiler","executor","parseTree","realDone","compileTree","compileResult","processSync","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","XCircleFill","HandThumbsUpFill","HandThumbsUp","HandThumbsDownFill","HandThumbsDown","Messages","newQaRef","handleClick","popoverOverlay","getVotesElement","scrollIntoView","behavior","block","handleDelete","ReactMarkdown","Row","sizePrefix","brkPoint","propValue","infix","Col","colProps","spans","useCol","Trash","formatTimestamp","year","getFullYear","getMonth","day","getDate","hours","getHours","minutes","getMinutes","truncateString","subString","sessions","setSessions","getAllSessions","deleteSession","updatedSessions","handleDisplaySession","selectedSession","xs","confirmAlert","deleteAllData","firstQuery","displayChats","currentView","setCurrentView","viewName","ViewComponent","Home","History","Splash","_Fragment","Footer","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","App","serviceWorker","registration","unregister","reportWebVitals","REDCap_Chatbot"],"sourceRoot":""} \ No newline at end of file diff --git a/chatbot_ui/src/contexts/Chat.js b/chatbot_ui/src/contexts/Chat.js index 5b02aa7..9d7ccd6 100644 --- a/chatbot_ui/src/contexts/Chat.js +++ b/chatbot_ui/src/contexts/Chat.js @@ -93,11 +93,14 @@ export const ChatContextProvider = ({ children }) => { setMsgCount(0); setMessages([]); setSessionId(newSessionId); - // Clear chatContext and apiContext without saving + + // Filter apiContext to keep only "system" roles + const filteredApiContext = apiContextRef.current.filter(entry => entry.role === "system"); chatContextRef.current = []; - apiContextRef.current = []; + apiContextRef.current = filteredApiContext; + setChatContext([]); - setApiContext([]); + setApiContext(filteredApiContext); }; const replaceSession = async (session) => { diff --git a/mica-chatbot/src/contexts/Chat.jsx b/mica-chatbot/src/contexts/Chat.jsx index 5b02aa7..9d7ccd6 100644 --- a/mica-chatbot/src/contexts/Chat.jsx +++ b/mica-chatbot/src/contexts/Chat.jsx @@ -93,11 +93,14 @@ export const ChatContextProvider = ({ children }) => { setMsgCount(0); setMessages([]); setSessionId(newSessionId); - // Clear chatContext and apiContext without saving + + // Filter apiContext to keep only "system" roles + const filteredApiContext = apiContextRef.current.filter(entry => entry.role === "system"); chatContextRef.current = []; - apiContextRef.current = []; + apiContextRef.current = filteredApiContext; + setChatContext([]); - setApiContext([]); + setApiContext(filteredApiContext); }; const replaceSession = async (session) => {